Obsah
Dnes se naučíme používat VLOOKUP vyhledat Fuzzy Match v aplikaci Excel.
Při práci s většími soubory dat se často snažíme odfiltrovat podobné hodnoty. Jedním z těchto typů párování je tzv. Fuzzy Match , kde hodnoty nejsou přesně stejné, ale přesto jsou porovnávány na základě jejich podobnosti.
Probereme, jak můžete používat VBA VLOOKUP funkce aplikace Excel k vyhledávání Fuzzy Match .
Úvod do Fuzzy Match
A Fuzzy Match je typ částečná shoda.
V těchto typech shod se jeden text neshoduje s druhým textem v plném rozsahu. Důležité části textu se však shodují s druhým textem.
V uvedeném příkladu je kniha "Dějiny Indie za světové války" obsahuje tři důležité části: Historie , Indie a Světová válka .
Proto všechny knihy, které obsahují buď jednu, nebo více než jednu z těchto částí, budou knize rozmazaně odpovídat.
Fuzzy shody jsou tedy tyto:
- Dějiny druhé světové války
- Dějiny starověkého Řecka
- Světová válka: příčiny a důsledky
- Civilizace Indu: starověké dějiny
- Indie získává svobodu
- Adolf Hitler: před světovou válkou a po ní
- Objevení Indie
Stáhnout cvičebnici
VLOOKUP Fuzzy Matching.xlsm3 přístupy pro VLOOKUP Fuzzy Match v aplikaci Excel
Zde máme datovou sadu se znakem Jména některých knih z knihkupectví s názvem.
Naším dnešním cílem je využít VLOOKUP funkce aplikace Excel k vygenerování některých Fuzzy shody . Podívejme se na 3 různé přístupy.
1. VLOOKUP Fuzzy Match pomocí zástupných znaků (celá shoda Lookup_Value)
- Nejprve vytvoříme několik fuzzy shod pomocí zástupného znaku. Hvězdička (*) Ale nezapomeňte, že se musíte shodovat s celým symbolem. lookup_value v této metodě, nikoliv jednotlivé části lookup_value .
Můžeme například najít knihu, která obsahuje text "Druhá světová válka" tímto způsobem.
Pouze knihy s plným textem "Druhá světová válka" bude odpovídat.
Vzorec je jednoduchý. Hvězdička (*) symbol na obou koncích lookup_value text.
Vzorec bude následující:
=VLOOKUP("*Druhá světová válka*",B5:B22,1,FALSE)
- Místo původního textu můžete také použít odkaz na buňku. Použijte příkaz Ampersand (&) sloučit je do jednoho textu. Například takto:
=VLOOKUP("*"&D5&"*",B5:B22,1,FALSE)
Chcete-li se dozvědět více o VLOOKUP pomocí zástupných znaků navštivte tento článek .
Přečtěte si více: Jak provést VLOOKUP se zástupným znakem v aplikaci Excel (2 metody)
2. Fuzzy match pomocí VBA
Metoda uvedená v předchozí části částečně splňuje náš účel, ale ne zcela.
Nyní odvodíme vzorec pomocí Kód VBA který téměř zcela splní náš účel.
- Nejprve otevřete VBA a vložte následující VBA kód v novém modulu:
Kód :
Funkce 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) ="zde" Final_Remove(9) = "tam" Final_Remove(10) = "jeho" Final_Remove(11) = "její" Final_Remove(12) = "jeho" Final_Remove(13) = "může" Final_Remove(14) = "mohl" Final_Remove(15) = "může" Final_Remove(16) = "může" Final_Remove(17) = "bude" Final_Remove(18) = "měl by" Final_Remove(19) = "bude" Final_Remove(20) = "by" Final_Remove(21) = "tento" Final_Remove(22) = "tento" Final_Remove(23) = "mít"Final_Remove(24) = "má" Final_Remove(25) = "měl" Final_Remove(26) = "během" 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 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
Tento kód vytvoří funkci s názvem FUZZYMATCH .
- Nyní jej uložte takto kroky metody 3 tohoto článku .
Tento FUZZYMATCH funkce zjistí všechny Fuzzy shody o Hodnota vyhledávání přímo.
Na stránkách Syntaxe tohoto FUZZYMATCH funkce je:
=FUZZYMATCH(lookup_value,lookup_range)
Chcete-li zjistit Fuzzy shody knihy "Dějiny Indie za světové války" , zadejte toto lookup_value v buňce ( D5 v tomto příkladu) a zadejte tento vzorec do jiné buňky:
=FUZZYMATCH(D5,B5:B22)
Podívejte se, zjistili jsme všechny nejasné shody v knize. "Dějiny Indie za světové války"
- Zde D5 je odkaz na buňku lookup_value ("Dějiny Indie za světové války").
- B5:B22 je lookup_range .
Zjistěme Fuzzy shody jiné knihy s názvem "Zápisník příčin kriminality velkých měst" .
Zadejte tento lookup_value v buňce ( D5 v tomto příkladu) a zadejte tento vzorec do jiné buňky:
=FUZZYMATCH(D5,B5:B22)
💡 Vysvětlení vzorce
- Na stránkách FUZZYMATCH je funkce, kterou jsme zabudovali do VBA . Přebírá řetězec s názvem lookup_value a rozsah buněk nazvaný lookup_range a vrací pole všech Fuzzy shody řetězce.
- Proto FUZZYMATCH(D5,B5:B22) vrací pole všech Fuzzy shody řetězce v buňce D5 ze sortimentu B5:B22 .
Přečtěte si více: Jak provést VLOOKUP částečného textu v aplikaci Excel (s alternativami)
Podobná čtení
- Nefunkční VLOOKUP (8 důvodů a řešení)
- Funkce INDEX MATCH vs. VLOOKUP (9 příkladů)
- Použití VLOOKUP s více kritérii v aplikaci Excel (6 metod + alternativy)
- VLOOKUP aplikace Excel pro vertikální vrácení více hodnot
- VLOOKUP a vrácení všech shod v aplikaci Excel (7 způsobů)
3. Fuzzy shoda pomocí doplňku Fuzzy Lookup aplikace Excel
Microsoft Excel poskytuje Doplněk s názvem Fuzzy Lookup. Pomocí něj můžete porovnat dvě tabulky pro Fuzzy vyhledávání .
- Nejprve si stáhněte a nainstalujte Doplněk z tohoto odkaz .
- Po úspěšném stažení a instalaci najdete doplněk Fuzzy Lookup na panelu nástrojů aplikace Excel.
- Poté uspořádejte soubory dat do dvou tabulek, které chcete porovnat.
- Mám zde dvě tabulky obsahující dva seznamy knih ze dvou knihkupectví s názvem Knihkupectví Robert a Knihkupectví Martin .
- Poté přejděte do Fuzzy Vyhledávání tab> klikněte na Fuzzy vyhledávání na panelu nástrojů aplikace Excel.
- Proto získáte Fuzzy vyhledávání tabulku vytvořenou v postranním panelu sešitu.
V Levý stůl a Pravý stůl vyberte názvy obou tabulek.
Pro účely tohoto příkladu zvolte Robert a Martin .
Pak v Sloupce vyberte názvy sloupců jednotlivých tabulek.
V Sloupec zápasu vyberte typ shody, kterou chcete mezi oběma sloupci. Fuzzy Match, vybrat Výchozí .
- Nakonec klikněte na Přejít na . Získáte odpovídající poměr tabulek v nové tabulce.
Přečtěte si více: VLOOKUP pro porovnání dvou seznamů v aplikaci Excel (2 nebo více způsoby)
Závěr
Pomocí těchto metod můžete použít VLOOKUP funkce aplikace Excel k vyhledávání Fuzzy Match. I když tyto metody nejsou stoprocentně účinné, přesto jsou velmi užitečné. Máte nějaké otázky? Neváhejte se na ně zeptat v poli pro komentáře. Nezapomeňte se podělit, pokud máte lepší metody. Zůstaňte ve spojení s ExcelWIKI .