我把数据分布在名为“月份”的列中,我需要计算零值单元格的数量,但只计算到最后一个值大于零的单元格,不要计算最后一个值大于零的单元格之后的零值单元格。有问题的细胞是D1:O1我试着在这个论坛上找到答案,但我找不到任何有效的方法。
dsf9zpds1#
如果没有关于具体情况的更多信息,则可以在所有数字均为零或正数时使用以下公式:
=MATCH(0, D1:O1)
如果范围中最后一个零旁边有负值,因为MATCH与match_type等于1(默认值),所以范围需要按升序排列,您可以用途:
MATCH
match_type
1
=MATCH(0, ABS(D1:O1))
这在一般情况下是有效的以前的方法假设您一直在计数,直到找到一个不为零的值。没有输入样本,我不是100%你的意思从你的问题停止时,它发现一个值 * 不等于零或大于零 *。对于后一种情况。你需要继续计数零值,即使它发现负值和停止计数时,它发现一个正值。如果是这种情况,然后尝试以下操作:
=LET(rng, D1:O1, seq, SEQUENCE(,COLUMNS(rng)),f, FILTER(seq, rng > 0,-1), pos, IF(@f=-1, MAX(seq) + 1, TAKE(f,,1)), IF(pos = 1, 0, REDUCE(0, FILTER(rng, seq < pos), LAMBDA(ac,x, IF(x = 0, ac + 1, ac)))))
它考虑了几种非满意路径场景:1.所有值均为正值,返回01.第一个值为正,返回0。1.未找到正值,计数到末尾否则,查找第一个正值(pos)的索引位置,然后通过REDUCE函数对该索引位置之前的零值进行计数。
0
pos
REDUCE
1条答案
按热度按时间dsf9zpds1#
如果没有关于具体情况的更多信息,则可以在所有数字均为零或正数时使用以下公式:
如果范围中最后一个零旁边有负值,因为
MATCH
与match_type
等于1
(默认值),所以范围需要按升序排列,您可以用途:这在一般情况下是有效的
以前的方法假设您一直在计数,直到找到一个不为零的值。
没有输入样本,我不是100%你的意思从你的问题停止时,它发现一个值 * 不等于零或大于零 *。对于后一种情况。你需要继续计数零值,即使它发现负值和停止计数时,它发现一个正值。如果是这种情况,然后尝试以下操作:
它考虑了几种非满意路径场景:
1.所有值均为正值,返回
0
1.第一个值为正,返回
0
。1.未找到正值,计数到末尾
否则,查找第一个正值(
pos
)的索引位置,然后通过REDUCE
函数对该索引位置之前的零值进行计数。