Microsoft ExcelでVBAを使用して一枚に各シートのUsedRangeをコピー
各ワークシートの使用範囲をマスターシートにコピーする場合は、この記事を読む必要があります。 VBAコードを使用して各ワークシートからデータをコピーし、上書きせずに別のシートに貼り付けます。
マクロは、Masterという名前のシートをブックに追加し、このワークシートのブック内のすべてのシートからセルをコピーします。
最初のマクロは通常のコピーを実行し、2番目のマクロは値をコピーします。マクロの潜水艦は以下の機能を使用します。マクロは関数なしでは機能しません。
以下は、Sheet1とSheet2のデータのスナップショットです。
VBエディターを起動するには、以下の手順に従う必要があります。
[開発者]タブをクリックします[コード]グループから、[VisualBasic]を選択します
-
以下のコードを標準モジュールにコピーします
Sub CopyUsedRange() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists("Master") = True Then MsgBox "The sheet Master already exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" For Each sh In ThisWorkbook.Worksheets If sh.Name <> DestSh.Name Then If sh.UsedRange.Count > 1 Then Last = LastRow(DestSh) sh.UsedRange.Copy DestSh.Cells(Last + 1, 1) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyUsedRangeValues() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists("Master") = True Then MsgBox "The sheet Master already exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" For Each sh In ThisWorkbook.Worksheets If sh.Name <> DestSh.Name Then If sh.UsedRange.Count > 1 Then Last = LastRow(DestSh) With sh.UsedRange DestSh.Cells(Last + 1, 1).Resize(.Rows.Count, _ .Columns.Count).Value = .Value End With End If End If Next Application.ScreenUpdating = True End Sub Function LastRow(sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function Function Lastcol(sh As Worksheet) On Error Resume Next Lastcol = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column On Error GoTo 0 End Function Function SheetExists(SName As String, _ Optional ByVal WB As Workbook) As Boolean On Error Resume Next If WB Is Nothing Then Set WB = ThisWorkbook SheetExists = CBool(Len(Sheets(SName).Name)) End Function
これで、マクロコードが設定されました。マクロ「CopyUsedRange」を実行すると、新しいシート「マスター」が挿入され、各シートからデータがコピーされます。
結論:*複数のシートからデータをコピーするのは手動の作業です。しかしながら;上記のコードを使用すると、マクロを1回クリックするだけでデータを統合できます。
私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。
_私たちはあなたからの連絡をお待ちしております。私たちの仕事を改善、補完、または革新し、あなたのためにそれをより良くする方法を教えてください。 [email protected]_までご連絡ください