【问题标题】:Count consecutive blank cells between non-blank cells in a column计算列中非空白单元格之间的连续空白单元格
【发布时间】:2020-02-03 20:37:10
【问题描述】:

我正在尝试计算列中两个非空白单元格之间的空白单元格的数量。特别是这两个日期之间的两个日期和日期。

我已经尝试过COUNTBLANK 以及我在此处和其他类似网站上找到的各种其他公式,但我要么修改错误,要么根本不是我想要的。

My sample worksheet

【问题讨论】:

    标签: google-sheets count google-sheets-formula array-formulas gs-vlookup


    【解决方案1】:

    连续重置计数如下:

    =ARRAYFORMULA(IF(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)="", MMULT(N(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))>=TRANSPOSE(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)=""))-HLOOKUP(0, MMULT(N(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))>TRANSPOSE(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)="")), MATCH(VLOOKUP(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)<>G1:G), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), VLOOKUP(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)<>G1:G), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), 0), 0), ))
    


    更新:

    =ARRAYFORMULA(QUERY(IF(iF(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)="", MMULT(N(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))>=TRANSPOSE(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)=""))-HLOOKUP(0, MMULT(N(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))>TRANSPOSE(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)="")), MATCH(VLOOKUP(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)<>G1:G), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), VLOOKUP(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)<>G1:G), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), 0), 0), )=1, ARRAY_CONSTRAIN(SORT({IF(INDEX(SORT({
     INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)="", MMULT(N(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))>=TRANSPOSE(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(INDEX(SORT({
     INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)=""))-HLOOKUP(0, MMULT(N(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))>TRANSPOSE(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(INDEX(SORT({
     INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)="")), MATCH(VLOOKUP(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(INDEX(SORT({
     INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)<>{"×"; INDEX(SORT({
     INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)}), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), VLOOKUP(ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(INDEX(SORT({
     INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)<>{"×"; INDEX(SORT({
     INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)}), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), 0), 0), ), ROW(
     INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0), 999^99, 1), ), "offset 1", 0))
    

    【讨论】:

    • 非常感谢您的回答!是否可以将其反转,使其倒计时而不是倒计时?所以 H9 会是 3?
    • 很可能没有。但是,如果您对可拖动的解决方案感兴趣,它可以完成并且看起来完全像您想要的那样。
    • @Trey 没关系,一切皆有可能。答案已更新
    【解决方案2】:

    除了player0提供的解决方案外,我创建了一个额外的表并输入到单元格I2中

    =ArrayFormula(if(len(G2:G), iferror(vlookup(G2:G, query({if(row(G2:G) <= max(if(not(isblank(F2:F)), row(G2:G))),vlookup(row(G2:G),filter({row(G2:G),G2:G},len(G2:G)),2),), --isblank(G2:G)}, "Select Col1, Sum(Col2) where Col2 > 0 group by Col1"), 2, 0)),))
    

    看看有没有用?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多