Kazalo
Danes se bomo naučili uporabljati VLOOKUP za iskanje Fuzzy Match v Excelu.
Pri delu z večjimi podatkovnimi nizi pogosto poskušamo izločiti podobne vrednosti. Ena od teh vrst ujemanja se imenuje Fuzzy Match , kjer vrednosti niso povsem enake, vendar se še vedno ujemajo na podlagi podobnosti.
Pogovorimo se o tem, kako lahko uporabite VBA VLOOKUP funkcija programa Excel za iskanje Fuzzy Match .
Uvod v razpršeno ujemanje
A Fuzzy Match je vrsta delno ujemanje.
Pri teh vrstah ujemanj se eno besedilo ne ujema v celoti z drugim besedilom, vendar se pomembni deli besedila ujemajo z drugim besedilom.
V danem primeru je knjiga "Zgodovina Indije med svetovno vojno" vsebuje tri pomembne dele: Zgodovina , Indija in Svetovna vojna .
Zato se bodo vse knjige, ki vsebujejo enega ali več teh razdelkov, nejasno ujemale s knjigo.
Tako so nejasna ujemanja naslednja:
- Zgodovina druge svetovne vojne
- Zgodovina antične Grčije
- Svetovna vojna: vzroki in posledice
- Civilizacija Indus: starodavna zgodovina
- Indija osvaja svobodo
- Adolf Hitler: pred in po svetovni vojni
- Odkritje Indije
Prenesi delovni zvezek za prakso
VLOOKUP Fuzzy Matching.xlsm3 pristopi za VLOOKUP Fuzzy Match v Excelu
Tu imamo nabor podatkov z Imena nekaterih knjig iz knjigarne z imenom.
Naš današnji cilj je uporabiti VLOOKUP funkcijo programa Excel, da ustvarite nekaj Fuzzy Matches . Pogovorimo se o 3 različnih pristopih.
1. VLOOKUP Fuzzy Match Using Wildcards (Celotno ujemanje vrednosti iskanja)
- Najprej bomo ustvarili nekaj nejasnih ujemanj z uporabo nadomestnega znaka Zvezdica (*) Vendar ne pozabite, da morate ujemati celoten simbol lookup_value v tej metodi in ne posameznih delov lookup_value .
Na primer, najdemo lahko knjigo, ki vsebuje besedilo "Druga svetovna vojna" na ta način.
Samo knjige s celotnim besedilom "Druga svetovna vojna" se ujemajo.
Formula je preprosta. Zvezdica (*) simbol na obeh koncih lookup_value besedilo.
Formula je naslednja:
=VLOOKUP("*Druga svetovna vojna*",B5:B22,1,FALSE)
- Namesto izvirnega besedila lahko uporabite tudi sklic na celico. Ampersand (&) da jih združite v eno besedilo. Kot na primer:
=VLOOKUP("*"&D5&"*",B5:B22,1,FALSE)
Če želite izvedeti več o VLOOKUP uporabo nadomestnih znakov, obiščite ta članek .
Preberite več: Kako izvesti VLOOKUP z nadomestnim znakom v Excelu (2 metodi)
2. Fuzzy Match z uporabo VBA
Metoda iz prejšnjega poglavja delno izpolnjuje naš namen, vendar ne v celoti.
Zdaj bomo izpeljali formulo z uporabo Koda VBA ki bo skoraj v celoti izpolnil naš namen.
- Najprej odprite VBA in vstavite naslednje VBA kodo v novem modulu:
Koda :
Funkcija 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 AsVarianta 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) ="tukaj" Final_Remove(9) = "tam" Final_Remove(10) = "njegov" Final_Remove(11) = "njen" Final_Remove(12) = "on" Final_Remove(13) = "lahko" Final_Remove(14) = "lahko" Final_Remove(15) = "morda" Final_Remove(16) = "morda" Final_Remove(17) = "bo" Final_Remove(18) = "naj" Final_Remove(19) = "bo" Final_Remove(20) = "bi" Final_Remove(21) = "to" Final_Remove(22) = "tisto" Final_Remove(23) = "imajo"Final_Remove(24) = "ima" Final_Remove(25) = "imel" Final_Remove(26) = "med" 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 Next w Dim Lookup As Variant Dim x As Integer x = rng.Rows.count ReDim Lookup(x - 1) Dim j As Variant j = 0 Dim k As Variant For Each kIn 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 Potem 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
Ta koda zgradi funkcijo z imenom FUZZYMATCH .
- Zdaj ga shranite na naslednji način korake iz metode 3 tega članka. .
Na spletni strani . FUZZYMATCH funkcija ugotovi vse Fuzzy Matches o Vrednost iskanja neposredno.
Spletna stran Sintaksa tega FUZZYMATCH je funkcija:
=FUZZYMATCH(lookup_value,lookup_range)
Če želite ugotoviti Fuzzy Matches knjige "Zgodovina Indije med svetovno vojno" , vnesite to lookup_value v celici ( D5 v tem primeru) in to formulo vnesite v drugo celico:
=FUZZYMATCH(D5,B5:B22)
Vidite, odkrili smo vsa nejasna ujemanja v knjigi. "Zgodovina Indije med svetovno vojno"
- Tukaj D5 je referenca celice lookup_value ("Zgodovina Indije med svetovno vojno").
- B5:B22 je lookup_range .
Ugotovimo Fuzzy Matches druge knjige, imenovane "Zapisnik o vzrokih za kriminal v velikih mestih" .
Vnesite to lookup_value v celici ( D5 v tem primeru) in to formulo vnesite v drugo celico:
=FUZZYMATCH(D5,B5:B22)
💡 Razlaga formule
- Spletna stran FUZZYMATCH je funkcija, ki smo jo vgradili v VBA . Za to je potreben niz, imenovan lookup_value in območje celic, imenovano lookup_range in vrne polje vseh Fuzzy Matches niza.
- Zato FUZZYMATCH(D5,B5:B22) vrne polje vseh Fuzzy Matches niza v celici D5 iz območja B5:B22 .
Preberite več: Kako VLOOKUP Delno besedilo v Excelu (z alternativami)
Podobna branja
- VLOOKUP ne deluje (8 razlogov in rešitev)
- Funkcija INDEX MATCH proti funkciji VLOOKUP (9 primerov)
- Uporaba VLOOKUP z več merili v Excelu (6 metod + alternative)
- Excel VLOOKUP za navpično vračanje več vrednosti
- VLOOKUP in vrnitev vseh ujemanj v Excelu (7 načinov)
3. Fuzzy Match z uporabo dodatka Fuzzy Lookup v programu Excel
Microsoft Excel zagotavlja Dodatek ki se imenuje Fuzzy Lookup. Z njo lahko primerjate dve tabeli za Fuzzy Lookup .
- Najprej prenesite in namestite Dodatek iz tega povezava .
- Po uspešnem prenosu in namestitvi boste našli dodatek Fuzzy Lookup v orodni vrstici Excel.
- Podatkovna niza nato razvrstite v dve tabeli, ki ju želite uskladiti.
- Tu imam dve tabeli s seznamoma knjig iz dveh knjigarn, ki se imenujeta Knjigarna Robert in . Knjigarna Martin .
- Nato pojdite v Fuzzy Iskanje zavihek> kliknite Fuzzy Lookup v orodni vrstici Excel.
- Zato boste dobili Fuzzy Lookup tabelo, ustvarjeno v stranski plošči delovnega zvezka.
V Leva miza in . Desna miza izberite imena obeh tabel.
V tem primeru izberite Robert in . Martin .
Nato v Stolpci izberite imena stolpcev vsake tabele.
V Stolpec za tekme izberite vrsto ujemanja med stolpcema. Fuzzy Match, izberite Privzeto .
- Na koncu kliknite na Go . V novi tabeli boste dobili ujemajoče se razmerje tabel.
Preberite več: VLOOKUP za primerjavo dveh seznamov v Excelu (2 ali več načinov)
Zaključek
S temi metodami lahko uporabite VLOOKUP funkcija programa Excel za iskanje Fuzzy Match. Čeprav te metode niso 100-odstotno učinkovite, so vseeno zelo uporabne. Imate kakšna vprašanja? Zastavite jih v polju za komentarje. Ne pozabite deliti, če imate boljše metode. Ostanite povezani z ExcelWIKI .