Как искать строку из таблицы критериев и возвращать из нее значение? - PullRequest
0 голосов
/ 27 сентября 2019

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

Wksht1                                 Wksht2(Criteria)
A              Result                  A      B      C      Result
Change Roller  Type 1(from Criteria)   Change Roller        Type 1
Pkg NG                                 Pkg    NG            Type 2
Lid NG                                 Lid    Dent          Type 3

Результат должен быть в Wksht1 в столбце результатов.

Любая помощь будет принята с благодарностью.Заранее большое спасибо.

Редактировать:

Более длинное строковое издание.

Wksht1                                 
A                                       Result
Assemble NG and Lid dent                Type 3
Change roller and do camera setting     Type 1
Change spec and lid are dent            Type 3

Я должен отделить ключевое слово для лучшего распознавания.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Предположим, у вас есть следующие именованные диапазоны :

  • 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 + Введите после ввода вышеуказанной формулы в строке формул.

Перетащите ее вниз, чтобы применить поперек, как показано ниже:

Solution

Пример данных для тестирования:

| 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 *

0 голосов
/ 27 сентября 2019

Эта ситуация может быть обработана очень быстро с помощью формулы VLookup.кажется, что строка, упомянутая в столбце A & B wroksheet2, является подстрокой столбца A рабочего листа 1

You want to search the of the string of column A of the worksheet in column A, B of worksheet2
Step-1: concatenate the column A & B of worksheet2 into column C as =concatenate(A1," ",B1)
Step-2: apply vlookup in the column B of the worksheest1 to get the result from the worksheet2 
formula can be applied in B1 as 
=vlookup(A1,Sheet2!C:Sheet2!D,2,0)

, вы получите результат в столбце b рабочего листа1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...