Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 搜索多个列并返回顶部单元格值_Google Sheets_Array Formulas_Google Sheets Formula_Google Sheets Query_Gs Vlookup - Fatal编程技术网

Google sheets 搜索多个列并返回顶部单元格值

Google sheets 搜索多个列并返回顶部单元格值,google-sheets,array-formulas,google-sheets-formula,google-sheets-query,gs-vlookup,Google Sheets,Array Formulas,Google Sheets Formula,Google Sheets Query,Gs Vlookup,我有一个索引公式,它将从一行的第一个单元格中获取一个值,搜索另一个工作表的多个列以查找匹配项,并在找到匹配项时返回相应的标题行值 问题是,我必须手动复制此公式,以便将其应用于每一行。但更重要的是,如果我编辑公式或创建新行,我需要确保我将该编辑应用于每一行。我更希望在列的顶部有一个适用于下面所有单元格的公式 =INDEX(subTaskCategories!$C$1:$J$1,MAX(IF(subTaskCategories!$C$2:$J=A2,COLUMN(subTaskCategories!

我有一个
索引
公式,它将从一行的第一个单元格中获取一个值,搜索另一个工作表的多个列以查找匹配项,并在找到匹配项时返回相应的标题行值

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

=INDEX(subTaskCategories!$C$1:$J$1,MAX(IF(subTaskCategories!$C$2:$J=A2,COLUMN(subTaskCategories!$C$2:$J)-COLUMN(A2)-1)))
除了
索引
之外,还有什么替代方法可以搜索多个列并在找到匹配项时返回标题,该匹配项也可以包装在
数组公式中


在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)))
=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)))
=ArrayFor公式,
例如:转置(
查询(转置)(IF(间接)(“taskCategories!C2:”)和地址(行(taskCategories!A1:A),
列(taskCategories!A1:AA1),4))“”,”♥"&间接(“任务类别!C2:”&
地址(行(taskCategories!A1:A)、列(taskCategories!A1:AA1)、4)和“♦"&
间接(“taskCategories!C1:”&地址(1,列(taskCategories!A1:AA1),4)),)
, 999^99)), 999^99), "♥")), "♦")), 2, 0)))


粘贴到C2单元格中:

=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)))
=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)))
【代码】=数组公式( 查询(转置)(IF(间接)(“子任务类别!C2:”&地址)(行(子任务类别!A1:A)), 列(子任务类别!A1:AA1),4))“”,”♥“&间接(“子任务类别!C2:”& 地址(行(子taskcategories!A1:A)、列(子taskcategories!A1:AA1)、4)和“♦"& 间接(“子分类!C1:”&地址(1,列(子分类!A1:AA1),4)),) , 999^99)), 999^99), "♥")), "♦")), 2, 0)))

原则上,您可以使用Hlookup或Vlookup作为索引的替代方法,但问题更多的是Max也不使用数组公式,而且您已经在使用2d数组。@player0我编辑了该问题,以包含指向我的sheet@TomSharpe我认为我不一定需要
MAX
。看起来像
ARRAYFORMULA
将自动填充到底行。据我所知,它的子任务数据!C2(有问题编辑)哇!这些公式中有很多内容!再次感谢!