Есть ли скрипт Google Apps для нечетких поисков? - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть список компаний в электронной таблице, который редко обновляется. Я назову это списком А.

У меня также есть постоянно обновляемый еженедельный список компаний (Список Б), в котором должны быть записи, соответствующие некоторым записям в Списке А.

Реальность такова, что данные, извлеченные из названий компаний списка B, часто противоречивы из-за различных сокращений бизнеса (например, The Company, Company Ltd., Company Accountants Limited). Иногда эти компании находятся под разными торговыми названиями или имеют разные неправильные названия.

Моей первоначальной, не очень разумной реакцией было создание таблицы псевдонимов работодателей, где первый столбец - это настоящее имя работодателя, а следующие столбцы - alises, что-то вроде этого: [https://i.stack.imgur.com/2cmYv.png]

Слева - образец таблицы, а крайний справа - столбец, в котором я использую следующий шаблон формулы массива:

=ArrayFormula(INDEX(A30:A33,MATCH(1,MMULT(--(B30:E33=H30),TRANSPOSE(COLUMN(B30:E33)^0)),0)))

Вскоре после этого я понял, что мне нужно создать новую запись для каждого варианта точного совпадения (Ltd., Ltd и Limited), поэтому я занялся нечеткими поисками. Я был действительно впечатлен нечеткими согласованными пользовательскими функциями Алана , но мои потребности сильно склоняются к использованию таблиц Google, а не VBA.

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

1 Ответ

1 голос
/ 24 февраля 2020

Комментарии были не совсем тем, что я искал, но они вдохновили меня на то, чтобы я нашел решение для бинтов.

Моя первоначальная формула массива нуждалась в точных совпадениях, но проблема заключалась в том, что просто было слишком много суффиксов и альтернативных названий компаний, поэтому я посмотрел нечеткие поиски.

Мой текущий ответ - отказаться от предложения нечеткого поиска и вместо этого сосредоточиться на редактировании исходной строки данных (то есть названий компаний) в более упрощенная подстрока. Получив несколько кодов, я придумал комбинированную пользовательскую формулу, которая реализует две строки для сценария GApps:

 var companysuffixremoval = str.toString().replace(/limited|ltd|group|holdings|plc|llp|sons|the/ig, "");

 var alphanumericalmin = str.replace(/[^A-Za-z0-9]/g,"")

Первая строка - это просто моя идея удалить популярные суффиксы компании и "the" из строки.

Во второй строке удаляются все не алфавитно-цифровые символы, а также все пробелы и точки.

Это обеспечивает «The First Company Limited». и «First Company Ltd» становится «FirstCompany», которая должна работать с возвратом тех же значений из исходной формулы массива в OP. Конечно, я также реализовал линию обрезки и очистки для любых конечных / ведущих / лишних пробелов для начальной строки, но это, вероятно, не нужно со второй строкой.

Если кто-то может придумать лучшую идею, пожалуйста, скажи. В настоящее время я просто работаю над сценарием с минимальным опытом.

...