Съдържание
Днес ще научим как да използваме VLOOKUP да търсите Размито съвпадение в Excel.
При работа с по-големи масиви от данни често се опитваме да филтрираме подобни стойности. Един от тези типове съвпадения се нарича Размито съвпадение , където стойностите не са напълно еднакви, но все пак се съчетават въз основа на тяхното сходство.
И така. Нека обсъдим как можете да използвате VBA VLOOKUP функция на Excel, за да търсите Размито съвпадение .
Въведение в Fuzzy Match
A Размито съвпадение е вид частично съвпадение.
При тези видове съвпадения единият текст не съвпада напълно с другия текст, но важните части от текста съвпадат с другия текст.
В дадения пример книгата "История на Индия по време на Световната война" съдържа три важни раздела: История , Индия , и Световната война .
Затова всички книги, които съдържат един или повече от тези раздели, ще бъдат размити.
Така че размитите съвпадения са:
- История на Втората световна война
- История на Древна Гърция
- Световната война: причини и последици
- Цивилизацията на Инд: древна история
- Индия печели свобода
- Адолф Хитлер: преди и след Световната война
- Откриването на Индия
Изтегляне на работна тетрадка за практика
VLOOKUP Fuzzy Matching.xlsm3 подхода за VLOOKUP Fuzzy Match в Excel
Тук имаме набор от данни с Имена на някои книги от една книжарница, наречена.
Нашата цел днес е да използваме VLOOKUP функция на Excel за генериране на някои Размити съвпадения . Нека обсъдим 3 различни подхода.
1. Размито съвпадение на VLOOKUP с използване на заместващи символи (цялостно съвпадение на Lookup_Value)
- Най-напред ще генерираме няколко размити съвпадения, като използваме символа за заместване Звездичка (*) Но не забравяйте, че трябва да съответствате на целия lookup_value в този метод, а не отделните части на lookup_value .
Например можем да намерим книга, съдържаща текста "Втората световна война" по този начин.
Само книгите с пълния текст "Втората световна война" ще съвпадне.
Формулата е проста. Звездичка (*) символ в двата края на lookup_value текст.
Формулата ще бъде:
=VLOOKUP("*Втора световна война*",B5:B22,1,FALSE)
- Можете също така да използвате препратка към клетка вместо оригиналния текст. Амперсанд (&) за да ги обедините в един текст:
=VLOOKUP("*"&D5&"*",B5:B22,1,FALSE)
За да научите повече за VLOOKUP използване на заместващи символи, посетете тази статия .
Прочетете още: Как да извършите VLOOKUP с Wildcard в Excel (2 метода)
2. Размито съвпадение с помощта на VBA
Методът от предишния раздел изпълнява нашата цел отчасти, но не напълно.
Сега ще изведем формула, използвайки a Код VBA което ще изпълни целта ни почти напълно.
- Първоначално отворете VBA и въведете следното VBA код в нов модул:
Код :
Функция 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) ="тук" Final_Remove(9) = "там" Final_Remove(10) = "неговия" Final_Remove(11) = "нейния" Final_Remove(12) = "него" Final_Remove(13) = "може" Final_Remove(14) = "би могъл" Final_Remove(15) = "може" Final_Remove(16) = "може би" Final_Remove(17) = "ще" Final_Remove(18) = "трябва" Final_Remove(19) = "ще" Final_Remove(20) = "ще" Final_Remove(21) = "това" Final_Remove(22) = "това" Final_Remove(23) = "има"Final_Remove(24) = "има" Final_Remove(25) = "имал" Final_Remove(26) = "по време на" 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
Този код изгражда функция, наречена FUZZYMATCH .
- Сега го запишете по следния начин стъпките на Метод 3 от тази статия .
Този FUZZYMATCH функцията открива всички Размити съвпадения на Стойност за търсене директно.
Сайтът Синтаксис на този FUZZYMATCH функция е:
=FUZZYMATCH(lookup_value,lookup_range)
За да откриете Размити съвпадения на книгата "История на Индия по време на Световната война" , въведете това lookup_value в клетка ( D5 в този пример) и въведете тази формула в друга клетка:
=FUZZYMATCH(D5,B5:B22)
Виждате ли, открихме всички размити съвпадения в книгата "История на Индия по време на Световната война"
- Тук D5 е референцията на клетката на lookup_value ("История на Индия по време на Световната война").
- B5:B22 е lookup_range .
Нека разберем Размити съвпадения на друга книга, наречена "Бележник за причините за престъпността в големите градове" .
Въведете този lookup_value в клетка ( D5 в този пример) и въведете тази формула в друга клетка:
=FUZZYMATCH(D5,B5:B22)
💡 Обяснение на формулата
- Сайтът FUZZYMATCH е функцията, която вградихме в VBA . Той приема низ, наречен lookup_value и набор от клетки, наречен lookup_range и връща масив от всички Размити съвпадения на низа.
- Следователно FUZZYMATCH(D5,B5:B22) връща масив от всички Размити съвпадения на низа в клетката D5 от диапазона B5:B22 .
Прочетете още: Как да VLOOKUP частичен текст в Excel (с алтернативи)
Сходни четения
- VLOOKUP не работи (8 причини & решения)
- Функцията INDEX MATCH срещу VLOOKUP (9 примера)
- Използване на VLOOKUP с множество критерии в Excel (6 метода + алтернативи)
- Excel VLOOKUP за връщане на множество стойности вертикално
- VLOOKUP и връщане на всички съвпадения в Excel (7 начина)
3. Размито съвпадение чрез добавката Fuzzy Lookup на Excel
Microsoft Excel предоставя Добавка наречена Fuzzy Lookup. Чрез нея можете да съпоставите две таблици за Размито търсене .
- Първо изтеглете и инсталирайте Добавка от този връзка .
- След успешното му изтегляне и инсталиране ще намерите добавката Fuzzy Lookup в лентата с инструменти на Excel.
- След това подредете наборите от данни в две таблици, които искате да съпоставите.
- Тук имам две таблици, съдържащи два списъка с книги от две книжарници, наречени Книжарница Robert и Книжарница Мартин .
- След това отидете в Fuzzy Преглед на tab> щракнете върху Размито търсене инструмент в лентата с инструменти на Excel.
- Следователно ще получите Размито търсене таблица, създадена в страничния панел на работната ви книга.
В Лява маса и Дясна маса изберете имената на двете таблици.
За целите на този пример изберете Робърт и Мартин .
След това в Колони изберете имената на колоните на всяка таблица.
В Колона за мачове изберете типа на съвпадение между двете колони. Размито съвпадение, изберете По подразбиране .
- Накрая щракнете върху Отидете на . Ще получите съотношението на съвпаденията на таблиците в нова таблица.
Прочетете още: VLOOKUP за сравняване на два списъка в Excel (2 или повече начина)
Заключение
Използвайки тези методи, можете да използвате VLOOKUP функция на Excel, за да търсите Размито съвпадение. Въпреки че тези методи не са 100% ефективни, те все пак са много полезни. Имате ли някакви въпроси? Не се колебайте да ги зададете в полето за коментари. Не забравяйте да споделите, ако имате по-добри методи. Останете във връзка с ExcelWIKI .