excel - 重复范围第 N 次

标签 excel vba

我正在尝试设计一种代码,使我能够重复某个范围(一列)以重复 N 次。这是我的尝试(并且它正在工作),但如果可能的话,我需要您的想法来改进代码

Sub Test()
    Const N As Integer = 3
    Dim a, i As Long, ii As Long, k As Long
    a = ActiveSheet.Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Value
    ReDim b(1 To UBound(a, 1) * N, 1 To 1)
    For i = 1 To N
        For ii = LBound(a, 1) To UBound(a, 1)
            k = k + 1
            b(k, 1) = a(ii, 1)
        Next ii
    Next i
    Range("C1").Resize(UBound(b, 1), UBound(b, 2)).Value = b
End Sub

最佳答案

我也会这样做......

Sub Test()
    Dim a, c&, i&, k&
    
    Const n& = 3
    
    a = [a1].Resize(Cells(Rows.Count, 1).End(xlUp).Row)
        ReDim b(1 To n * UBound(a), 1 To 1)
        
        For k = 1 To n
            For i = 1 To UBound(a)
                c = c + 1
                b(c, 1) = a(i, 1)
            Next
        Next
    [c1].Resize(UBound(b)) = b
    
End Sub

但是最好将其做成一个封装的过程...

Sub Test()
    CloneRange [a1], [c1], 3
End Sub

Sub CloneRange(rSrc As Range, rDst As Range, Optional n& = 1)
    Dim a, c&, i&, k&        
    a = rSrc.Resize(Cells(Rows.Count, 1).End(xlUp).Row)
        ReDim b(1 To n * UBound(a), 1 To 1)
        For k = 1 To n
            For i = 1 To UBound(a)
                c = c + 1
                b(c, 1) = a(i, 1)
            Next
        Next
    rDst.Resize(UBound(b)) = b
End Sub

关于excel - 重复范围第 N 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72103854/

相关文章:

excel - 我可以在Excel的自定义状态栏中添加自己的函数吗?

excel - 如何在 Microsoft Access 表单上使用网络摄像头捕获?

string - Excel VBA - 从单元格中删除单个字符而不丢失剩余单元格内容的格式

c# - 一些 Excel 单元格保持未填充状态,使用 C#

excel - 为什么我用 Excel 的 "Data Connection"导入时缺少一些表头数据

excel - VBA左函数问题

Excel VBA 将数据写入类模块中的字典

vba - Excel VBA : Get Last Cell Containing Data within Selected Range

excel - 使用宏或添加项覆盖内置 Excel 函数

excel - 保存导入/导出规范 '' 时出错