【问题标题】:Arrayformula to number blank cells between non-blank ones from 0 to nArrayformula 将非空白单元格之间的空白单元格编号从 0 到 n
【发布时间】:2019-06-21 14:26:54
【问题描述】:

我想检查一个数组/行,

  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是应用的函数。

【问题讨论】:

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


    【解决方案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 将所有负数更改为“”

    【讨论】:

      【解决方案2】:
      =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, ))
      

      【讨论】:

        猜你喜欢
        • 2020-02-03
        • 2021-03-08
        • 1970-01-01
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 2019-03-27
        • 2017-01-19
        • 1970-01-01
        相关资源
        最近更新 更多