我正在尝试使用 Excel 公式从左侧计算一行中值大于 50 的连续 Excel 单元格。
例如 – 在第 3 行,有连续 3 个单元格的值 >50。但是,从左侧数起,有 2 个单元格的值 >50,然后有一个单元格的值 < 50。因此,o/p 将是 2,而不是 3。
预期输出在“计数”列中。
3
7 个回答
7
=FIND("0", CONCAT(--(B1:E1>50))&"0")-1
这只是将单元格值更改为1
(>50) 和0
(≤50),将它们全部连接成一个字符串,0
在末尾添加另一个字符串(以覆盖所有值都 >50 的边缘情况),然后找出1
第一个 之前有多少个0
。这确保它只从左边缘计数。
数数 | 2024 年 10 月 26 日 | 2024 年 10 月 25 日 | 2024 年 10 月 24 日 | 2024 年 10 月 23 日 |
---|---|---|---|---|
1 | 52.38 | 40.3 | 50.39 | 46.32 |
3 | 52.94 | 50.04 | 50.82 | 47.53 |
2 | 53.06 | 51.39 | 三十五 | 65 |
3 | 53.48 | 50.68 | 50.69 | 47.64 |
1 | 53.48 | 47.64 | 50.68 | 50.69 |
0 | 47.64 | 53.48 | 50.68 | 50.69 |
0
|
使用旧函数数组公式并向下拖动:
=COLUMN(INDEX($A1:$D1,0,MATCH(0, IF($A1:$D1>50,1,0),0 )))-1
或更简单
=MATCH(0, IF($A1:$D1>50,1,0),0 )-1
第一个值在 A 列。如果不是,请根据第一个数据列编号值修正减去的值。
如果所有值都可能大于,则50
使用这个高级公式:
=IFERROR(MATCH(0, IF($A1:$D1>50,1,0),0 )-1,COLUMNS($A1:$D1))
2
-
如果整个范围大于 50,此公式也会抛出错误。否则给出正确的 o/p。
– -
请参阅编辑后的公式。
–
|
公式为A2
:
=LEN(TEXTSPLIT(BYROW(N(B2:G5<50),CONCAT),1))
或者:
=FIND(1,BYROW(N(B2:G5<50),CONCAT)&1)-1
|
编辑:最后一个公式不起作用FREQUENCY()
,更新了一个更好的版本并参考最后一个例子
=XMATCH(0,HSTACK(SCAN(0,B2:G2>=50,LAMBDA(x,y,y*(x+1))),0))-1
5
-
1此公式可计算出值 >50 的连续单元格的最大数量。例如,在第一行,o/p 应为 1。但如果在 10 月 22 日和 10 月 21 日还有 2 个值 >50,则公式将计算出 o/p 为 2。
– -
@user3471438 完美,我以为现在才编辑。
– -
好的……这有效。但随机性很强。大约 50% 的情况给出 #N/A o/p。有什么想法吗?
– -
@user3471438 我怎么知道你有什么,我不能简单地假设,当你编辑的时候我已经提出了我的解决方案。难道它不应该是
>=50
你的帖子所描述的那样,>50
因为两者是不同的。
–
-
1找到原因了。如果整个范围 >50,则会出现错误。否则计数正常。
–
|
您可以使用BYROW
和SCAN
:
=BYROW(SCAN(0,A1:D4,LAMBDA(a,b,IF(b>50,a+1,a*0))),LAMBDA(y,MAX(y)))
1
-
3这也使 o/p 作为连续单元格值的最高计数 >50。所需的 o/p 仅从左侧连续计数。
–
|
与@Black Cat 的逻辑相同,只需找到第一个小于 50 的条目:
=BYROW(B2:G7,LAMBDA(r,XMATCH(TRUE,HSTACK(r,0)<50)-1))
顺便说一句,您可以让 Frequency 工作,这是使用旧版 Excel 的一种方式。通常,结果位于频率数组的第一个元素中,但是当一行中的所有单元格都大于或等于 50 时,总计数位于数组的第二个元素中。您可以这样做:
=INDEX(FREQUENCY(IF(B2:G2>=50,COLUMN(B2:G2)),IF(B2:G2<50,COLUMN(B2:G2))),1+AND(B2:G2>=50))
2
-
2只是为了好玩:
=BYROW(B2:G5,LAMBDA(r,XMATCH("^[1-4]?\d$",r,3)))
。
–
-
1我不知道你可以在 xmatch 中使用模式匹配…好吧,公平地说,这是最近才有的。
–
|
=BYROW(B2:G5,LAMBDA(r, XMATCH(TRUE,r<50)-1))
|
>=50
因为如果只有>50
第二个应该是 1 而不是 3,你就不会修复它或澄清同样的事情–
–
–
|