具有动态标准的 FILTER ARRAYFORMULA

FILTER ARRAYFORMULA with Dynamic Criteria

这是我的数据。

[C]                 [D]        [E]  [F]                 [G]
Timestamp           Submitter  Year Song                Artist
11/15/2020 8:42:57  A          2005 Feel Good, Inc.     Gorillaz
11/16/2020 19:08:13 B          2005 Feel Good, Inc.     Gorillaz
11/15/2020 9:33:01  C          2005 The Hand That Feeds Nine Inch Nails
11/15/2020 19:59:22 D          2005 The Hand That Feeds Nine Inch Nails

这就是我想要做的。基本上,我需要从有人第二次提交歌曲时提取时间戳。看起来它应该是可行的,但下面的代码只产生一行。有没有办法让它作为数组公式正常工作?

=ARRAYFORMULA( SMALL( FILTER( C2:C, E2:E & F2:F & G2:G = E2:E & F2:F & G2:G), 2) )

抱歉,这比我想象的要容易得多。我只需要 C 列中的辅助列来计算歌曲的实例,如下所示:

=ARRAYFORMULA(IF(F2:F<>"",COUNTIFS(F2:F&G2:G&H2:H,F2:F&G2:G&H2:H,ROW(F2:F),"<="&ROW(F2:F)),""))

...然后是一个 ARRAYFORMULA(VLOOKUP()) 来提取每首歌曲的第二个时间戳值:

=ARRAYFORMULA(IF(G2:G<>"",VLOOKUP(F2:F&G2:G&H2:H&2,{F2:F&G2:G&H2:H&C2:C,D2:D},2,0),""))

虽然不确定如何一次性完成,所以如果您知道方法,请插话。

在没有辅助列的情况下尝试以下操作。

=ArrayFormula(VLOOKUP(UNIQUE(E2:E&F2:F&G2:G),{SORT({E2:E&F2:F&G2:G,C2:D},2,1)},{2,3},0))

除非我误解了什么,否则这个简单的方法应该有效:

=ArrayFormula(FILTER(C2:C,C2:C<>"",COUNTIFS(E2:E&F2:F&G2:G,E2:E&F2:F&G2:G,ROW(E2:E),"<="&ROW(E2:E))=2))

这假设每首歌曲(即不一定在所有首歌曲中)按时间顺序输入。

本质上,您是在过滤所有非空白条目,其中每行的 COUNT(IFS) 等于 2(即,第二次提到 year/song/artist)。