仅当先前状态终止时如何对具有重置条件的集合进行排序

how to sequence a set with reseting condition only if previous state got terminated

鉴于特定的列集,我正在寻找一种方法,可以在 COUNTIF 过程中或之后将红色单元格变成空白单元格。

我用来获得(部分)正确答案的公式是:

=ARRAYFORMULA(IF(A2:A="",,IF(NOT(REGEXMATCH(TO_TEXT(B2:B), "\-")), 
 COUNTIFS(A2:A&D2:D, A2:A&D2:D, ROW(A2:A), "<="&ROW(A2:A)), )))

这是我的 sheet 的副本:- CC -

当我复制你的sheet(提供的唯一选项)时,Col B 中的负数实际上都是文本。因此,我没有从 Col A 中的原始数据回溯到 best 方法。相反,我只是使用 Cols A:D,因为你目前拥有它们(尽管我怀疑您不需要助手)和您编写的原始“关闭”公式。

也就是说,这应该可以提供您想要的结果,如图所示:

=ArrayFormula({"DESIRED OUTPUT";IF(A2:A="",,IF(VLOOKUP(A2:A&"~"&COUNTIFS(A2:A,A2:A,ROW(A2:A),"<="&ROW(A2:A))-1,{SPLIT(UNIQUE(A2:A)&"~0|0","|");A2:A&"~"&COUNTIFS(A2:A,A2:A,ROW(A2:A),"<="&ROW(A2:A)),C2:C},2,FALSE)<>0,,IF(NOT(REGEXMATCH(TO_TEXT(B2:B), "\-")), COUNTIFS(A2:A&D2:D, A2:A&D2:D, ROW(A2:A), "<="&ROW(A2:A)), )))})

我的贡献是这部分:

IF(VLOOKUP(A2:A&"~"&COUNTIFS(A2:A,A2:A,ROW(A2:A),"<="&ROW(A2:A))-1,{SPLIT(UNIQUE(A2:A)&"~0|0","|");A2:A&"~"&COUNTIFS(A2:A,A2:A,ROW(A2:A),"<="&ROW(A2:A)),C2:C},2,FALSE)<>0,, [most of your previous formula])

用简单的英语来说,这会查找每个 ID 的最后一次出现。仅当最后一次出现的 Col C 中的值为 0 时,才会显示主公式的结果。

我将 SPLIT(UNIQUE(A2:A)&"~0|0","|") 堆叠在实际的 ID~Row, Col C 值之上,这样第一次出现的任何 ID 仍然会找到 0,并且不会导致错误。 (添加 IFERROR 会不必要地延长公式。)

注意 1:我在此 假设 您原来的“关闭”公式如您所愿。我没有在仔细检查下测试它。我只是将它插入到我的扩展公式中,该公式确定 放置结果的位置。

注意 2:通常,我不会在这些论坛上讨论复杂的公式,纯粹是为了时间和我一直很忙。但是你在这个论坛上帮了很多忙,所以我很高兴能在这里重新投资你自己的罕见查询。