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

VBA中如何编写For循环实现A列取值为B列[i-1]行值

VBA循环实现A列取B列上一行值的实现代码

VBA中工作表行号默认从1开始计数,不存在行号为0的行,你提到的for i from 0 to 4 (i++)循环逻辑需要适配Excel的行号规则,即可实现A列目标行赋值为B列对应上一行值的效果,可直接运行的代码如下:

Sub FillColumnAFromBPrevRow()
    Dim ws As Worksheet
    Dim i As Long
    ' 绑定需要处理的工作表,可替换为指定工作表:Set ws = ThisWorkbook.Worksheets("你的工作表名称")
    Set ws = ActiveSheet
    
    ' 固定遍历范围:对应i从0到4的逻辑,从第2行遍历到第5行(第1行无上一行B列数据,默认留空)
    ' 如果需要处理更多行,修改循环结束值即可
    For i = 2 To 5
        ' A列当前行赋值为B列上一行的值
        ws.Cells(i, "A").Value = ws.Cells(i - 1, "B").Value
    Next i
End Sub

扩展使用说明

  • 如果你的表格第一行是表头,无需额外调整代码,第一行A列会保留原有表头内容不受影响
  • 如果需要自动识别B列数据范围、无需手动修改行号,可以将固定循环的代码替换为以下动态遍历逻辑,会自动识别B列最后一行有数据的位置完成赋值:
' 自动获取B列最后一个非空单元格的行号
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
' 从第2行遍历到B列最后一行
For i = 2 To lastRow
    ws.Cells(i, "A").Value = ws.Cells(i - 1, "B").Value
Next i
  • 运行宏之前建议先备份原文件,避免误操作导致数据改动无法回退

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 19:29:01