You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Excel/Google Sheets公式获取最后一列列标并应用于SUM函数?

我太懂这种每次加新列就要手动改公式的烦躁了!刚好之前做报表时也解决过这个问题,下面分别给你说Excel和Google Sheets的具体实现方法,两种工具的思路类似但细节有差异:

Excel 动态引用最后一列

方法1:直接用INDEX构建动态区域(推荐,非易失性)

如果只是要在SUM里引用从J4到最后一列的同一行单元格,不用特意转成列标,直接用INDEX定位最后一列的单元格就行,公式写起来更简洁还不会卡顿:

=SUM(J4:INDEX(4:4,1,MAX(COLUMN(1:1)*(1:1<>""))))

解释下各部分:

  • MAX(COLUMN(1:1)*(1:1<>"")):找到第一行最后一个非空单元格的列号(就算表头有空单元格也能精准定位)
  • INDEX(4:4,1,列号):定位到第4行对应列号的单元格
  • 把J4和这个INDEX结果连起来,就是你要的动态区域

方法2:先获取列标再用INDIRECT拼接(适合必须用列标的场景)

如果确实需要单独拿到最后一列的列标(比如要用到其他地方),可以用这个公式提取列标:

=SUBSTITUTE(ADDRESS(1,MAX(COLUMN(1:1)*(1:1<>""))),4),"1","")

然后要用到SUM里的话,用INDIRECT把字符串转成单元格引用:

=SUM(INDIRECT("J4:"&SUBSTITUTE(ADDRESS(1,MAX(COLUMN(1:1)*(1:1<>""))),4),"1","")&"4")

⚠️ 注意:INDIRECT是易失性函数,表格数据多的话可能会变慢,优先用方法1。

Google Sheets 动态引用最后一列

Google Sheets的逻辑和Excel差不多,函数写法稍有不同:

方法1:INDEX构建动态区域(推荐)

同样不用转列标,直接写SUM公式:

=SUM(J4:INDEX(4:4,MAX(COLUMN(1:1)*(1:1<>""))))

方法2:提取列标再拼接

提取列标的公式可以更简洁,用正则提取字母部分:

=REGEXEXTRACT(ADDRESS(1,MAX(COLUMN(1:1)*(1:1<>""))),4),"[A-Z]+")

然后用INDIRECT整合到SUM里:

=SUM(INDIRECT("J4:"&REGEXEXTRACT(ADDRESS(1,MAX(COLUMN(1:1)*(1:1<>""))),4),"[A-Z]+")&"4")

通用注意事项

  • 如果你表格的表头不在第一行,把公式里的1:1改成表头所在的行号(比如表头在第2行就改成2:2
  • 如果是要引用整列(比如从J列到最后一列的所有行),把行号改成整列引用,比如Excel里=SUM(J:INDEX(A:XFD,MAX(COLUMN(1:1)*(1:1<>""))))(XFD是Excel最大列)

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

火山引擎 最新活动