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

VBA如何实现输入数值后输出0到该数值区间内偶数重复两次的数组

VBA宏修改方案

核心调整逻辑

新增独立的列位置计数器,遍历0到输入值的所有数字时,判断数字奇偶性:偶数连续写入2次,奇数写入1次,每次写入后列位置自增1即可。

修改后可直接运行的代码

Sub Macro3()
    Dim inputVal As Long
    Dim currentNum As Long
    Dim colOffset As Long
    ' 读取Sheet1的B1单元格输入的最大值
    inputVal = Worksheets("Sheet1").Cells(1, 2).Value
    ' 初始化输出起始列:默认从第2列(B列)开始输出,可按需修改
    colOffset = 2
    For currentNum = 0 To inputVal
        ' 写入当前数字
        Cells(2, colOffset).Value = currentNum
        colOffset = colOffset + 1
        ' 偶数额外再写入一次
        If currentNum Mod 2 = 0 Then
            Cells(2, colOffset).Value = currentNum
            colOffset = colOffset + 1
        End If
    Next
End Sub

优化版本(数组存储后一次性写入,性能更好,适合大数值输入场景)

Sub Macro3_Optimized()
    Dim inputVal As Long
    Dim resultArr As Variant
    Dim currentNum As Long
    Dim arrIndex As Long
    inputVal = Worksheets("Sheet1").Cells(1, 2).Value
    ' 预计算数组长度:偶数数量*2 + 奇数数量*1 = (inputVal\2 +1)*2 + (inputVal - inputVal\2)
    ReDim resultArr(1 To (inputVal \ 2 + 1) * 2 + (inputVal - inputVal \ 2))
    arrIndex = 1
    For currentNum = 0 To inputVal
        resultArr(arrIndex) = currentNum
        arrIndex = arrIndex + 1
        If currentNum Mod 2 = 0 Then
            resultArr(arrIndex) = currentNum
            arrIndex = arrIndex + 1
        End If
    Next
    ' 一次性输出到第2行,从B列开始的区域
    Cells(2, 2).Resize(1, UBound(resultArr)).Value = resultArr
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:06:03