【问题标题】:Column copy and paste using macro使用宏复制和粘贴列
【发布时间】:2016-04-01 16:40:16
【问题描述】:

我不熟悉 VBA 或宏,我经常使用 Microsoft excel。

有什么更好的方法来写这个?我想要的是复制 B 列并将 B 列粘贴到下一列和其他每一列。

例如:

在 sheet2 上,我希望 B 列位于 B 列

在 sheet3 上,我希望 B 列位于 C 列并清除 B 列

在 sheet4 上,我希望 B 列位于 E 列并清除 B 列

在 sheet5 上,我希望 B 列位于 F 列并清除 B 列

.

.

.

。 在第 26 页上,我希望 B 列位于 Z 列并清除 B 列

在第 27 页上,我希望 B 列位于 AA 列上并清除 B 列

等等

我已经使用“录制宏”来实现这一点,但我想使用 VBA 编程。复制/剪切粘贴列的最佳方法是什么?

Sheets(2).Select
Columns("B:B").Select
Sheets(3).Select
Columns("B:B").Select
Selection.Copy
Columns("C:C").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("B:B").Select
Selection.ClearContents
Sheets(4).Select
Columns("B:B").Select
Selection.Copy
Columns("D:D").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("B:B").Select
Selection.ClearContents
Sheets(5).Select
Columns("B:B").Select
Selection.Copy
Columns("E:E").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("B:B").Select
Selection.ClearContents
Sheets(6).Select
Columns("B:B").Select
Selection.Copy
Columns("F:F").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("B:B").Select
Selection.ClearContents
Sheets(7).Select
Columns("B:B").Select
Selection.Copy
Columns("G:G").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("B:B").Select
Selection.ClearContents
Sheets(8).Select
Columns("B:B").Select
Selection.Copy
Columns("H:H").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("B:B").Select
Selection.ClearContents
Sheets(9).Select
Columns("B:B").Select
Selection.Copy
Columns("I:I").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("B:B").Select
Selection.ClearContents

【问题讨论】:

    标签: vba excel macros


    【解决方案1】:

    怎么样:

    Sub ytrewq()
        Dim i As Long
        For i = 1 To Sheets.Count
            With Sheets(i)
                .Columns(2).Copy .Columns(i + 2)
            End With
        Next i
    End Sub
    

    编辑#1:

    清除每张工作表中的B列:

       Sub ytrewq()
            Dim i As Long
            For i = 1 To Sheets.Count
                With Sheets(i)
                    .Columns(2).Copy .Columns(i + 2)
                    .Columns(2).Clear
                End With
            Next i
        End Sub
    

    编辑#2

    这从 Sheet3 开始:

    Sub ytrewq()
        Dim i As Long
        For i = 3 To Sheets.Count
            With Sheets(i)
                .Columns(2).Copy .Columns(i)
                .Columns(2).Clear
            End With
        Next i
    End Sub
    

    【讨论】:

    • B列被复制粘贴后如何去掉?这帮助很大!非常感谢!--我编辑了我的问题。
    • 对于需要知道如何清除B列的人,添加这个.Columns(2).ClearContents
    • @Chris 查看我的 EDIT#1
    • 我注意到,我在 Sheet2 上的 B 列已移至 D 列,这不是我想要的。如何使 B 列停留在 Sheet2 的 B 列上?在表 3 上,我想要 C 列上的 B 列并清除 B 列。在表 4 上,我想要 D 列上的 B 列并清除 B 列。对不起,我让你感到困惑。请参阅我编辑的帖子。非常感谢您的帮助。
    • @Chris 你想从 Sheet3 开始流程并跳过前两张 ??
    【解决方案2】:

    您可以编写一个 Sub 来减少代码的一些重复性。

    例如

    Sub copyPaste(sheetNum as integer, copyCol as string, pasteCol as string)
    
        Sheets(sheetNum).Select
        Columns(copyCol).Copy Columns(pasteCol)
        Columns(copyCol).ClearContents
    
    end sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      相关资源
      最近更新 更多