Нужна формула, которая ищет комбинацию значений в строке и помещает значение в ячейку в зависимости от найденной комбинации - PullRequest
0 голосов
/ 07 ноября 2019

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

Value1, Value2, Value3, Value4, ValueINeed1 (из возможных 12) - ValueINeed1a (из возможных 3, но каждое возможное значение уникально для ValueINeed1), Value6, Value (n)

Прямо сейчас я использую эту формулу

=IF(ISBLANK(H10) = TRUE;""; IFERROR(IF(ISNUMBER(SEARCH("ValueINeed1- SubValueINeed1a";H10; 1)); "Result1"; IF(ISNUMBER(SEARCH("ValueINeed1- SubValueINeed1b";H10; 1)); "Result2"; IF(ISNUMBER(SEARCH("ValueINeed1 - SubValueINeed1c";H10; 1)); "Result3"; IF(ISNUMBER(SEARCH("ValueINeed2 - ValueINeed2a";H10; 1)); "Result4"; IF(ISNUMBER(SEARCH("ValueINeed2 - ValueINeed2b";H10; 1)); "Result5"; IF(ISNUMBER(SEARCH("ValueINeed2 - ValueINeed2c";H10; 1)); "Result6"; IF(ISNUMBER(SEARCH("ValueINeed3 - ValueINeed3a";H10; 1)); "Result7"; IF(ISNUMBER(SEARCH("ValueINeed3 - ValueINeed3b";H10; 1)); "Result8"; IF(ISNUMBER(SEARCH("ValueINeed3 - ValueINeed3c";H10; 1)); "Result9"; IF(ISNUMBER(SEARCH("ValueINeed4 - ValueINeed4a";H10; 1)); "Result10"; IF(ISNUMBER(SEARCH("ValueINeed4 - ValueINeed4b";H10; 1)); "Result11"; IF(ISNUMBER(SEARCH("ValueINeed4 - ValueINeed4c";H10; 1)); "Result12"; IF(ISNUMBER(SEARCH("ValueINeed5 - ValueINeed5a";H10; 1)); "Result13"; IF(ISNUMBER(SEARCH("ValueINeed5 - ValueINeed5b";H10; 1)); "Result14"; IF(ISNUMBER(SEARCH("ValueINeed5 - ValueINeed5c";H10; 1)); "Result15"; IF(ISNUMBER(SEARCH("ValueINeed5 - ValueINeed5d";H10; 1)); "Result16"; IF(ISNUMBER(SEARCH("ValueINeed6 - ValueINeed6a";H10; 1)); "Result17"; IF(ISNUMBER(SEARCH("ValueINeed6 - ValueINeed6b";H10; 1)); "Result18"; IF(ISNUMBER(SEARCH("ValueINeed6 - ValueINeed6c";H10; 1)); "Result19"; IF(ISNUMBER(SEARCH("ValueINeed7 - ValueINeed7a";H10; 1)); "Result20"; IF(ISNUMBER(SEARCH("ValueINeed7 - ValueINeed7b";H10; 1)); "Result21"; IF(ISNUMBER(SEARCH("ValueINeed7 - ValueINeed7c";H10; 1)); "Result22"; IF(ISNUMBER(SEARCH("ValueINeed8 - ValueINeed8a";H10; 1)); "Result23"; IF(ISNUMBER(SEARCH("ValueINeed8 - ValueINeed8b";H10; 1)); "Result24"; IF(ISNUMBER(SEARCH("ValueINeed8 - ValueINeed8c";H10; 1)); "Result25"; IF(ISNUMBER(SEARCH("ValueINeed9 - ValueINeed9a";H10; 1)); "Result26"; IF(ISNUMBER(SEARCH("ValueINeed9 - ValueINeed9b";H10; 1)); "Result27"; IF(ISNUMBER(SEARCH("ValueINeed9 - ValueINeed9c";H10; 1)); "Result28"; IF(ISNUMBER(SEARCH("ValueINeed10 - ValueINeed10a";H10; 1)); "Result29";IF(ISNUMBER(SEARCH("ValueINeed10 - ValueINeed10b";H10; 1)); "Result30"; IF(ISNUMBER(SEARCH("ValueINeed11 - ValueINeed11a";H10; 1)); "Result31"; IF(ISNUMBER(SEARCH("ValueINeed11 - ValueINeed11b";H10; 1)); "Result32"; IF(ISNUMBER(SEARCH("ValueINeed11 - ValueINeed11c";H10; 1)); "Result33"; IF(ISNUMBER(SEARCH("ValueINeed12 - ValueINeed12a";H10; 1)); "Result34"; IF(ISNUMBER(SEARCH("ValueINeed12 - ValueINeed12b";H10; 1)); "Result35"; IF(ISNUMBER(SEARCH("ValueINeed12 - ValueINeed12c";H10; 1)); "Result36"; ""))))))))))))))))))))))))))))))))))))))

ValueINeed5 имеет четыре соответствующих «Подзначения», а ValueINeed10 - только два.

Как видите, это выглядитпротивно, и я подозреваю, что это ухудшит производительность моей электронной таблицы, как только лист вырастет на несколько тысяч строк. Есть ли какое-либо решение, которое я могу использовать, чтобы заменить это?

РЕДАКТИРОВАТЬ: Извините за мой поздний ответ. Вот лист: https://docs.google.com/spreadsheets/d/1dpPY2h7jEQNdGj5USrdSu1Rhc_Dz1Ll0MyzvQwiVwM8/edit#gid=376650348 Я заменил информацию, с которой работаю, для ясности, и поместил комментарий в заголовок каждого столбца. Пожалуйста, не стесняйтесь комментировать таблицу.

...