首页 文章

使用宏复制和粘贴列

提问于
浏览
0

我不熟悉VBA或Macro,我经常使用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列

等等

我使用“Record Macro”来提出这个问题,但我想使用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

2 回答

  • 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
    

    EDIT#1:

    至每张表中的 clearB

    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
    

    EDIT#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
    
  • 0

    您可以编写一个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
    

相关问题