Google 表格中自动填充公式的 ARRAYFORMULA 问题

Trouble with ARRAYFORMULA for auto-filling formulas in Google Sheets

我正在尝试使用以下公式自动填充 "Results" sheet 中的 Google 工作表列,该公式从 "Source" 传播sheet:

=IFERROR(INDEX(Source!$B$2:$D,MATCH($A2&C$1,Source!$B$2:$B&Source!$C$2:$C,0),3)," ")

当我将该公式放入 ARRAYFORMULA 时,它不会自动填充,并且将 MATCH search_key 更改为一个范围(即 $A2:$A&C$1)也无法解决问题。

即,这些都不起作用:

=ArrayFormula(IFERROR(INDEX(Source!$B$2:$D,MATCH($A2&C$1,Source!$B$2:$B&Source!$C$2:$C,0),3)," “)) =ArrayFormula(IFERROR(INDEX(Source!$B$2:$D,MATCH($A2:$A&C$1,Source!$B$2:$B&Source!$C$2:$C,0),3)," ") )

有办法解决这个问题吗?或者自动填充公式的替代方法?我也愿意使用 INDEX/MATCH 以外的函数,只要它可以根据两个垂直标准进行查找即可。不幸的是,我认为主元 table 不适合我的目的,因为我的 "Results" 页面还查询另一个 spreadsheet 以提供其他信息。

此处示例:https://docs.google.com/spreadsheets/d/1dsaMYsJeZl2o_rNTLwaVhnEehFvAKRMXghAJeEK220s/edit?usp=sharing

这是您要查找的公式:

=ARRAYFORMULA(IFERROR(HLOOKUP(Source!$D,Source!$D:$D,MATCH($A2:$A4&C,ARRAYFORMULA(Source!$B:$B&Source!$C:$C),0),0),0))

我测试了这个,它工作得很好。


TL;DR

要回答您的公式错误的原因,

  1. MATCH 中的第二个参数应该有一个 ARRAYFORMULA 否则你基本上只匹配第一个元素。
  2. INDEX 不适用于 ARRAYFORMULA。它只能搜索给定范围内的单个值。

第一部分可以通过在MATCH中添加ARRAYFORMULA来解决。

如果您不搜索单元格组合(日期和姓名),一个简单的 VLOOKUP 就可以解决第二个问题。一个扭曲的 HLOOKUP 来拯救你。

没有 IFERROR 部分,公式如下所示:

=ARRAYFORMULA(HLOOKUP(Source!$D,Source!$D:$D,MATCH($A2:$A4&C,ARRAYFORMULA(Source!$B:$B&Source!$C:$C),0),0))

此公式产生相同的输出(参见单元格 I1):

=QUERY({Source!A:D,ARRAYFORMULA(VLOOKUP(Source!B:B,'Project Lookup'!A:B,2,0))},"select Col2,Col5,sum(Col4) where Col1 is not null group by Col2,Col5 pivot Col3")