Jak porównać dwie kolumny i zwrócić wartość w trzecim w VBA

0

Pytanie

Muszę porównać dwie kolumny, w jednym z których jest "all_filenames", a w drugim - "part_number", użyłem wyszukaj. pionowo do wyszukiwania dopasowań, i to się udało. Jednak problem w tym, że w dziale "wszystkie nazwy plików "zawiera około 2000 danych, a w dziale" numer części " - tylko 500. Dane w dziale "numer części" mogą pokrywać się z kilkoma informacjami w części "nazwy wszystkich plików", ale problem w tym, że nie są one zgodne z określonej nazwy. Przykład: Kolumna A będzie zawierać nazwy wszystkich plików, oto co jest: XP605_Top.jpg AR131_Front.jpg 28528_765BP_Front.jpg 2543_Front.jpg. W kolumnie B, który będzie "part_number", jest on przechowywany jako: XP605.jpg AR131.jpg 28528.jpg 2543.jpg. W ten sposób, teoretycznie można by to traktować jako zbieg okoliczności, ale, ponieważ w kolumnie A brakuje kilku słów lub cyfr, to nie będzie pasować. Więc mój problem polega na tworzeniu UDF w celu rozwiązania tego problemu. Nie jestem pewien, czy jestem wystarczająco dobry na wszystko wyjaśnił. Czy ktoś może mi pomóc? Dziękuję.

Public Function WhereIs(rIn As Range, rList As Range) As String
   Dim s1 As String, r As Range
   Dim s2 As String
   WhereIs = ""
   s1 = rIn.Text

   For Each r In rList
      s2 = r.Text
      If InStr(1, s2, s1) > 0 Then
         If WhereIs = "" Then
            WhereIs = r.Address(0, 0)
         Else
            WhereIs = WhereIs & "," & r.Address(0, 0)
         End If
      End If
   Next r

   If WhereI <> "" Then WhereIs = "no match" 
      
End Function

Do tej pory jest to jedyny kod, który znalazłem i próbowałem, ale problem w tym, że nadal nie pasuje, bo myślę, że on próbuje znaleźć dokładne dopasowanie. Jestem bardzo początkujący w VBA, więc mi wciąż trudno go używać.

Potrzebuję, aby "wartość zgodności" wróciło w innej kolumny z numerem części, a jeżeli jest kilka zbiegów okoliczności, chcę, aby wszyscy byli w środku kolumny.

excel vba
2021-11-23 23:07:28
1

Najlepsza odpowiedź

0

Możesz po prostu użyć LEFT i FIND do czyszczenia kolumn danych. Jeśli twoje nazwy plików podane są w kolumnie A, to

=LEFT(A1,FIND("_",A1)-1)

Usunie wszystko, aż do pierwszego "_". Dla twojej listy części zamiennych

=LEFT(C1,LEN(C1)-4)

to uwolni cię od części nazwy ".jpg" (lub można skorzystać z WYMIANY, jak zaproponowano w komentarzach). To sprawi, że funkcję wyszukaj. pionowo bardziej szczęśliwy

2021-11-24 03:21:24

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................