Поиск по нескольким столбцам и возврат верхнего значения ячейки - PullRequest
1 голос
/ 14 мая 2019

У меня есть формула INDEX, которая будет принимать значение из первой ячейки в строке, искать совпадения в нескольких столбцах другого листа и возвращать соответствующее значение строки заголовка, когда совпадение будет найдено.

Проблема в том, что мне нужно вручную скопировать эту формулу вниз, чтобы применить ее к каждой строке. Но что еще важнее, если я редактирую формулу или создаю новые строки, мне нужно убедиться, что я применяю это изменение к каждой строке. Я бы предпочел иметь одну формулу в верхней части столбца, которая применяется ко всем ячейкам ниже.

=INDEX(subTaskCategories!$C$1:$J$1,MAX(IF(subTaskCategories!$C$2:$J=A2,COLUMN(subTaskCategories!$C$2:$J)-COLUMN(A2)-1)))

Что является альтернативой INDEX, которая будет искать несколько столбцов и возвращать заголовок при обнаружении совпадения, который также может быть заключен в ARRAYFORMULA?

Мой лист в subTaskData! C2

1 Ответ

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

вставить в B2 ячейку:

=ARRAYFORMULA(IFERROR(VLOOKUP(REGEXEXTRACT(C2:C, "^~ (.*) ~$"), 
 TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(
 QUERY(TRANSPOSE(IF(INDIRECT("taskCategories!C2:"&ADDRESS(ROWS(taskCategories!A1:A), 
 COLUMNS(taskCategories!A1:AA1), 4))<>"", "♥"&INDIRECT("taskCategories!C2:"&
 ADDRESS(ROWS(taskCategories!A1:A), COLUMNS(taskCategories!A1:AA1), 4))&"♦"&
 INDIRECT("taskCategories!C1:"&ADDRESS(1, COLUMNS(taskCategories!A1:AA1), 4)), ))
 , , 999^99)), , 999^99), "♥")), "♦")), 2, 0)))

0


вставьте в C2 ячейку:

=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A, TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(
 QUERY(TRANSPOSE(IF(INDIRECT("subtaskCategories!C2:"&ADDRESS(ROWS(subTaskCategories!A1:A), 
 COLUMNS(subTaskCategories!A1:AA1), 4))<>"", "♥"&INDIRECT("subtaskCategories!C2:"&
 ADDRESS(ROWS(subTaskCategories!A1:A), COLUMNS(subTaskCategories!A1:AA1), 4))&"♦"&
 INDIRECT("subtaskCategories!C1:"&ADDRESS(1, COLUMNS(subTaskCategories!A1:AA1), 4)), ))
 , , 999^99)), , 999^99), "♥")), "♦")), 2, 0)))

0

...