You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中结合IFNA实现仅非空单元格递增

问题描述

我找到过一个非空单元格递增的解决办法,但不知道怎么让它在用IFNA返回空值的列里生效。

示例表格

内容递增数提取值目标递增数提取值
1Test ONE and only.1ONE1ONE
22
2Test TWO and only.3TWO3TWO
44
3Test THREE and only.5THREE5THREE
66
4Test FOUR and only.7FOUR7FOUR
88
99
1010
5Test FIVE and only.11FIVE11FIVE
1212

当前使用的公式

正常生效的递增公式(A列、D列)

针对B列的递增公式(A1单元格):

=arrayformula( 
  iferror( 
    countifs(row(B1:B), "<=" & row(B1:B), B1:B, "<>") 
    / 
    not(isblank(B1:B)) 
  ) 
)

针对E列的递增公式(D1单元格):

=arrayformula( 
  iferror( 
    countifs(row(E1:E), "<=" & row(E1:E), E1:E, "<>") 
    / 
    not(isblank(E1:E)) 
  ) 
)

生成提取值的公式(用IFNA返回空值)

=IFNA(ArrayFormula(REGEXEXTRACT(B1:B,"\b([A-Z]{2,})+(?:\s+[A-Z]+)*\b")),"")

尝试过但无效的方案(G1:H12区域)

G列递增公式

=IFNA(arrayformula( 
  iferror( 
    countifs(row(H1:H), "<=" & row(H1:H), H1:H, "<>") 
    / 
    not(isblank(H1:H)) 
  ) 
),"")

H列提取值公式

=IFNA(ArrayFormula(REGEXEXTRACT(E1:E,"\b([A-Z]{2,})+(?:\s+[A-Z]+)*\b")),"")

解决方案

问题核心是isblank()无法识别IFNA返回的空字符串("")——它只对真正的空白单元格返回TRUE,空字符串属于非空白内容。把判断条件改成H1:H=""即可解决:

修改后的G列递增公式:

=ARRAYFORMULA(
  IF(
    H1:H="",
    "",
    COUNTIFS(ROW(H1:H), "<="&ROW(H1:H), H1:H, "<>")
  )
)

或者更简洁的版本:

=ARRAYFORMULA(
  IFERROR(
    COUNTIFS(ROW(H1:H), "<="&ROW(H1:H), H1:H, "<>")
    /
    (H1:H<>"")
  )
)

原理说明:

  • 用H1:H<>""替代not(isblank(H1:H)),能正确识别IFNA返回的空字符串;
  • 当H列为空字符串时,(H1:H<>"")返回FALSE,除以FALSE会触发错误,IFERROR会自动把错误转为空值;或者用IF直接判断,为空时返回空,否则计算递增数。

内容的提问来源于stack exchange,提问作者Lod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:15:59