Намиране на най-близкия подобен текст

Ако направите четири грешки в думата "хляб", тогава ще получите думата "бира"!

Имаме два списъка. И в това, и в друго приблизително същите елементи, но те могат да бъдат написани малко по-различно. Задачата е да изберете за всеки елемент от първия списък най-сходния елемент от втория списък, т.е. реализирайте търсенето на най-близкия максимално подобен текст.

Големият въпрос в този случай е какво се счита за критерий за "сходство". Само броя на съвпадащите знаци? Или броя на последователните мачове? Трябва ли да е чувствителен към малки и големи букви или интервали? Различни позиции на думата във фраза? Вариантите са много и еднозначно решение няма - за всяка ситуация едното или другото ще бъде за предпочитане пред останалите.

Ако следвате принципа на Occam и не усложнявате излишно, тогава с помощта на малка макро функция във VBA можете да реализирате най-очевидната опция - търсене по максимален брой съвпадения на знаци. Не е перфектно, но работи доста надеждно в повечето ситуации:

намиране

=FuzzyLookup(text_to_lookup; search_range)

Тези. в примера, показан по-горе, в клетка B2 въведете

и копирайте формулата в цялата колона.

Моля, обърнете внимание, че нашата функция не е чувствителна към малки и големи букви и позицията на отделните букви в една дума.

Обхватът на такава функция може да бъде най-широк: от автоматично коригиране на кривите ръце на оператор, въвеждащ данни, до сравняване на списъци с различни изписвания на една и съща информация.