Google sheets 比较两个选项卡';s标题,复制下面的列,保留空白列
我有两个选项卡,一个包含我所有的列标题(数据选项卡),另一个选项卡包含较少的标题,但都来自数据选项卡 我想使用第二个选项卡的标题搜索“数据”选项卡的标题,从第I列开始搜索到BI。第二个选项卡的标题将定期更改,但始终存在于数据选项卡中。如果搜索条件不存在,我想将该列留空。如果存在,请从“数据”选项卡返回以下值 我试过一些公式,但不能完全得到我想要的 该公式用于查找数据: “过滤”!I2Google sheets 比较两个选项卡';s标题,复制下面的列,保留空白列,google-sheets,filter,google-sheets-formula,Google Sheets,Filter,Google Sheets Formula,我有两个选项卡,一个包含我所有的列标题(数据选项卡),另一个选项卡包含较少的标题,但都来自数据选项卡 我想使用第二个选项卡的标题搜索“数据”选项卡的标题,从第I列开始搜索到BI。第二个选项卡的标题将定期更改,但始终存在于数据选项卡中。如果搜索条件不存在,我想将该列留空。如果存在,请从“数据”选项卡返回以下值 我试过一些公式,但不能完全得到我想要的 该公式用于查找数据: “过滤”!I2 =过滤器(数据!I2:AK,COUNTIFS($I$1:$1,数据!I1:AK1)) 此公式获得了正确的位置,
=过滤器(数据!I2:AK,COUNTIFS($I$1:$1,数据!I1:AK1))
此公式获得了正确的位置,但产生了错误的信息:
“已筛选的副本”!I3
=ArrayFormula(如果(为空白(I2:2)),过滤器(数据!I2:AK,计数($I$1:$1,数据!I1:AK1)))
以下是请参见:
=ARRAYFORMULA(QUERY(VLOOKUP(ROW(A2:A), {ROW(A2:A),
A2:C},
MATCH(HLOOKUP(E1:G1,
{E1, F1, G1;
B1, A1, C1},
2, 0), A1:C1, 0)
+1,
0),
"select *"))
对于缺少的标题:
参见:
=ARRAYFORMULA(QUERY(VLOOKUP(ROW(A2:A), {ROW(A2:A),
A2:C},
MATCH(HLOOKUP(E1:G1,
{E1, F1, G1;
B1, A1, C1},
2, 0), A1:C1, 0)
+1,
0),
"select *"))
对于缺少的标题:
您需要处理的范围很大,因此可能会有一点延迟,按公式填充网格(可能是2秒或3秒)。但我在I2中添加了一张带有以下公式的表格(“Erik帮助”):
=ArrayFormula(IF(ROW(A2:A))、IFERROR(VLOOKUP(ROW(data!A2:A))、间接(data!I2:&ROWS(data!A:A))、HLOOKUP(FILTER(I1:1,I1:1“”)、{data!I1:1;SEQUENCE(1,COLUMNS(data!I1:1)、2)}、2,FALSE)、FALSE)))
老实说,这很难解释它是如何工作的,但我会尽量涵盖基本的
=数组公式(…)
这仅仅意味着公式将处理一个范围而不是一个单元格
IF(行(A2:A),…HLOOKUP(过滤器(I1:1,I1:1)”,{data!I1:1;序列(1,列(数据!I1:1),2)},2,FALSE)
IF(ROW(A2:A)
很重要,因为它向每一行发出做某事的信号,从而创建一个二维网格,而不仅仅是处理当前行。HLOOKUP
将查找I1:1
中不是空的每个头[过滤器(I1:1,I1:1”)
]它们将在一个虚拟数组中查找,该虚拟数组由data!I1:1
中的所有标题组成的顶行位于由一行数字序列和data!I1:1
中相同数量的列组成的底行之上,从数字2开始向上移动。(它从2开始,因为我还没有解释的VLOOKUP虚拟阵列的一部分将形成第1列。)
VLOOKUP(行(A2:A),{ROW(数据!A2:A),间接(“数据!I2:&ROWS(数据!A:A))},*HLOOKUP结果号*,FALSE)
现在,一个VLOOKUP将启动。它将在由两列组成的虚拟数组中查找data!A2:a
中的每一行;第一列将是相同的行号,第二列将是data!I2
中的所有内容(间接设置允许这是一个动态网格,以备以后添加或删除列时使用)。至于从中返回的列,将从上面解释的HLOOKUP结果中提取(您记得,这些结果都将与标题匹配)
最后,
IFERROR(…)
如果该过程中的任何步骤返回错误,都将返回null,这可能是因为找不到任何东西。您需要处理的范围很大,因此可能会有一点延迟,按公式填充网格(可能是2秒或3秒)。但是我添加了一张表(“Erik Help”)在I2中使用以下公式:
=ArrayFormula(IF(ROW(A2:A))、IFERROR(VLOOKUP(ROW(data!A2:A))、间接(data!I2:&ROWS(data!A:A))、HLOOKUP(FILTER(I1:1,I1:1“”)、{data!I1:1;SEQUENCE(1,COLUMNS(data!I1:1)、2)}、2,FALSE)、FALSE)))
老实说,这很难解释它是如何工作的,但我会尽量涵盖基本的
=数组公式(…)
这仅仅意味着公式将处理一个范围而不是一个单元格
IF(行(A2:A),…HLOOKUP(过滤器(I1:1,I1:1)”,{data!I1:1;序列(1,列(数据!I1:1),2)},2,FALSE)
IF(ROW(A2:A)
很重要,因为它向每一行发出做某事的信号,从而创建一个二维网格,而不仅仅是处理当前行。HLOOKUP
将查找I1:1
中不是空的每个头[过滤器(I1:1,I1:1”)
]它们将在一个虚拟数组中查找,该虚拟数组由data!I1:1
中的所有标题组成的顶行位于由一行数字序列和data!I1:1
中相同数量的列组成的底行之上,从数字2开始向上移动。(它从2开始,因为我还没有解释的VLOOKUP虚拟阵列的一部分将形成第1列。)
VLOOKUP(行(A2:A),{ROW(数据!A2:A),间接(“数据!I2:&ROWS(数据!A:A))},*HLOOKUP结果号*,FALSE)
现在,一个VLOOKUP将启动。它将在由两列组成的虚拟数组中查找data!A2:a
中的每一行;第一列将是相同的行号,第二列将是data!I2
中的所有内容(间接设置允许这是一个动态网格,以备以后添加或删除列时使用)。至于从中返回的列,将从上面解释的HLOOKUP结果中提取(您记得,这些结果都将与标题匹配)
最后,
IFERROR(…)
如果该过程中的任何步骤返回错误,都将返回null,这可能是因为找不到某些内容。嘿,player0,感谢您为我查看此公式。我尝试了您的公式,但它似乎对我不起作用(我肯定是做错了).我对表格做了一些编辑,如果你有时间再看一看的话,可能会澄清我的目标。嘿,玩家0,谢谢