Улучшен фильтр нечетких совпадений в Excel - PullRequest
0 голосов
/ 02 мая 2019

Я работаю с неким фильтром нечетких совпадений, основанным на дополнительном столбце со списком фильтров. Формула:

=IF(SUMPRODUCT(COUNTIF(A2,"*"&B$2:$B$22&"*"))>0,"Delete","Keep")

На самом деле есть две формулы, они работают по одному виду - они были созданы при экспериментах. Второй:

=IF(SUMPRODUCT(--ISNUMBER(SEARCH($B$2:$B$22,A2))),"Delete","Keep")
  • Столбец A содержит данные для фильтрации,
  • столбец B (от B2 до B22) содержит список фильтров,
  • в столбце C я пишу "keep", если нет частичного совпадения значения из столбца A со значениями из столбца B, и пишу "delete", если есть какое-либо частичное совпадение.

Q : как записать вместо «удаления» совпадающее значение из столбца B? Я не могу получить эту работу в обеих формулах.

Обновление После перевода формулы @ Джерри

=IFERROR(INDEX($B$2:$B$22,MATCH(9^99,SEARCH($B$2:$B$52,A2))),"Keep")

до

=WENNFEHLER(INDEX($B$2:$B$22;VERGLEICH(9^99;SUCHEN($B$2:$B$52;A2)));"Keep")

с этим инструментом перевода (работал в других случаях без ошибок), я получаю следующий результат:

enter image description here

что другое, чем результат Джерри.

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Если может быть только 1 совпадение, тогда вы можете использовать INDEX и MATCH в формуле массива (используйте Ctrl + Shift + Enter и вы увидите фигурные скобки вокруг формулы в строке формул, если все сделали правильно):

=IFERROR(INDEX($B$2:$B$22,MATCH(9^99,SEARCH($B$2:$B$22,A2))),"Keep")

enter image description here

Если их большеодин матч, вы получите последний матч по формуле выше.Если вы хотите в этом случае вернуть первую формулу, вам нужно будет использовать --ISNUMBER вокруг функции поиска, использовать 1 для первого параметра MATCH и использовать точное совпадение (то есть использовать 0 / FALSE для3-й параметр MATCH.

Конечно, вместо этого вы можете использовать COUNTIF(A2,"*"&B$2:$B$22&"*") для внутренней части формулы вместо --ISNUMBER(...).

0 голосов
/ 03 мая 2019

Для всех, кто заинтересован: эта формула делает свое дело:

=IFERROR(LOOKUP(9.99E+307,SEARCH(B$2:B$22,A2),B$2:B$22),"Keep")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...