【问题标题】:Is there a way to filter and return results for the unique of one column, with conditions of another?有没有办法用另一列的条件过滤和返回唯一列的结果?
【发布时间】:2019-06-02 16:30:23
【问题描述】:

问题

对于下面的数据,是否有一种方法可以返回结果(对于 B 列中的每个订单):

  1. 如果订单(例如订单 10021)的最新状态 [col D] 已关闭,则返回该行。
  2. 如果不是,则返回该订单自最近关闭状态以来的每一行(例如订单 10020,第 4 行和第 5 行)。

以前的努力和尝试的解决方案

以前,我只返回一个结果,每个订单的最新状态如下:

=SORTN(SORT(A2:D,1,FALSE),9^9,2,2,FALSE)

但是,我希望订单可以有多个当前状态。

我已经尝试了一些事情,并且能够实现我正在寻找的东西,不幸的是只有一个订单,以下是:

(下面的链接表解释了我是如何做到这一点的)

=IFERROR(FILTER(A2:D5,A2:A5>INDEX(SORT(FILTER(A2:D5,D2:D5="CLOSED"),1,0),1,1)),FILTER(A2:D5,A2:A5>=INDEX(SORT(FILTER(A2:D5,D2:D5="CLOSED"),1,0),1,1)))

我能想到的另一种选择是带有循环的脚本。

总结

很难知道如何为这个问题命名,但我们之所以提出这个问题,是因为本质上我们是在尝试过滤 col B 的唯一性,条件是 col A 和 D。

Here's a link 到您可以编辑的示例 Google 电子表格中,其中显示了所有尝试。

非常感谢您的所有帮助和 cmets!

【问题讨论】:

  • 请添加所需输出的示例
  • @player0 当然,添加到工作表底部。如果你是这个意思,请告诉我。

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


【解决方案1】:

可能是这样的:

=ARRAYFORMULA(UNIQUE(SORT({VLOOKUP(UNIQUE(INDIRECT("B2:B"&COUNTA(B2:B)+1)), 
 SORT({B2:B, TO_TEXT(A2:D)}, 2, 0), {2, 3, 4, 5}, 0); 
 FILTER(A2:D, D2:D="RETURN")},1,1)))

【讨论】:

  • 非常感谢您的努力!这是一个不错的选择。
【解决方案2】:

解决方案

感谢 Matt King,他找到了完整的答案。

=ARRAYFORMULA(QUERY({A:D,(COUNTIFS(C:C,C:C,A:A,">="&A:A)=1)*(D:D="CLOSED")
 +NOT(REGEXMATCH(TRIM(TRANSPOSE(QUERY(IF((TRANSPOSE(A:A)<=A:A)*(TRANSPOSE(C:C)=C:C),D:D,)
 ,,9^99))),"CLOSED"))},"select Col1,Col2,Col3,Col4 where Col5=1"))

基本上,

  • 首先为任何给定订单的每一行分配一个计数
  • 转置和组合状态
  • 如果那里有 CLOSED 状态,请不要使用它
  • 然后用查询语言过滤

导致——

查看解决方案here

模组

我添加了一个从当前记录中完全排除状态 NOTE 的子句——

=ARRAYFORMULA(QUERY({A:D,(COUNTIFS(B:B,B:B,A:A,">="&A:A)=1)*(D:D="CLOSED")+ 
 (ARRAYFORMULA(IF((ARRAYFORMULA(NOT(REGEXMATCH(TRIM(TRANSPOSE(QUERY
 (IF((TRANSPOSE(A:A)<=A:A)*(TRANSPOSE(B:B)=B:B),D:D,),,9^99))),"CLOSED"))))    
 =TRUE,IF((ARRAYFORMULA(NOT(TRANSPOSE(ARRAYFORMULA(TRANSPOSE(D:D)))="NOTE")))  
 =FALSE,FALSE,TRUE),FALSE)))},"select Col1,Col2,Col3,Col4 where Col5=1"))

实施

这是针对 2500 行数据进行的样本测试,执行时间超过 80 秒。因此,尽管这回答了问题,但不一定是可行的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 2023-02-22
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多