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

Excel技术需求:查找行内最后非空单元格后的首个空单元格

在Excel中定位某行最后一个非空单元格后的首个空单元格

嘿,刚好之前帮朋友解决过一模一样的需求!不管行首有没有空单元格,都能精准找到目标位置,给你俩实用的解法,按需选就行:

一、公式解法(无需代码,直接用)

1. 通用公式(兼容所有Excel版本)

这个公式不管你是新的365/2021还是旧版Excel都能用,直接就能拿到目标单元格的列号:
=LOOKUP(2,1/(ROW_NUMBER:ROW_NUMBER<>""),COLUMN(ROW_NUMBER:ROW_NUMBER))+1
把里面的ROW_NUMBER换成你要查的行号就行,比如查第20行就是:
=LOOKUP(2,1/(20:20<>""),COLUMN(20:20))+1

要是想直接拿到单元格的地址(比如E20),就用这个:
=ADDRESS(20,LOOKUP(2,1/(20:20<>""),COLUMN(20:20))+1)

原理简单说下:

  • 20:20<>""会生成一个数组,非空单元格对应TRUE,空单元格对应FALSE
  • 1/(...)把TRUE转成1,FALSE转成错误值(因为1除以0会报错)
  • LOOKUP(2, ...)会在数组里找最靠近2的有效值,也就是最后一个1,对应最后一个非空单元格的列号,加1就是后面第一个空单元格的列啦!

举你的例子:第20行最后一个非空在D20(列4),公式返回4+1=5,对应E20;第21行最后一个非空在B21(列2),返回3,对应C21,完美匹配需求。

2. Excel 365/2021专属简化版

如果你的Excel支持动态数组,还可以用更简洁的XLOOKUP写法:
列号公式:
=XLOOKUP(TRUE,ISBLANK(20:20),COLUMN(20:20),,1,ROW(INDIRECT("1:"&COLUMNS(20:20))))
这个是从后往前找第一个空单元格,刚好就是最后一个非空之后的那个空,效果和上面的公式一样,看你习惯用哪个。

二、VBA解法(适合批量/自动化)

要是需要批量处理好多行,或者想做成自定义函数一键调用,VBA就很方便了:

按Alt+F11打开VBA编辑器,插入一个新模块,粘贴这段代码:

Function NextEmptyCell(rowNum As Long) As String
    ' 找到该行最后一个非空单元格的列号
    Dim lastNonEmptyCol As Long
    lastNonEmptyCol = Cells(rowNum, Columns.Count).End(xlToLeft).Column
    ' 返回下一个空单元格的地址
    NextEmptyCell = Cells(rowNum, lastNonEmptyCol + 1).Address
End Function

回到Excel里,直接输入=NextEmptyCell(20)就能得到E20的地址,输入=NextEmptyCell(21)就得到C21,超省心!

小提醒

  • 如果整行全是空的,公式和VBA都会返回A列的地址,这是合理的(毕竟第一个空单元格就是A列)
  • 如果该行最后一个单元格(XFD列)是非空的,那公式会返回超出范围的列号,Excel会报错,使用的时候注意这种极端情况就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:00:48