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

Excel VBA如何复制每行最后一列的值(兼容行内存在空单元格场景)

问题原因

你原有代码的问题在于使用Range("a" & i).End(xlToRight)定位行末非空单元格,该方法从A列向右遍历,遇到第一个空单元格就会停止,因此行内存在空值时无法定位到真正的最右侧非空单元格。

调整后代码
Dim lastrow As Long, i As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 2 To lastrow
    ' 从当前行最右侧列向左查找最后一个非空单元格,直接赋值给A列对应行
    Range("A" & i).Value = Cells(i, Columns.Count).End(xlToLeft).Value
Next i
代码说明
  • 核心定位逻辑改为从工作表最大列向左查找非空单元格:Cells(i, Columns.Count).End(xlToLeft),无论行中间是否存在空单元格,都能准确识别到该行最后一个有内容的单元格
  • 直接赋值替代复制粘贴操作,执行效率更高,也无需额外处理剪切板状态
  • 完全适配你提到的A2取D2值、A3取C3值的需求场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 21:24:00