KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

複数のワークシートから条件に一致する行を新しいシートにコピーするには、どうすればよいですか?

著者Xiaoyang変更日

たとえば、下図のように同じ書式を持つ3 つのワークシートを含むブックがあるとします。このとき、列 C に「Completed」というテキストを含むすべての行を、これらのワークシートから新しいワークシートにコピーしたい場合、手作業で一つずつコピー&ペーストすることなく、この作業を素早く簡単に実現するにはどうすればよいでしょうか?

サンプルデータ 1サンプルデータ 2サンプルデータ 3

VBA コードを使用して、複数のワークシートから条件に基づいて行を新しいシートにコピーする


VBA コードを使用して、複数のワークシートから条件に基づいて行を新しいシートにコピーする

次の VBA コードを使えば、ブック内のすべてのワークシートから指定した条件に一致する行を新しいワークシートにコピーできます。以下の手順に従ってください。

1ALT + F11キーを押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。

2挿入>モジュールをクリックして、モジュールウィンドウに次のコードを貼り付けてください。

VBA コード:複数のシートから条件に基づいて行を新しいシートにコピーする

Public Sub CopyRows_ValuesAndNumberFormats()
Dim xWs As Worksheet
Dim xCWs As Worksheet
Dim xRg As Range
Dim xStrName As String
Dim xRStr As String
Dim xRRg As Range
Dim xC As Integer
On Error Resume Next
Application.DisplayAlerts = False
xStr = "Kutools for Excel"
xRStr = "Completed"
Set xCWs = ActiveWorkbook.Worksheets.Item(xStr)
If Not xCWs Is Nothing Then
    xCWs.Delete
End If
Set xCWs = ActiveWorkbook.Worksheets.Add
xCWs.Name = xStr
xC = 1
For Each xWs In ActiveWorkbook.Worksheets
    If xWs.Name <> xStr Then
        Set xRg = xWs.Range("C:C")
        Set xRg = Intersect(xRg, xWs.UsedRange)
        For Each xRRg In xRg
            If xRRg.Value = xRStr Then
               xRRg.EntireRow.Copy
               xCWs.Cells(xC, 1).PasteSpecial xlPasteValuesAndNumberFormats
               xC = xC + 1
            End If
        Next xRRg
    End If
Next xWs
Application.DisplayAlerts = True
End Sub

:上記のコードについて:

  • スクリプト中のテキスト「Completed」は、行をコピーする際の条件を示しています。xRStr = 「Completed」
  • C:Cは、このSet xRg = xWs.Range(「C:C」)スクリプトにおいて、条件が存在する列を指定しています。

3.次に、F5キーを押してこのコードを実行すると、指定した条件を満たすすべての行が現在のブック内に「Kutools for Excel」という名前の新しいワークシートにコピー&ペーストされます。下図をご参照ください。

条件に基づいて複数のワークシートから行をコピーするVBAコード



関連するデータの取り込みまたはコピーに関する記事をさらに見る:

  • Excel で高度なフィルターを使用してデータを別のワークシートにコピーする
  • 通常、高度なフィルター機能を素早く適用して、同じワークシート内の元データから必要なデータを抽出できます。しかし、場合によってはフィルター結果を別のワークシートにコピーしようとした際に、次のような警告メッセージが表示されることがあります。このような場合、Excel ではこの作業をどのように処理すればよいでしょうか?
  • Excel で列の条件に基づいて行を新しいシートにコピーする
  • たとえば、果物の購入表があり、特定の果物に基づいてレコードを新しいシートにコピーしたい場合、Excel でこれを簡単に行うにはどうすればよいでしょうか?ここでは、Excel で列の条件に基づいて行を新しいシートにコピーするためのいくつかの方法をご紹介します。

  • スーパー数式バー(複数行のテキストや数式を簡単に編集可能);リーディングレイアウト(多数のセルを簡単に読み書き可能);フィルタリング範囲に貼り付け
  • 結合セル/行/列とデータ保持;セルの分割コンテンツ;重複行を結合して合計/平均を計算…重複の入力を防止セル;範囲を比較
  • 重複または一意の行を選択空白行を選択(すべてのセルが空);スーパー検索とあいまい検索多数のワークブック内で実行;ランダム選択…
  • 正確にコピー複数セルを数式参照を変更せずに移動;複数シートへの参照を自動作成箇条書きの挿入、チェックボックスなど…
  • お気に入りの数式を保存して素早く挿入、範囲、チャート、画像;セルの暗号化パスワード付きで保護;メーリングリストの作成メール送信など…
  • テキストの抽出、テキストの追加、特定の位置の文字を削除、スペースを削除;データページ統計を作成・印刷;セルの内容とコメントを相互変換
  • スーパーフィルター(フィルタースキームを保存し、他のシートに適用可能);高度なソート月/週/日、頻度などでグループ化;特殊フィルタ太字、イタリック体などで強調表示…
  • ワークブックとワークシートを統合;テーブルのマージをキーカラムに基づいてマージ;データの分割を複数のシートに分割xls、xlsx、PDF を一括変換
  • PivotTable を以下でグループ化:週番号、曜日など…ロック解除済みセルと選択範囲をロックを異なる色で表示;数式/名前を持つセルをハイライト表示
kte tab 201905
  • Word、Excel、PowerPoint でタブを使った編集と閲覧を有効化。Publisher、Access、Visio、Project でもご利用いただけます。
  • 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
  • 生産性が50%向上し、毎日数百回のマウスクリックを削減できます!
officetab bottom