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

如何用VBA在Excel两列生成1-26的顺序数字组合?

嘿,我懂你这种不想重复劳动的心情!手动一个个设置Range区域确实太折磨人了,这里有几个高效的方案,帮你轻松生成1到26的所有组合:

方案一:用VBA数组批量写入(最推荐,效率最高)

这种方法先在内存里生成数据数组,再一次性写入Excel单元格,大幅减少了VBA和Excel界面的交互次数,速度快得飞起,数据量越大优势越明显:

Sub GenerateAllCombinations()
    Dim totalRows As Long
    Dim i As Long, j As Long
    Dim arr As Variant
    
    totalRows = 26 * 26 ' 1到26的全组合共676行
    ReDim arr(1 To totalRows, 1 To 2) ' 定义对应A、B列的二维数组
    
    ' 填充数组内容
    For i = 1 To 26
        For j = 1 To 26
            arr((i - 1) * 26 + j, 1) = i ' A列:每个数字重复26次
            arr((i - 1) * 26 + j, 2) = j ' B列:循环1到26
        Next j
    Next i
    
    ' 一次性把数组写入工作表
    Range("A1:B" & totalRows).Value = arr
End Sub
方案二:改进你提到的DataSeries方法

如果你想沿用DataSeries的思路,我们可以分步骤定制A、B列的序列:

  • A列需要每个数字重复26次,用Step:=0固定值,设置Count:=26生成重复项
  • B列先生成1到26的基础序列,再复制25次实现循环效果
Sub GenerateWithDataSeries()
    Dim i As Long
    Dim startRow As Long
    
    ' 生成A列:每个数字重复26次
    startRow = 1
    For i = 1 To 26
        Range("A" & startRow).Value = i
        ' Step:=0 表示不递增,Count:=26 表示生成26个重复值
        Range("A" & startRow).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=0, Count:=26
        startRow = startRow + 26
    Next i
    
    ' 生成B列:1到26循环26次
    Range("B1:B26").DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=26
    Range("B1:B26").Copy Range("B27:B676")
End Sub
额外小技巧:不用VBA,用Excel公式快速生成

如果你不想写代码,直接用公式也能搞定:

  • 在A1单元格输入:=INT((ROW()-1)/26)+1
  • 在B1单元格输入:=MOD(ROW()-1,26)+1
  • 选中A1:B1,下拉填充到第676行,就能得到你要的组合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:55:22