有没有一种方法可以从最后一个条件x开始计数?

时间:2019-09-18 21:33:27

标签: if-statement google-sheets sum google-sheets-formula array-formulas

我有一组复杂的数据,每行可以返回3种不同的条件。我需要能够计算出符合特定条件之一的最后x行。

以下公式对我来说一直很好,但是我发现该公式的一个实例出现故障(该公式至少重复了12次)

=ArrayFormula(LOOKUP(9.99999999999999E+307,IF(FREQUENCY(IF(AQ:AQ)=1,ROW(AQ:AQ)),IF(AQ:AQ<>1,ROW(AQ:AQ)))=0,FREQUENCY(IF(AQ:AQ=1,ROW(AQ:AQ)),IF(AQ:AQ=0,ROW(AQ:AQ))))))

当前标准如下:
0:满足条件x-重置计数器
1:满足条件-增量计数器
2:满足条件z-忽略此行

因此,此:
1
2
2
2
1
1
0
1
1
1

应输出:3

此:
1
2
0
2
2
1
2
1

应输出:2

但是,我遇到的故障不会在达到0时重置计数器,例如:
1
2
1
2
1
1
2
2
2
2
0

应输出:0

但实际上正在输出:4

我已使用该特定数据集测试了所有可能的状况,但无法纠正此问题。我相信公式中有一个错误(特别是9.99999999999999E + 307),但是我很久以前就写了它,所以我无法成功调试它。我已经尝试过1E + 306,但是结果是一样的。


编辑1:应要求,在重新创建问题时,我会尽可能包括表格的精简版。

https://docs.google.com/spreadsheets/d/1SOXiFMEQelqptBvjcabMZGNgG60TRRbe_b65rzT1bi0/edit?usp=sharing

如果滚动到工作表的底部,您会看到Col AQ的值为0,因此单元格AF2中的值应该为0

您会在工作表中注意到我正在使用“命名范围”。


EDIT2:player0的回答很完美!! <3

我修改了新公式以适应我的电子表格,以便它可以容纳“命名范围”和下拉列表。这个问题对我有很大帮助:

Convert column index into corresponding column letter

最终公式(仅供参考)是:

=ARRAYFORMULA(COUNTIF( INDIRECT(REGEXEXTRACT(ADDRESS(ROW(), column(INDIRECT($A$1 & Z$1 & "L"))), "[A-Z]+")& MAX(IF((INDIRECT($A$1 & Z$1 & "L")=0)*(INDIRECT($A$1 & Z$1 & "L")<>""), ROW(INDIRECT($A$1 & Z$1 & "L"))+1,5))&":"& REGEXEXTRACT(ADDRESS(ROW(), column(INDIRECT($A$1 & Z$1 & "L"))), "[A-Z]+")), 1))

1 个答案:

答案 0 :(得分:1)

=ARRAYFORMULA(COUNTIF(INDIRECT("A"&
 MAX(IF((A2:A=0)*(A2:A<>""), ROW(A2:A)+1, ROW(A2)))&":A"), 1))

0


spreadsheet demo