ArrayFormula可以对非空白单元格之间的空白单元格进行编号,范围从0到n

时间:2019-06-21 14:26:54

标签: if-statement google-sheets google-sheets-formula array-formulas gs-vlookup

我要检查一个数组/行,

  1. 忽略非空白单元格(设置为""),

  2. 将空单元格从0编号为n,

  3. 如果找到下一个非空白单元格,则将数字重置为0。

  4. 在最后一个单元格停止

所以,它看起来像这样:

        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 是要应用的功能。

2 个答案:

答案 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将所有负数更改为“”

答案 1 :(得分:0)

=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, ))

0

相关问题