首页 > 解决方案 > 带有查询索引的数组公式

问题描述

我现在的公式是:

=INDEX(QUERY({$A$2:$P},"select max(Col"&COLUMN($M$2)&") where lower(Col"&COLUMN($D$2)&") contains lower('"& D3 &"')",1),2,1)

这是我使用的以下逻辑:

  1. 我的客户有不同的设备,我每年都要做QA。在那张表上,我列出了客户的所有设备。
  2. Col D 有我客户的名字。每个客户都有多条记录,每个记录对应于他们拥有的每台设备。
  3. Col M 有我上次对他们的设备进行 QA 的日期。
  4. 我使用 QUERY 函数来检索我对那个客户的设备进行 QA 的最后日期(使用 max(Col M))。
  5. 使用 INDEX 函数仅检索该“最大日期”的值。

我想要什么:

我设法只为单元格 D3 执行此操作,但我想使用 ARRAYFORMULA 将其扩展为 D3:D。我尝试使用以下这 3 个选项进行应用,但它一直只返回一个值:

 1. =INDEX(QUERY({$A$2:$P},"select max(Col"&COLUMN($M$2)&") where lower(Col"&COLUMN($D$2)&") contains lower('"& ARRAYFORMULA(D3:D) &"')",1),2,1)
 2. =ARRAYFORMULA(INDEX(QUERY({$A$2:$P},"select max(Col"&COLUMN($M$2)&") where lower(Col"&COLUMN($D$2)&") contains lower('"& D3:D &"')",1),2,1))
 3. =ARRAYFORMULA(INDEX(QUERY({$A$2:$P},"select max(Col"&COLUMN($M$2)&") where lower(Col"&COLUMN($D$2)&") contains lower('"& ARRAYFORMULA(D3:D) &"')",1),2,1))

我怎样才能让它工作?

标签: google-sheets

解决方案


您可以通过将客户名称的值查找到客户名称和 QA 日期的排序数组来执行此操作。

如果您的数据如下所示: 然后在此处输入图像描述 使用.=ArrayFormula(IF(LEN(A2:A)=0, "", (VLOOKUP(A2:A, QUERY(A2:B, "select A, B order by A, B desc"), 2, 0))))C2

不过,您将不得不根据工作表中的列名调整公式。


推荐阅读