搜索多个列和 return 个顶部单元格值

Search multiple columns and return top cell value

我有一个 INDEX 公式,它将从一行中的第一个单元格中获取一个值,搜索另一个 sheet 的多个列进行匹配,然后 return 相应的 header 找到匹配项时的行值。

问题是我必须手动将此公式复制下来,以便它应用于每一行。但更重要的是,如果我编辑公式或创建新行,我需要确保将编辑应用到每一行。我更希望在列的顶部有一个适用于下面所有单元格的公式。

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

什么是 INDEX 的替代方法,它将搜索多个列和 return header 当找到匹配时也可以包含在 ARRAYFORMULA 中?

My sheet 在 subTaskData!C2

粘贴到 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)))


粘贴到 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)))