VBAで複数シートに条件を基にデータをコピーする方法

Visual Basic

VBAを使用して、複数のシートに条件に基づいてデータをコピーする方法について解説します。特に、シート1の条件に基づいて、シート2とシート3に同じ条件でデータをコピーする方法を見ていきます。条件が同じでも、行数やセルの文字が異なる場合に対応するためのVBAコードの書き方を紹介します。

VBAでシート間にデータをコピーする基本的な手順

VBAを使用して複数のシートにデータをコピーするには、まず対象となる範囲を指定し、その範囲を別のシートに転送するという流れになります。以下に基本的なコピーのコードを示します。

Sub CopyData()
    Dim wsSource As Worksheet
    Dim wsDest1 As Worksheet
    Dim wsDest2 As Worksheet
    Set wsSource = ThisWorkbook.Sheets("Sheet1")
    Set wsDest1 = ThisWorkbook.Sheets("Sheet2")
    Set wsDest2 = ThisWorkbook.Sheets("Sheet3")

    ' コピー元の範囲を指定
    wsSource.Range("A1:B10").Copy

    ' シート2に貼り付け
    wsDest1.Range("A1").PasteSpecial Paste:=xlPasteValues
    ' シート3に貼り付け
    wsDest2.Range("A1").PasteSpecial Paste:=xlPasteValues
End Sub

このコードでは、シート1のA1:B10の範囲をシート2とシート3にコピーしています。範囲や貼り付け方法を変更することで、条件に合わせたコピーが可能です。

異なるデータの条件に対応する方法

質問では、シート間で条件が同じでも、行数やセルの文字が異なるという状況です。これを対応するためには、データを条件に基づいて動的にフィルタリングしたり、変数を使って行数や列数を動的に調整する必要があります。

以下に、条件に基づいたデータコピーの例を示します。

Sub ConditionalCopy()
    Dim wsSource As Worksheet
    Dim wsDest1 As Worksheet
    Dim wsDest2 As Worksheet
    Dim i As Long

    Set wsSource = ThisWorkbook.Sheets("Sheet1")
    Set wsDest1 = ThisWorkbook.Sheets("Sheet2")
    Set wsDest2 = ThisWorkbook.Sheets("Sheet3")

    ' シート1のデータをループして処理
    For i = 1 To wsSource.Cells(Rows.Count, 1).End(xlUp).Row
        If wsSource.Cells(i, 1).Value = "条件" Then
            ' 条件に合ったデータをシート2にコピー
            wsSource.Rows(i).Copy Destination:=wsDest1.Rows(i)
            ' 条件に合ったデータをシート3にコピー
            wsSource.Rows(i).Copy Destination:=wsDest2.Rows(i)
        End If
    Next i
End Sub

このコードは、シート1のデータをループして、条件に合致する行だけをシート2とシート3にコピーするものです。条件を変更することで、特定のデータをターゲットにしたコピーが可能になります。

エラー修正とトラブルシューティング

VBAでのエラー修正は非常に重要です。特に複数のシートにデータをコピーする際には、シート名や範囲が間違っていたり、条件がうまく設定されていないことがあります。

  • シート名の確認: VBAでシート名を指定する際に、シート名にスペルミスや余分な空白がないか確認しましょう。
  • 範囲の指定: コピーする範囲が正しいか、またコピー先が正しく指定されているかを確認しましょう。
  • エラーメッセージの確認: エラーメッセージが表示された場合、その内容をよく読み、エラーの原因を特定して修正します。

まとめ

VBAを使用して、複数のシートに条件に基づいてデータをコピーする方法は、基本的なコピー操作に加えて、動的にデータを選択し、適切な範囲を指定することが求められます。エラーが発生した場合は、シート名や範囲の指定を再確認し、必要な修正を行うことで、スムーズにコピー作業が完了します。

コメント

タイトルとURLをコピーしました