【问题标题】:How can I filter by comparing a column to its own row items如何通过将列与其自己的行项进行比较来进行过滤
【发布时间】:2020-01-28 13:26:53
【问题描述】:

我有一堆数据被逐行推送到谷歌工作表中。每行都有一个参考编号 (COL A) 和一个日期 (COL D)。对于每个参考编号,我想找到最新更新的行。这必须由arrayformula 完成。

到目前为止,我有一个数组公式和过滤器的组合。但是它不能按预期工作,因为过滤器参数之一是 A2:A=A2:A。显然,这总是正确的。我想要它做的是比较第 2 行的 A2:A=A2,然后比较第 3 行的 A2:A=A3 等。不要向下拖动。由于数据是自动增长的

=arrayformula(if(len(A2:A),max(filter({D2:D},A2:A=A2:A)),))

https://docs.google.com/spreadsheets/d/16pbGiisFcsrHfrFKowzzkpw03Lw79yACjut96xxyWW4/edit?usp=sharing

【问题讨论】:

  • 我了解您的问题,并且可以通过QUERY FUNCTION 并向下拖动来轻松解决。但是为什么有必要用ARRAYFORMULA 来做这件事呢?如果您想要QUERY 解决方案,请告诉我,我会发布。
  • 我正在使用 Zapier 根据另一个应用程序中的一些触发事件将新数据推送到工作表。因此,数据不断增长。因此向下拖动不是一种选择
  • @player0 我想使用该列来指示该行是否是该特定参考号的最新更新行。 Zapier 不一定按时间顺序推送数据
  • 你能分享一份你的工作表吗?
  • 我复制了描述中的链接

标签: arrays google-sheets google-sheets-formula array-formulas gs-vlookup


【解决方案1】:

试试E1

={"Last Update"; 
 ARRAYFORMULA(IFNA(VLOOKUP(A2:A; SORT({A2:A\ D2:D}; 2; 0); 2; 0)))}

【讨论】:

    【解决方案2】:

    您可以将这两个公式中的任何一个粘贴到 F2 中,然后将其向下拖动。

    =QUERY($A$2:$E,"SELECT D WHERE A = '"&A2&"' ORDER BY D desc LIMIT 1")
    
    
    =ARRAYFORMULA(MAX(FILTER({$D$2:$D},$A$2:$A=A2)))
    

    *编辑: F2试试这个公式就不用拖下去了:

    =ARRAYFORMULA(IFERROR(VLOOKUP(A2:A,QUERY(QUERY($A$2:$E,"SELECT A, max(D) WHERE A <> '' GROUP BY A"),"SELECT * OFFSET 1",0),2,FALSE),""))
    

    您可能会给 F 列一个日期格式,但这是一次性的。祝你好运:)

    【讨论】:

    • 非常感谢您的建议。你能想出一种方法来做同样的事情而不拖累吗?这是必要的,因为有实时数据从另一个应用程序推送到工作表中的下一个空行
    猜你喜欢
    • 2021-10-06
    • 2023-04-08
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多