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

非循环VBA实现Excel N列固定数字前置拼接递增序列填充

VBA无循环填充指定区域实现方案

需求说明

现有如下预定义变量:

Code = "XYZ123"
First = 13
Last = 27

需要填充工作表N列中从First行到Last行的单元格,填充值拼接规则:

  • 取Code字符串第5位字符(示例值为'2')
  • 拼接Code字符串第4位字符(示例值为'1')
  • 拼接Code字符串第6位字符(示例值为'3')
  • 拼接从1开始、长度为Last - First + 1的连续递增序列

预期输出效果:

N13: 2131
N14: 2132
N15: 2133
...
N27: 21315

实现要求:不允许使用For循环遍历单元格。

实现代码

Sub FillTargetRange()
    Dim Code As String, First As Long, Last As Long
    Code = "XYZ123"
    First = 13
    Last = 27
    
    ' 提取固定前缀
    Dim fillPrefix As String
    fillPrefix = Mid(Code, 5, 1) & Mid(Code, 4, 1) & Mid(Code, 6, 1)
    
    ' 数组计算一次性写入,无任何循环逻辑
    With Range("N" & First & ":N" & Last)
        .Value = Evaluate("=""" & fillPrefix & """&ROW(" & First & ":" & Last & ")-" & First - 1)
    End With
End Sub

逻辑说明

  • 提前提取拼接规则中固定不变的3位字符前缀,避免重复计算
  • 借助Evaluate函数直接生成和目标区域尺寸一致的一维数组:通过ROW(行号区间)生成连续行号序列,减去偏移量First-1后得到从1开始的递增序列,和前缀拼接后直接一次性赋值给目标单元格区域
  • 代码执行效率远高于循环遍历写法,运行结果完全匹配预期:N13单元格值为2131,逐行递增到N27单元格值为21315

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:34:02