Пошук найближчого схожого тексту

Якщо в слові "хліб" зробити чотири помилки, то вийде слово "пиво"!

Маємо два списки. І в тому, і в іншому приблизно одні й самі елементи, але записані вони можуть бути трохи по-різному. Завдання - підібрати кожному елементу у першому списку максимально схожий елемент із другого списку, тобто. реалізувати пошук найближчого максимально схожого тексту.

Велике питання, в даному випадку, що вважати критерієм "схожості". Просто кількість символів, що збігаються? Чи кількість збігів, що йдуть поспіль? Чи враховувати регістр символів чи пробіли? Різні положення слів у фразі? Варіантів багато і однозначного рішення немає - для кожної ситуації той чи інший буде кращим за інших.

Якщо дотримуватись принципу Оккама і не ускладнювати без потреби, то за допомогою невеликої макрофункції на VBA можна реалізувати найочевидніший варіант - пошук за максимальною кількістю збігів символів. Він ідеальний, але більшість ситуацій працює цілком надійно:

символів

=FuzzyLookup( текст_який_шукаємо ; діапазон_пошуку )

Тобто. у наведеному вище прикладі в комірку B2 треба ввести

та скопіювати формулу на весь стовпець.

Зверніть увагу, що наша функція не чутлива до регістру та положення окремих літер у слові.

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