Отслеживание, если фраза существует в списке терминов - PullRequest
1 голос
/ 09 июля 2019

У меня возникают трудности с поиском формулы для выполнения именно того, что я ищу.

У меня есть два списка, один из которых содержит поисковые фразы, такие как ("Sound bars for tv"), и другой список, который содержит отдельные термины.like ("TV", "Sound", "bars").

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

«Звуковые панели для ТВ», мне нужно, чтобы каждое из этих слов было в списке терминов, чтобы оно вернулось как ИСТИНА.Кроме того, что еще более сложно, если у меня есть поисковая фраза «Звуковая панель» и «Звуковая панель», они оба должны пройти, если оба термина присутствуют в списке.

Любая идея, как лучше всего подойти к этому.

Я безуспешно пробовал следующее:

Отдельные термины = список таких терминов, как "TV", "Sound", "Bars" Phrase = поисковые фразы, такие как "Sound bars for TV"

Цель состоит в том, чтобы создать формулу, в которой "Да" каждое слово в "Звуковых панелях для ТВ" входит в список отдельных терминов.

  1. =SUMPRODUCT(--ISNUMBER(SEARCH(individual terms,phrase)))=COUNTA(individual terms)
  2. =IF(ISNUMBER(SEARCH(phrase,individual terms)), "Yes", "No")
  3. =SUMPRODUCT(--ISNUMBER(SEARCH(individual terms,phrase)))>0

Ответы [ 2 ]

2 голосов
/ 09 июля 2019

Давайте представим, что вы настроили данные следующим образом:

enter image description here

Столбец D был преобразован в таблицу Excel (со Вставкой -> Таблица) и назван tblTerms. Это позволяет динамически добавлять и удалять термины из списка.

Теперь в ячейке B2 и скопирована эта формула:

=SUMPRODUCT(--(COUNTIF(tblTerms[Search Terms],TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),LEN(A2)*(ROW(A$1:INDEX(A:A,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1))-1)+1,LEN(A2))))=0))=0

Обратите внимание, что вам нужно добавить «Soundbars» отдельно в список условий поиска. В действительности нет никакого способа для Excel распознать отдельные слова в составном слове, и попытка сделать это была бы чрезвычайно громоздкой, даже с VBA.

2 голосов
/ 09 июля 2019

Это проанализирует строку и посчитает совпадения, а затем сравнит это с количеством «слов» в строке. Если они совпадают, то вернется Yes

=IF(SUMPRODUCT(COUNTIF(D:D,TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW($XFD$1:INDEX($XFD:$XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)*999+1,999))))=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1,"Yes","No")

enter image description here

...