初めての投稿者が長い時間ユーザー!あなたはギャップを埋めるのを助けることができると願っています!個別の列見出しを使用して複数のシートをマスターシートにコピーする方法
複数のシートを1つのマスターシートにまとめて列ヘッダーを一致させるためにvbaを作成しようとしています。私は複数のスレッドとMicrosoftからのドキュメントを見つけましたが、まだまだ近づいています。私は他のユーザーからたくさんのものを手に入れ、必要なものを追加しました。
Set DestSheet = Sheet("Database_Headers")
が、私はさらに明確にする必要がいた場合や、私はさらに明確化を追加する必要がある場合、私はわからない:ここでは私の現在のエラーから来ている...私が持っているもの
Option Compare Text
Sub cc()
Dim Sheet As Worksheet
Dim DestSheet As Worksheet
Dim Last As Long
Dim SheetLast As Long
Dim CopyRange As Range
Dim StartRow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set DestSheet = Sheet("Database_Headers")
StartRow = 2
For Each Sheet In ActiveWorkbook.Worksheets
If LCase(Left(Sheet.Name, 6)) = "Demand" Then
Last = DestSheet.Cells(Rows.Count, "A").End(xlUp).Row
SheetLast = Sheet.Cells(Rows.Count, "A").End(xlUp).Row
If SheetLast > 0 And SheetLast >= StartRow Then
Sheet.Select
Region_Name = WorksheetFunction.Match("Region Name", Rows("1:1"), 0)
location_code = WorksheetFunction.Match("location_code", Rows("1:1"), 0)
location_name = WorksheetFunction.Match("location_name", Rows("1:1"), 0)
dealer_code = WorksheetFunction.Match("dealer_code", Rows("1:1"), 0)
Sheet.Columns(Region_Name).Copy Destination:=DestSheet.Range("C" & Last + 1)
Sheet.Columns(location_code).Copy Destination:=DestSheet.Range("D" & Last + 1)
Sheet.Columns(location_name).Copy Destination:=DestSheet.Range("E" & Last + 1)
Sheet.Columns(dealer_code).Copy Destination:=DestSheet.Range("F" & Last + 1)
End If
End If
CopyRange.Copy
With DestSheet.Cells(Last + 1, "C")
End With
DestSheet.Cells(Last + 1, "B").Resize(CopyRng.Rows.Count).Value = Sheet.Name
Next
ExitTheSub:
Application.Goto DestSh.Cells(1)
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
ですライン。
ご協力いただきありがとうございます。
私はコードに更新したEDITのUPDATE
: オプションは、テキスト
サブCC()
Dim Sh As Worksheet
Dim DestSheet As Worksheet
Dim Last As Long
Dim SheetLast As Long
'Dim CopyRange As Range
Dim StartRow As Long
'Disables screen updates so screen does not flicker when code is running
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Clarify the summary tab
Set DestSheet = Worksheets("Database_Headers")
' Will not copy column headers and will only copy data
StartRow = 2
'Will copy all data from each sheet that has a different name then the summary tab
For Each Sh In ActiveWorkbook.Worksheets
If LCase(Left(Sh.Name, 6)) = "Demand" Then
Last = DestSheet.Cells(Rows.Count, "B").End(xlUp).Row
shLast = Sh.Cells(Rows.Count, "A").End(xlUp).Row
If shLast > 0 And shLast >= StartRow Then
`Set CopyRange = Sh.Select`
Region_Name = WorksheetFunction.Match("Region Name", Rows("1:1"), 0)
location_code = WorksheetFunction.Match("location_code", Rows("1:1"), 0)
location_name = WorksheetFunction.Match("location_name", Rows("1:1"), 0)
dealer_code = WorksheetFunction.Match("dealer_code", Rows("1:1"), 0)
Sh.Columns(Region_Name).Copy Destination:=DestSheet.Range("B" & Last + 1)
Sh.Columns(location_code).Copy Destination:=DestSheet.Range("C" & Last + 1)
Sh.Columns(location_name).Copy Destination:=DestSheet.Range("D" & Last + 1)
Sh.Columns(dealer_code).Copy Destination:=DestSheet.Range("E" & Last + 1)
End If
End If
`CopyRange.Copy`
With DestSheet.Cells(Last + 1, "B")
End With
DestSheet.Cells(Last + 1, "A").Resize(CopyRange.Rows.Count).Value = Sh.Name
Next
ExitTheSub:
Application.Goto DestSheet.Cells(1)
' AutoFit the column width in the summary sheet.
DestSheet.Columns.AutoFit
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Subの
私は私のコピー範囲の機能に関しては、別のエラーを見ています。私はVBAをシートにしたいと思うし、マスターにあるものと一致する列見出しの下にのみデータをコピーします。助けてくれてありがとう!!
こんにちは@Vityataが、私はsh' 'に' Worksheets'と 'sheet'に調整し、それが私の元の問題を修正します。私は今、複数のセルからデータをコピーするために私の声明に問題を抱えています。私は、一致させるために列ヘッダーを必要としており、データはサマリータブにのみ追加します。元の質問のコードを新しいコードで更新しました。 Set CopyRange = Sh.Select'でエラーが発生します。ご協力いただきありがとうございます!! – MrDoe