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

求助:如何用VBA实现列间依次填充1-10、11-20等差序列

VBA按列填充连续数值解决方案

问题根源

你的代码有两个核心问题:

  • 循环顺序错误:原代码是先遍历行、再遍历列,导致会先填满第一行1-10,第二行11-20,和你要的「先列后行」填充逻辑不符。
  • LR/LC的初始化逻辑无效:工作表初始为空时,Cells(Rows.Count,1).End(xlUp).Row会返回1,用它作为循环范围只会填充1行,这也是你替换后只输出第一列的原因。

修正后的代码

Sub counter()
    Dim R As Integer
    Dim C As Integer
    Dim T As Integer
    
    T = 1
    
    ' 先遍历列(这里填2列,可按需修改)
    For C = 1 To 2
        ' 再遍历每列的10行
        For R = 1 To 10
            Cells(R, C).Value = T
            T = T + 1
        Next R
    Next C
End Sub

关键修改说明

  • 调换循环层级:外层循环列、内层循环行,确保每列先填满1-10(第一列)、11-20(第二列),完全匹配你的需求。
  • 移除无效的LR/LC变量:因为你是主动填充固定数量的行和列,不需要依赖工作表已有数据的行/列数。如果后续需要动态填充更多列,只需把For C = 1 To 2中的2改成你需要的列数即可。

可选:动态从空白列开始填充

如果需要从工作表最后一列的下一列开始填充(比如已有数据,要追加列),可以调整代码如下:

Sub counterDynamic()
    Dim R As Integer
    Dim C As Integer
    Dim T As Integer
    Dim StartCol As Integer
    
    ' 获取最后一列的下一列作为起始列
    StartCol = Cells(1, Columns.Count).End(xlToLeft).Column + 1
    T = 1
    
    ' 填充2列,每列10行
    For C = StartCol To StartCol + 1
        For R = 1 To 10
            Cells(R, C).Value = T
            T = T + 1
        Next R
    Next C
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:38:12