【问题标题】:Excel VBA_Copy the first 2 or 3 columns and insert at every 3 or 4 column intervalsExcel VBA_复制前 2 或 3 列并以每 3 或 4 列间隔插入
【发布时间】:2020-01-17 15:44:15
【问题描述】:

几天来,我一直在努力使用来自各种项目的代码片段,但似乎没有一个对我有用。我想复制前 2 到 3 列并将它们每隔 3 到 4 列插入到右侧。看起来很简单,但我不知道我在做什么!

任何帮助都将不胜感激,因为我有大量数据可以做到这一点。谢谢。

这是我目前所拥有的:

Sub Copy_Insert()

Range("A1:C1").EntireColumn.Select
Range("A:C").Copy
Range("A:C").Insert Shift:=xlRight

End Sub

【问题讨论】:

    标签: excel vba insert copy offset


    【解决方案1】:

    首先:不要在 VBA 中使用Select。它很少需要并且需要时间。

    如果我理解正确,您想将 A:C 列的内容复制到 D:F、G:I、J:L?

    你可以使用:

    Application.ScreenUpdating = False
    
    extraPairs = 3
    
    For i = 1 To extraPairs
        lastColumn = i * 3
    
        Columns(1).Copy Columns(lastColumn + 1)
        Columns(2).Copy Columns(lastColumn + 2)
        Columns(3).Copy Columns(lastColumn + 3)
    Next
    
    Application.ScreenUpdating = True
    

    【讨论】:

    • 感谢您的帮助 Jannick,我需要它做的是复制 A:C 并每 3 列插入一次。有 200 列,每 3 列,我需要插入 A:C
    • 你试过这个代码吗?您可以将extraPairs 更改为 67 (200/3)?它对我有用。
    • 我试过了,但它没有插入,它正在复制数据。我将在上面的问题中添加我以前使用的内容
    【解决方案2】:

    这个选项不漂亮,需要一段时间,但这是我最终使用的,效果很好:

    Sub AutoInsert()

    Dim i As Integer
    Dim j As Integer
    
    With Worksheets("Sheet1")
    
        For i = 1 To .UsedRange.Columns.Count - 4
            For j = 1 To 3
                .Columns(i * 4 + j).Insert
                .Columns(i * 4 + j).Value2 = .Columns(j).Value2
            Next j
        Next i
    
    End With
    

    结束子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      • 2018-06-30
      • 2021-01-18
      • 1970-01-01
      相关资源
      最近更新 更多