excel 我正在寻找一个公式,计算单元格之间的行数与数字1在

f87krz0w  于 2023-05-30  发布在  其他
关注(0)|答案(3)|浏览(173)

我有下表:

我在B4列中有以下公式

=IF(A4="","",MATCH(TRUE,INDEX(ISNUMBER(A5:A1872),,),0))

该公式计算列A中数字1之间的空白行的数量。
我想要的公式是一个把我的数字像在Column C即一步下来。B12中的4应该在B16中。B16中的2应该在B18中,依此类推。
谁来帮帮忙我有Excel 2021吗?
我在Excel 2021中没有DROP()函数

vyu0f0g1

vyu0f0g11#

基于@DavidLeal提供的第一个答案,尽管有些简化:

=LET(
    ζ,A1:A12,
    ξ,ROW(ζ),
    IF(ζ=1,1+DROP(FREQUENCY(IF(ζ="",ξ),IF(ζ<>"",ξ,0)),-1),"")
)
ijxebb2r

ijxebb2r2#

不如这样:

=LET(a,A4:A1872,
     b,ROW(a)*a,
     m,MMULT(--(TOROW(b)<b)*(TOROW(b)<>0),SEQUENCE(ROWS(b),,1,0)),
     x,TOCOL(IF(ISERR(1/b),NA(),b),3),
IF(b,b-INDEX(x,m),""))

这将从当前行中提取先前找到的值的行号。)这意味着第一个值将显示0。)

8hhllhi2

8hhllhi23#

假设您正在计算空白行的数量加一,就像在示例中一样。无论起始值是什么,以下都可以工作,它可以是1或空白。如果空白单元格是由公式创建的,也可以使用此方法,例如:=""。此答案假设 * 根据问题中列出的标记 公式1*),没有Excel版本限制。

=LET(A, A1:A15, seq, SEQUENCE(ROWS(A)),
 freq, DROP(FREQUENCY(IF(A="",seq), IF(A<>"",seq)),-1),
 f,FILTER(seq,A<>""), MAP(seq,LAMBDA(s,XLOOKUP(s,f,freq+1,""))))

这里的另一种方法是使用SCAN来计数每组中的空白,然后调用MAP来找到每组的最大计数,即如果计数(c)为零,则取前一个元素。处理第一个1在开始时的情况,在这种情况下INDEX(c,-1)产生错误,因此IFERROR返回1(* 公式2*):

=LET(A,A1:A15, seq,SEQUENCE(ROWS(A)), c,SCAN(0,A,LAMBDA(ac,x,IF(x="",ac+1,0))),
 MAP(seq,LAMBDA(s,IF(INDEX(c,s,1)=0,IFERROR(INDEX(c,IF(s=1,0,s)-1)+1,1),""))))

下面是 * 公式1* 的输出:

  • 公式1* 的主要思想是使用FREQUENCY进行计数。想法取自这里:Occurrence in an excel serie,来自@JosWoolley的回答和对他的信任。我们删除freq的最后一个值,因为它是最后一个bin(开放间隔)。我们将有与输入中的1一样多的频率值。现在使用MAP遍历索引位置(seq),并使用XLOOKUP查找特定的索引位置(f1的索引位置),并返回相应的频率(freq)加上1。如果没有找到索引位置,则意味着它是一个空行,因此我们返回一个空字符串。

相关问题