102個のタブを持つスプレッドシートがあります。私は各タブから同じデータの列をコピーし、同じワークシート内の単一のタブに配置したいと思いますが、各コピーを別の列に貼り付ける方法はわかりません。すべてのタブから1列のデータを抽出し、すべてのデータを1つのタブに貼り付けます。
この質問は、ここで尋ねたものと非常に類似している:私は、次のコードに多くのバリエーションを試してみました Extract tabular data from every Excel tab, and paste data on a single sheet
、それを把握することはできません。次のエラーが表示されます。
Method 'Range' of object '_Worksheet' failed
以下のコードを貼り付けました。すべてのヘルプの事前のおかげで!
Option Explicit
Sub CopyPasteCombineSI()
Dim wsInput As Worksheet, wsOutput As Worksheet
Dim rngSI As Range, rngHeading As Range
Dim LColO As Long, LRowI As Long, LastColumn As Long
'~~> Set your Output Sheet
Set wsOutput = ThisWorkbook.Sheets("Dual Flow")
'~~> Loop through all sheets to copy and paste combined SI data
For Each wsInput In ThisWorkbook.Worksheets
'~~> Ensure that we ignore the output sheet
If wsInput.Name <> wsOutput.Name Then
'~~> Working with the input sheet
With wsInput
'~~> Set your range for copying
Set rngHeading = .Range("E1")
'~~> Copy your range
rngHeading.Copy
'~~> Paste
.Range("F1").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'~~> Get the last row of input sheet
LRowI = .Range("A" & .Rows.Count).End(xlUp).Row
'~~> Set your range for copying
Set rngSI = .Range("F1:F" & LRowI)
'~~> Copy your range
rngSI.Copy
'~~> Pasting data in the output sheet
With wsOutput
If WorksheetFunction.CountA(Cells) > 0 Then
'Search for any entry, by searching backwards by Columns.
LastColumn = Cells.Find(What:="*", After:=[A1], _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Else
LastColumn = 0
End If
'~~> Get the next available column in output sheet for pasting
LColO = LastColumn + 1
'~~> Finally paste
.Range(LColO & "1").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
End With
End If
Next wsInput
Exit Sub
End Sub
Rangeでは、列の文字が必要で、数値を渡しています。 '.Range(LColO&" 1 ")の代わりに' .Cells(1、LColO).'の代わりにCells()を使う ' –
ありがとう@Scott Cranerそれは働いた! – ARubaDubDub
個人的に私は@ScottHoltzmanを見ます。それはクリップボードに関係しないという点で、多くのデータがより速くなります。 –