Spis treści
Dzisiaj nauczymy się jak używać VLOOKUP szukać Fuzzy Match w Excelu.
Podczas pracy z większymi zbiorami danych, często próbujemy odfiltrować podobne wartości. Jeden z takich typów dopasowania nazywa się Fuzzy Match , gdzie wartości nie są dokładnie takie same, ale nadal są dopasowane na podstawie ich podobieństwa.
Omówmy więc, jak można wykorzystać VBA VLOOKUP funkcja programu Excel, aby wyszukać Fuzzy Match .
Wprowadzenie do Fuzzy Match
A Fuzzy Match jest typem częściowe dopasowanie.
W tego typu dopasowaniach jeden tekst nie pasuje w pełni do drugiego tekstu, ale ważne fragmenty tekstu pasują do drugiego tekstu.
W podanym przykładzie książka "Historia Indii w czasie wojny światowej" zawiera trzy ważne sekcje: Historia , Indie oraz Wojna światowa .
Dlatego wszystkie książki, które zawierają albo jedną, albo więcej niż jedną z tych sekcji, będą rozmyte.
Zatem mecze rozmyte to:
- Historia II wojny światowej
- Historia starożytnej Grecji
- Wojna światowa: przyczyny i skutki
- Cywilizacja Indusu: Starożytna historia
- Indie wygrywają wolność
- Adolf Hitler: przed i po wojnie światowej
- Odkrycie Indii
Pobierz Zeszyt ćwiczeń
VLOOKUP Dopasowanie rozmyte.xlsm3 podejścia do VLOOKUP Fuzzy Match w Excelu
Mamy tu zestaw danych z. Nazwy niektórych książek księgarni o nazwie.
Naszym dzisiejszym celem jest wykorzystanie VLOOKUP funkcja Excela do generowania niektórych Dopasowania rozmyte Omówmy 3 różne podejścia.
1) VLOOKUP Fuzzy Match Using Wildcards (całe Lookup_Value Matching)
- Po pierwsze, wygenerujemy kilka rozmytych dopasowań przy użyciu znaku wieloznacznego Gwiazdka (*) Ale pamiętaj, że musisz dopasować cały lookup_value w tej metodzie, a nie oddzielne części lookup_value .
Na przykład, możemy znaleźć książkę zawierającą tekst "II wojna światowa" w ten sposób.
Tylko książki posiadające pełny tekst "II wojna światowa" będzie pasował.
Formuła jest prosta. Umieść Gwiazdka (*) symbol na obu końcach lookup_value tekst.
Wzór będzie brzmiał:
=VLOOKUP("*druga wojna światowa*",B5:B22,1,FALSE)
- Możesz również użyć odwołania do komórki zamiast oryginalnego tekstu. Użyj Ampersand (&) symbolu, aby połączyć je w jeden tekst. np:
=VLOOKUP("*"&D5&"*",B5:B22,1,FALSE)
Aby dowiedzieć się więcej o VLOOKUP używając symboli wieloznacznych, odwiedź ten artykuł .
Read More: Jak wykonać VLOOKUP z Wildcard w Excelu (2 metody)
2. dopasowanie rozmyte przy użyciu VBA
Metoda z poprzedniego rozdziału spełnia nasz cel częściowo, ale nie w pełni.
Teraz wyprowadzimy wzór wykorzystujący Kod VBA który spełni nasz cel prawie całkowicie.
- Na początku otwórz VBA i wstawić następujące elementy VBA kod w nowym module:
Kod :
Function FUZZYMATCH(str As String, rng As Range) str = LCase(str) Dim Remove_1(5) As Variant Remove_1(0) = "," Remove_1(1) = "." Remove_1(2) = ":" Remove_1(3) = "-" Remove_1(4) = ";" Remove_1(5) = "?" Dim Rem_Str_1 As String Rem_Str_1 = str Dim rem_count_1 As Variant For Each rem_count_1 In Remove_1 Rem_Str_1 = Replace(Rem_Str_1, rem_count_1, "") Next rem_count_1 Words = Split(Rem_Str_1) Dim i As.Variant For i = 0 To UBound(Words) If Len(Words(i)) = 1 Or Len(Words(i)) = 2 Then Words(i) = Replace(Words(i), Words(i), " bt ") End If Next i Dim Final_Remove(26) As Variant Final_Remove(0) = "the" Final_Remove(1) = "and" Final_Remove(2) = "but" Final_Remove(3) = "with" Final_Remove(4) = "into" Final_Remove(5) = "before" Final_Remove(6) = "after" Final_Remove(7) = "beyond" Final_Remove(8) =."tutaj" Final_Remove(9) = "tam" Final_Remove(10) = "jego" Final_Remove(11) = "jej" Final_Remove(12) = "go" Final_Remove(13) = "może" Final_Remove(14) = "mógłby" Final_Remove(15) = "może" Final_Remove(16) = "mógłby" Final_Remove(17) = "powinien" Final_Remove(18) = "powinien" Final_Remove(19) = "będzie" Final_Remove(20) = "byłby" Final_Remove(21) = "to" Final_Remove(22) = "że" Final_Remove(23) = "mają"Final_Remove(24) = "ma" Final_Remove(25) = "miał" Final_Remove(26) = "podczas" Dim w As Variant Dim ww As Variant For w = 0 To UBound(Words) For Each ww In Final_Remove If Words(w) = ww Then Words(w) = Replace(Words(w), Words(w), " bt ") Exit For ' End If Next ww Dim x As Integer x = rng.Rows.count ReDim Lookup(x - 1) Dim j As Variant j = 0 Dim k As Variant For Each k.In rng Lookup(j) = k j = j + 1 Next k Dim Lower As Variant ReDim Lower(UBound(Lookup)) Dim u As Variant For u = 0 To UBound(Lookup) Lower(u) = LCase(Lookup(u)) Next u Dim out As Variant ReDim out(UBound(Lookup), 0) Dim count As Integer co = 0 mark = 0 Dim m As Variant For m = 0 To UBound(Lower) Dim n As Variant For Each n In Words Dim o As Variant For o = 1 To Len(Lower(m)) If Mid(Lower(m), o,Len(n)) = n Then out(co, 0) = Lookup(m) co = co + 1 mark = mark + 1 Exit For End If Next o If mark> 0 Then Exit For End If Next n mark = 0 Next m Dim output As Variant ReDim output(co - 1, 0) Dim z As Variant For z = 0 To co - 1 output(z, 0) = out(z, 0) Next z FUZZYMATCH = output End Function.
Ten kod buduje funkcję o nazwie FUZZYMATCH .
- Teraz zapisz go w następujący sposób kroki z metody 3 tego artykułu .
Ten FUZZYMATCH funkcja znajduje wszystkie Dopasowania rozmyte z Lookup Value bezpośrednio.
Na stronie Składnia tego FUZZYMATCH funkcja to:
=FUZZYMATCH(lookup_value,lookup_range)
Aby dowiedzieć się Dopasowania rozmyte książki "Historia Indii w czasie wojny światowej" , wpisz to lookup_value w komórce ( D5 w tym przykładzie) i wprowadzić tę formułę do innej komórki:
=FUZZYMATCH(D5,B5:B22)
Widzimy, że znaleźliśmy wszystkie rozmyte dopasowania z książki "Historia Indii w czasie wojny światowej"
- Tutaj D5 jest odnośnikiem do komórki lookup_value ("Historia Indii podczas wojny światowej").
- B5:B22 to lookup_range .
Dowiedzmy się Dopasowania rozmyte innej książki o nazwie "Notatnik przyczyn przestępczości wielkich miast" .
Wpisz to lookup_value w komórce ( D5 w tym przykładzie) i wprowadzić tę formułę do innej komórki:
=FUZZYMATCH(D5,B5:B22)
💡 Objaśnienie wzoru
- Na stronie FUZZYMATCH funkcja jest funkcją, którą zbudowaliśmy w VBA Pobiera ciąg znaków o nazwie lookup_value oraz zakres komórek o nazwie lookup_range i zwraca tablicę wszystkich Dopasowania rozmyte ciągu.
- Dlatego FUZZYMATCH(D5,B5:B22) zwraca tablicę wszystkich Dopasowania rozmyte ciągu w komórce D5 z zakresu B5:B22 .
Read More: Jak VLOOKUP częściowy tekst w Excelu (z alternatywami)
Podobne lektury
- VLOOKUP nie działa (8 powodów & rozwiązania)
- INDEX MATCH vs VLOOKUP Funkcja (9 przykładów)
- Użyj VLOOKUP z wieloma kryteriami w programie Excel (6 metod + alternatywy)
- Excel VLOOKUP, aby zwrócić wiele wartości pionowo
- VLOOKUP i zwróć wszystkie dopasowania w Excelu (7 sposobów)
3. dopasowanie rozmyte przy użyciu dodatku Fuzzy Lookup w programie Excel
Microsoft Excel zapewnia Add-in Używając go, możesz dopasować dwie tabele dla Fuzzy Lookup .
- Na początku należy pobrać i zainstalować Add-in od tego link .
- Po pomyślnym pobraniu i zainstalowaniu go, znajdziesz Fuzzy Lookup Add-in twój pasek narzędzi Excela.
- Następnie ułóż zestawy danych w dwie tabele, które chcesz dopasować.
- Mam tu dwie tablice zawierające dwie listy książek z dwóch księgarni o nazwie Księgarnia Roberta oraz Księgarnia "Martin .
- Następnie należy przejść do Fuzzy Lookup tab> kliknij Fuzzy Lookup narzędzie w pasku narzędziowym programu Excel.
- W związku z tym, otrzymasz Fuzzy Lookup tabela utworzona w panelu bocznym skoroszytu.
W Lewy stół oraz Prawy stół opcji, wybierz nazwy dwóch tabel.
Na potrzeby tego przykładu wybierz Robert oraz Martin .
Następnie w Kolumny sekcji, wybierz nazwy kolumn każdej z tabel.
W Kolumna meczowa W sekcji wybierz typ dopasowania, który chcesz zastosować pomiędzy dwoma kolumnami. Dla Fuzzy Match, wybierz Domyślnie .
- Na koniec kliknij na Wejdź na stronę Otrzymasz dopasowane proporcje tabel w nowej tabeli.
Read More: VLOOKUP Aby porównać dwie listy w Excelu (2 lub więcej sposobów)
Wniosek
Korzystając z tych metod, można użyć VLOOKUP funkcja programu Excel, aby wyszukać Fuzzy Match. Chociaż te metody nie są w 100% skuteczne, to jednak są bardzo przydatne. Masz jakieś pytania? Możesz je zadać w polu komentarza. Nie zapomnij się podzielić, jeśli masz lepsze metody. Pozostań w kontakcie z ExcelWIKI .