Excel如何使用公式用每行最后非空值填充最后一列空白单元格
Excel 行末尾空白单元格填充解决方案
前提说明
假设你需要填充的目标最后一列是F列,前面的数据列范围为A-E列,数据从第2行开始(第1行为表头),你可以根据自己的实际表格调整对应列号、行号参数。
需求示例图:
方法1:公式+辅助列(全Excel版本通用)
直接在原目标列写公式会触发循环引用,推荐用辅助列过渡操作:
- 右键点击目标最后一列的列标,选择「插入」,在右侧新增空白辅助列
- 在辅助列第2行(对应数据第一行)输入公式:
=IF(F2<>"",F2,LOOKUP(2,1/(A2:E2<>""),A2:E2))
注:公式里的F2是目标列对应行的单元格,A2:E2是目标列左侧的所有数据列范围,可根据实际情况替换 - 按住单元格右下角的填充柄向下拉,覆盖所有数据行
- 选中整个辅助列,按
Ctrl+C复制,右键点击目标最后一列的第一个数据单元格,选择「粘贴选项-值」 - 删除辅助列即可完成操作,原有目标列的已有值不会被修改
方法2:VBA宏(直接操作原列,无需辅助列)
如果需要频繁处理这类需求,可以用VBA一键完成:
- 按
Alt+F11打开VBA编辑器,点击「插入-模块」 - 在编辑框粘贴以下代码:
Sub 填充最后一列空白() Dim lastRow As Long, i As Long, lastCol As Long ' 下方targetCol参数修改为你实际目标最后一列的列号,A=1、B=2,以此类推,此处示例为F列即6 Const targetCol = 6 ' 下方2为数据起始行,若表头占2行就改成3 Const startRow = 2 lastRow = Cells(Rows.Count, targetCol).End(xlUp).Row For i = startRow To lastRow If Cells(i, targetCol) = "" Then lastCol = Cells(i, Columns.Count).End(xlToLeft).Column Cells(i, targetCol) = Cells(i, lastCol) End If Next i End Sub
- 修改代码里的targetCol、startRow参数适配你的表格,按F5运行即可直接完成填充
内容的提问来源于stack exchange,提问作者Anthony Cutajar
相关产品推荐
相关产品推荐

