Google sheets 比较两个选项卡';s标题,复制下面的列,保留空白列

Google 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)) 此公式获得了正确的位置,

我有两个选项卡,一个包含我所有的列标题(数据选项卡),另一个选项卡包含较少的标题,但都来自数据选项卡

我想使用第二个选项卡的标题搜索“数据”选项卡的标题,从第I列开始搜索到BI。第二个选项卡的标题将定期更改,但始终存在于数据选项卡中。如果搜索条件不存在,我想将该列留空。如果存在,请从“数据”选项卡返回以下值

我试过一些公式,但不能完全得到我想要的

该公式用于查找数据:

“过滤”!I2

=过滤器(数据!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,谢谢