0

シートをマージするときに列見出しを除外する方法についてはたくさんの回答が見つかりましたが、最初のシートがコピーされた後に列 A を除外する方法については回答が見つかりません。助けてください。警告: 私は VBA に非常に慣れていないので、ばかげたことをしたかもしれませんが、2 日間これを機能させようとしています。最後のifステートメントの前の最後の2行のコードでエラーが発生し続けます。質問を投稿するのは初めてなので、これを行うより良い方法があるかどうかアドバイスしてください。

私が欲しいものの簡単な説明:

  • : すべてのシートには常に 365 行があり、シート数と列数は異なります。
  • シート 1 を取得し、データを新しい「マスター」シート、すべての列、すべての行にコピーします
  • 他のすべてのシートにはまったく同じ列 A がありますが、列 B を不明な数の列に通し、マスター シートの次の空の列に追加する必要があります。

:
シート 1 には 365 行があり、列 A と列 B のみ シート 2 には 365 行があり、列 A から D にはデータがあります 新しいマスター シートには 365 行があり、シート 1 のすべてとシート 2 の列 B から H が列 C から E としてのマスター シート

これが私のコードです:

Dim ws As Worksheet
Dim wsMain As Worksheet
Dim DataRng As Range
Dim Col As Long
Dim Cnt As Integer

Application.DisplayAlerts = False
On Error Resume Next
Sheets("Report").Delete
Sheets("Wex").Delete
Sheets("C Locs").Delete
Application.DisplayAlerts = True
On Error GoTo 0
Sheets.Add().Name = "Master"

Application.ScreenUpdating = False


Cnt = 1

Set wsMain = Worksheets("Master")
For Each ws In ThisWorkbook.Worksheets

If ws.Name <> wsMain.Name Then
If Cnt = 1 Then
Set DataRng = ws.Cells(1, 1).CurrentRegion
DataRng.Copy wsMain.Cells(1, Cnt)
Else: Col = wsMain.Cells(1, Columns.Count).End(xlToLeft).Column + 1

DataRng.Offset(0, 1).Resize(DataRng.Rows.Count, DataRng.Columns.Count - 1).Copy ActiveSheet.Cells(1, Col)

End If
End If
Cnt = Cnt + 1
Next ws



Application.ScreenUpdating = True

End Sub
4

1 に答える 1

0
For Each ws In ThisWorkbook.Worksheets

    If ws.Name <> wsMain.Name Then
        If Cnt = 1 Then
            Set DataRng = ws.Cells(1, 1).CurrentRegion
            DataRng.Copy wsMain.Cells(1, 1)
        Else
            With ws.Cells(1, 1).CurrentRegion
                Set DataRng = .Resize(.Rows.Count, .Columns.Count - 1).Offset(0, 1)
                DataRng.Copy wsMain.Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1)
            End With
        End If

        Cnt = Cnt + 1
    End If

Next ws
于 2013-04-02T22:01:04.033 に答える