Предположим, у вас есть следующие именованные диапазоны :
- C_A , являющиеся ключевыми словами в столбце A таблицы критериев;
- C_B - ключевые слова в столбце B на листе критериев;
- C_C - ключевые слова в столбце C на листе критериев;
- Результат является типом в столбце Результат на листе критериев.
Введите следующую формулу в ячейку B2
в таблице результатов (предположим, что ваш список начинается с ячейки A2):
=IFERROR(LOOKUP(1,1/(IFERROR((SEARCH("#"&C_B&"#",MID(SUBSTITUTE(A2," ","# #"),SEARCH("#"&C_A&"#","#"&SUBSTITUTE(A2," ","# #")&"#")+LEN(C_A)+1,2^15)&"#")>IF(LEN(C_C)=0,0,1/ISNUMBER(SEARCH("#"&C_C&"#",SUBSTITUTE(MID(A2,SEARCH(C_B,A2)+LEN(C_B),2^15)," ","# #")&"#"))))*ROW($A$1:INDEX($A:$A,ROWS(Result))),0)),Result),"No Match")
Обратите внимание, что это формула массива , поэтому вам нужно подтвердить это, нажав Ctrl + Shift + Введите после ввода вышеуказанной формулы в строке формул.
Перетащите ее вниз, чтобы применить поперек, как показано ниже:
Пример данных для тестирования:
| Strings |
|-----------------------------------------------|
| Assemble NG and Lid dent |
| Change roller and do camera setting |
| Change spec and lid are dent |
| dent liD roller changeable |
| Test1 xxx lid xx pkG x ng xxxxx xxxxxxx Test3 |
| xxx Test1 x pkG xxxxxx xxx Test2 test3 |
| Change xxxxxx test1 xxx test2 xx Test4 |
| Change Test1 xxxx Lid xxxx NG xxx controller |
| Pkg Ngyuent Test1 Test21 |
Логика заключается в добавлении преобразования каждого ключевого слова в #keyword#
, а затем поиск в первом столбце ключевых слов через строку aи верните позицию слова, если оно существует, затем выполните поиск во втором столбце ключевых слов из остальной части строки из предыдущего поиска и верните позицию второго ключевого слова, если оно существует.Затем выясните, есть ли третье ключевое слово в оставшейся строке.Если да, верните соответствующий результат.
Вот вам одно ограничение моего решения, которое может нарушить условия сделки.Например, если у вас уже есть A-Test1; B-Test2
как одна комбинация ключевых слов для Type4 , и у вас есть другая комбинация A-Test1; B-Test2; C-Test3
для Type5 , комбинация, которая имеет меньше ключевых слов, должна находиться встрока над комбинацией, которая имеет три ключевых слова.Причина, по которой моя формула всегда будет возвращать комбинацию, которая идет последней в таблице критериев, если первые два ключевых слова идентичны.Обходной путь - переставить таблицу критериев так, чтобы комбинации из трех ключевых слов всегда шли после комбинаций из двух ключевых слов.
Дайте мне знать, если у вас есть какие-либо вопросы.Ура :) 1062 *