如何仅计数负数,从右到左,仅按顺序计数,如果出现正值则停止计数

如何仅计数负数,从右到左,仅按顺序计数,如果出现正值则停止计数

在 Excel 电子表格中,我有六个单元格 ( A1- F1) 包含数字。我想从右到左计算连续的负值。例如,

A1=2,  B1=6,  C1=-3, D1=-5, E1=-6, F1=-9  : Answer G1=4  (four continuous negative values)
A1=2,  B1=6,  C1=3,  D1=5,  E1=-6, F1=-9  : Answer G1=2
A1=2,  B1=-6, C1=3,  D1=5,  E1=-6, F1=-9  : Answer G1=2
A1=-2, B1=-6, C1=-3, D1=5,  E1=6,  F1=-9  : Answer G1=1
A1=-2, B1=-6, C1=-3, D1=3,  E1=-6, F1=-9  : Answer G1=2

或者,类似的情况,但使用文字,我想计算RED从右边开始有多少个连续的单元格包含:

A1=GREEN, B1=GREEN, C1=GREEN, D1=GREEN, E1=RED,   F1=RED  : Answer G1=2
A1=GREEN, B1=GREEN, C1=RED,   D1=GREEN, E1=RED,   F1=RED  : Answer G1=2
A1=GREEN, B1=RED,   C1=RED,   D1=GREEN, E1=GREEN, F1=RED  : Answer G1=1
A1=GREEN, B1=RED,   C1=RED,   D1=RED,   E1=RED,   F1=RED  : Answer G1=5

我想从右向左数,直到特定的系列中断。

答案1

类型

=6-MAX(IF(A1:F1>=0, COLUMN(A1:F1), 0))

并按+ + 。G1根据第一个例子 (A1 = 2, B1 = 6, C1 = −3, D1 = −5, E1 = −6, F1 = −9),子表达式创建一个虚拟数组,看起来像 (1, 2, 0, 0, 0, 0) — 用列号替换非负数,用零替换负数。取其中的 ,我们得到最后一列(最右边)包含非负数 — 因此超出该列的所有内容都必须为负数。因此,从 6 中减去这个数字,我们就可以知道该系列右端有多少个(连续的)负数。CtrlShiftEnterIF(X>=0, COLUMN(X), 0)MAX

++使其成为 数组公式。这是创建类似虚拟数组所必需的CtrlShiftEnter

对于该问题的替代版本,解决方案几乎完全相同:

=6-MAX(IF(A1:F1<>"RED", COLUMN(A1:F1), 0))

        包含 OP 输入数据和期望结果的电子表格

答案2

对于可以作为正常公式输入的公式,请尝试:

=IFERROR(LOOKUP(2,1/(A1:F1>=0),{5,4,3,2,1,0}),6)

LOOKUP 与测试的最后一个条目匹配,TRUE 然后我们从数组中返回适当的计数。

但是,如果所有值都是<0,则LOOKUP返回错误,因此我们必须有六个。

相关内容