Arrayformula 对非空白单元格之间的空白单元格进行编号,从 0 到 n
Arrayformula to number blank cells between non-blank ones from 0 to n
我想检查一个 array/row,
忽略非空白单元格(设置为""
),
从 0 到 n 对空单元格进行编号,
如果找到下一个非空白单元格,则将数字重置为 0。
停在最后一个单元格
所以,它看起来像这样:
A B
0 APPLE
1 0
2 1
3 BANANA
4 0
5 1
6 2
7 CHERRY
8 DURIAN
9 0
10 EGG
A是原来的,B是应用的函数。
=ARRAYFORMULA(IF(INDIRECT("A2:A"&MAX(IF(A:A<>"", ROW(A:A), )))="",
MMULT(N(ROW(A2:A)>=TRANSPOSE(ROW(A2:A))), N(A2:A=""))-
HLOOKUP(0, MMULT(N(ROW(A2:A)>TRANSPOSE(ROW(A2:A))), N(A2:A="")), MATCH(
VLOOKUP(ROW(A2:A), IF(N(A2:A<>A1:A), ROW(A2:A), ), 1, 1),
VLOOKUP(ROW(A2:A), IF(N(A2:A<>A1:A), ROW(A2:A), ), 1, 1), 0), 0)-1, ))
=ARRAYFORMULA(TEXT(ROW(A1:A11)-MATCH(ROW(A1:A11),IF(A1:A11<>"",ROW(A1:A11),),1)-1,"[<0];0"))
IF
将所有非空白行更改为其对应的行号 1,,,4,,,,...
MATCH
使用近似匹配 1,1,1,4,4,4,4,...
获取所有先前的行号
- 从上面的数组对应的行号中减去 1
-1,0,1,-1,0,1,2,3,...
TEXT
将所有负数更改为“”
我想检查一个 array/row,
忽略非空白单元格(设置为
""
),从 0 到 n 对空单元格进行编号,
如果找到下一个非空白单元格,则将数字重置为 0。
停在最后一个单元格
所以,它看起来像这样:
A B
0 APPLE
1 0
2 1
3 BANANA
4 0
5 1
6 2
7 CHERRY
8 DURIAN
9 0
10 EGG
A是原来的,B是应用的函数。
=ARRAYFORMULA(IF(INDIRECT("A2:A"&MAX(IF(A:A<>"", ROW(A:A), )))="",
MMULT(N(ROW(A2:A)>=TRANSPOSE(ROW(A2:A))), N(A2:A=""))-
HLOOKUP(0, MMULT(N(ROW(A2:A)>TRANSPOSE(ROW(A2:A))), N(A2:A="")), MATCH(
VLOOKUP(ROW(A2:A), IF(N(A2:A<>A1:A), ROW(A2:A), ), 1, 1),
VLOOKUP(ROW(A2:A), IF(N(A2:A<>A1:A), ROW(A2:A), ), 1, 1), 0), 0)-1, ))
=ARRAYFORMULA(TEXT(ROW(A1:A11)-MATCH(ROW(A1:A11),IF(A1:A11<>"",ROW(A1:A11),),1)-1,"[<0];0"))
IF
将所有非空白行更改为其对应的行号1,,,4,,,,...
MATCH
使用近似匹配1,1,1,4,4,4,4,...
获取所有先前的行号
- 从上面的数组对应的行号中减去 1
-1,0,1,-1,0,1,2,3,...
TEXT
将所有负数更改为“”