Innehållsförteckning
Idag ska vi lära oss att använda VLOOKUP för att söka efter Fuzzy Match i Excel.
När vi arbetar med större datamängder försöker vi ofta filtrera bort liknande värden. En av dessa matchningstyper kallas Fuzzy Match , där värdena inte är exakt likadana, men de matchas ändå utifrån deras likhet.
Så. Låt oss diskutera hur du kan använda VBA VLOOKUP funktion av Excel för att söka efter Fuzzy Match .
Introduktion till Fuzzy Match
A Fuzzy Match är en typ av partiell matchning.
I dessa typer av matchningar stämmer inte en text helt och hållet överens med den andra texten, men de viktiga delarna av texten stämmer överens med den andra texten.
I det givna exemplet är boken "Indiens historia under världskriget" innehåller tre viktiga avsnitt: Historia , Indien , och Världskriget .
Därför kommer alla böcker som innehåller antingen ett eller flera av dessa avsnitt att stämma otydligt överens med boken.
De luddiga träffarna är alltså:
- Andra världskrigets historia
- Det antika Greklands historia
- Världskriget: orsaker och effekter
- Induscivilisationen: en antik historia
- Indien vinner frihet
- Adolf Hitler: före och efter världskriget
- Upptäckten av Indien
Ladda ner övningsboken
VLOOKUP Fuzzy Matching.xlsm3 metoder för VLOOKUP Fuzzy Match i Excel
Här har vi en datamängd med Namn av några böcker från en bokhandel som heter.
Vårt mål i dag är att använda VLOOKUP funktion i Excel för att generera några Fuzzy matchningar . Vi diskuterar tre olika tillvägagångssätt.
1. VLOOKUP Fuzzy Matchning med jokertecken (Hela Lookup_Value Matching)
- Först och främst ska vi generera några oklara träffar med hjälp av jokertecknet Asterisk (*) symbol. Men kom ihåg att du måste matcha hela den Lookup_value i denna metod, inte de separata delarna av den Lookup_value .
Vi kan till exempel hitta en bok som innehåller texten "Andra världskriget" på detta sätt.
Endast de böcker som har den fullständiga texten "Andra världskriget" kommer att matcha.
Formeln är enkel: Placera en Asterisk (*) symbol på båda ändarna av Lookup_value text.
Formeln kommer att vara följande:
=VLOOKUP("*andra världskriget*",B5:B22,1,FALSE)
- Du kan också använda en cellreferens i stället för den ursprungliga texten. Ampersand (&) för att sammanfoga dem till en enda text, t.ex. så här:
=VLOOKUP("*"&D5&"*",B5:B22,1,FALSE)
Om du vill veta mer om VLOOKUP använda jokertecken, se denna artikel .
Läs mer: Hur man utför VLOOKUP med jokertecken i Excel (2 metoder)
2. Fuzzy Match med hjälp av VBA
Metoden i föregående avsnitt uppfyller delvis vårt syfte, men inte fullt ut.
Nu ska vi härleda en formel med hjälp av en VBA-kod som uppfyller vårt syfte nästan helt och hållet.
- Öppna först en VBA och infoga följande VBA koden i en ny modul:
Kod :
Funktion 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 AsVariant 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) ="här" Final_Remove(9) = "där" Final_Remove(10) = "hans" Final_Remove(11) = "henne" Final_Remove(12) = "honom" Final_Remove(13) = "kan" Final_Remove(14) = "skulle kunna" Final_Remove(15) = "kan" Final_Remove(16) = "kanske" Final_Remove(17) = "ska" Final_Remove(18) = "bör" Final_Remove(19) = "kommer" Final_Remove(20) = "skulle" Final_Remove(21) = "detta" Final_Remove(22) = "det" Final_Remove(23) = "har"Final_Remove(24) = "has" Final_Remove(25) = "had" Final_Remove(26) = "during" 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 Då 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
Denna kod bygger en funktion som kallas FUZZYMATCH .
- Spara den nu på följande sätt Steg i metod 3 i denna artikel. .
Denna FUZZYMATCH funktionen tar reda på alla de Fuzzy matchningar av en Uppslagsvärde direkt.
Syntax av denna FUZZYMATCH funktionen är:
=FUZZYMATCH(lookup_value,lookup_range)
För att ta reda på Fuzzy matchningar av boken "Indiens historia under världskriget" , ange följande Lookup_value i en cell ( D5 i det här exemplet) och skriv in formeln i en annan cell:
=FUZZYMATCH(D5,B5:B22)
Vi har tagit reda på alla oklara matchningar i boken. "Indiens historia under världskriget"
- Här D5 är cellreferensen för lookup_value ("Indiens historia under världskriget").
- B5:B22 är den lookup_range .
Låt oss ta reda på Fuzzy matchningar av en annan bok som heter "En anteckningsbok om orsakerna till storstädernas brottslighet" .
Ange detta Lookup_value i en cell ( D5 i det här exemplet) och skriv in formeln i en annan cell:
=FUZZYMATCH(D5,B5:B22)
💡 Förklaring av formeln
- FUZZYMATCH är den funktion som vi byggde in i VBA Den tar en sträng som kallas Lookup_value och en rad celler som kallas lookup_range och returnerar en matris med alla de Fuzzy matchningar av strängen.
- Därför är FUZZYMATCH(D5,B5:B22) returnerar en matris med alla de Fuzzy matchningar av strängen i cellen D5 från intervallet B5:B22 .
Läs mer: Hur man gör VLOOKUP Partiell text i Excel (med alternativ)
Liknande läsningar
- VLOOKUP fungerar inte (8 orsaker & lösningar)
- INDEX MATCH och VLOOKUP-funktionen (9 exempel)
- Använd VLOOKUP med flera kriterier i Excel (6 metoder + alternativ)
- Excel VLOOKUP för att returnera flera värden vertikalt
- VLOOKUP och återge alla matchningar i Excel (7 sätt)
3. Fuzzy Match med hjälp av Fuzzy Lookup Add-in i Excel
Microsoft Excel erbjuder en Tilläggsfunktion som kallas Fuzzy Lookup. Med hjälp av den kan du matcha två tabeller för att Fuzzy Lookup .
- Ladda först ner och installera Tilläggsfunktion från denna länk .
- När du har laddat ner och installerat den hittar du tillägget Fuzzy Lookup i Excel-verktygsfältet.
- Ordna sedan datamängderna i två tabeller som du vill matcha.
- Här har jag två tabeller med två listor med böcker från två bokhandlare som heter Robert Bookshop och Martin Bookshop .
- Gå sedan till Fuzzy Sök på flik> klicka Fuzzy Lookup i Excel-verktygsfältet.
- Därför får du en Fuzzy Lookup som skapats i sidopanelen i arbetsboken.
I Vänster bord och Höger bord väljer du namnen på de två tabellerna.
I det här exemplet väljer du Robert och Martin .
Sedan i Kolumner väljer du namnen på kolumnerna i varje tabell.
I Match kolumn väljer du vilken typ av matchning du vill ha mellan de två kolumnerna. För Fuzzy Match, Välj Standard .
- Slutligen klickar du på Gå till Du kommer att få det matchande förhållandet mellan tabellerna i en ny tabell.
Läs mer: VLOOKUP för att jämföra två listor i Excel (2 eller fler sätt)
Slutsats
Med hjälp av dessa metoder kan du använda VLOOKUP funktion av Excel för att söka efter Fuzzy Match. Även om dessa metoder inte är 100 % effektiva är de ändå mycket användbara. Har du några frågor? Ställ dem gärna i kommentarsfältet. Glöm inte att dela med dig om du har bättre metoder. Håll kontakten med ExcelWIKI .