我有一个我认为很简单的问题,但我真的无法使用循环来解决问题......
我有 12 个名为 Jan、Feb、Mar ... 到 Dec 的工作表和一个摘要表。
我想循环浏览 12 张表并从每个选项卡中复制 E 列并将它们粘贴到摘要表中。
Jan Column E would paste to Summary Sheet column A,
Feb Column E would paste to Summary Sheet column B,
Mar Column E would paste to Summary Sheet column C ... and so on.
我正在使用以下代码,它可以正常工作。但是,我真的很希望能够使用循环来减少编码。
Sub Ops()
Sheets("Dec").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("A1").Select
ActiveSheet.paste
Sheets("Nov").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("B1").Select
ActiveSheet.paste
Sheets("Oct").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("C1").Select
ActiveSheet.paste
Sheets("Sep").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("D1").Select
ActiveSheet.paste
Sheets("Aug").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("E1").Select
ActiveSheet.paste
Sheets("Jul").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("F1").Select
ActiveSheet.paste
Sheets("Jun").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("G1").Select
ActiveSheet.paste
Sheets("May").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("H1").Select
ActiveSheet.paste
Sheets("Apr").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("I1").Select
ActiveSheet.paste
Sheets("Mar").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("J1").Select
ActiveSheet.paste
Sheets("Feb").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("K1").Select
ActiveSheet.paste
Sheets("Jan").Select
Columns("E:E").Select
Selection.Copy
Sheets("Summary by Operator").Select
Range("L1").Select
ActiveSheet.paste
Range("A1").Select
End sub
最佳答案
尝试这个:
Sub PasteColumns()
Dim arrSheets As Variant
' Define sheet names
' ------------------------
arrSheets = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
Dim sSheet As Worksheet
For i = 0 To UBound(arrSheets)
' Check sheet exists
' -------------------
On Error Resume Next
Set sSheet = ThisWorkbook.Sheets(arrSheets(i))
On Error GoTo 0
' Insert values in appropriate column
' --------------------------------------
If Not sSheet Is Nothing Then
ThisWorkbook.Sheets("Summary by Operator").Columns(i + 1).Value = sSheet.Columns(5).Value
End If
Set sSheet = Nothing
Next
End Sub
关于vba - Excel VBA 浏览工作表并将列范围复制到另一个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226658/