Excelの詳細フィルターでデータを別のシートにコピーする2つの方法
Excelの「詳細フィルター」(フィルターオプションの設定)は、複数の条件に基づいてデータ範囲から必要なデータだけを抽出できる強力な機能です。通常、データを別の場所に移すにはコピー&ペーストを行いますが、詳細フィルターを活用すれば、条件に合致するデータだけを効率的に別のシートへ抽出できます。この記事では、すべての例で同じサンプルデータセットを使用しながら、具体的な手順を解説します。
詳細フィルターで別シートにデータをコピーする2つの方法
ここでは、詳細フィルターを使ってデータを別のシートにコピーする2つの方法を紹介します。1つ目は「データ」タブの「フィルターオプションの設定」を使う方法、2つ目はVBAコードで詳細フィルターを実行する方法です。どちらも結果は同じなので、作業の頻度や目的に合わせて使い分けるとよいでしょう。
方法1:詳細フィルター機能を使って別のワークシートにコピーする
まずは、Excelリボンの「フィルターオプションの設定」を使って、条件に合うデータを別のシートにコピーする方法を見ていきましょう。このオプションは、「データ」タブの「並べ替えとフィルター」グループ内にあります。
以下のサンプルデータには、営業担当者の「姓(Last Name)」、「売上金額(Sales Amount)」、「都市(City)」が記録されています。ここでは、「姓がSmithまたはJonesである営業担当者」のデータのみを、「Copy Sheet」という名前のシートに抽出することを目標とします。

それでは、実際の手順を確認していきましょう。
手順:
- まず、コピー先となる「Copy Sheet」シートを開きます。
- 次に、「データ」タブを選択し、「並べ替えとフィルター」グループから「フィルターオプションの設定」をクリックします。

- 「フィルターオプションの設定」ダイアログボックスが表示されます。

- 「指定した範囲」(Copy to another location)にチェックを入れます。
- 「リスト範囲」の入力ボックスをクリックし、元データのある「Actual Sheet」シートに移動します。

- データ範囲 (B4:D15) を選択します。

- 選択すると、入力ボックスには次のように範囲が表示されます。
リスト範囲:'Actual Sheet'!$B$4:$D$15

- 続いて、ダイアログボックスに以下の値を設定します。
検索条件範囲:'Actual Sheet'!$F$9:$F$11
抽出先:'Copy Sheet'!$B$4
- 「OK」をクリックします。

- 以上の操作で、「Actual Sheet」から条件に合う行すべてが「Copy Sheet」へコピーされます。

あわせて読みたい: VBAで詳細フィルターを使って別シートにデータをコピーする方法
類似の記事:
- 検索条件範囲に文字列が含まれる場合の詳細フィルターの使い方
- Excelの詳細フィルターで「含まない」条件を適用する方法(2通り)
- 重複のないユニークなレコードだけを抽出する詳細フィルターの使い方
- 空白セルを除外する詳細フィルターの使い方(3つの簡単なテクニック)
- 条件付き詳細フィルターのVBA実例集(6つの条件パターン)
方法2:VBAコードで詳細フィルターを実行して別のワークシートにコピーする
VBAコードを使えば、詳細フィルターの操作を自動化し、別シートへのコピーをワンタッチで行うことも可能です。基本的な流れは方法1と同じですが、今回はリボンを操作する代わりに、VBAコードで詳細フィルターの機能を呼び出します。

それでは、VBAコードで詳細フィルターを実行する手順を見ていきましょう。
手順:
- まず、コピー先のシート「Copy Sheet-2」を選択します。
- シートタブを右クリックし、「コードの表示(View Code)」を選択します。

- 空白のVBAモジュールが表示されるので、以下のコードを貼り付けます。
Sub Advance_Filter_to_Copy_to_Another_Sheet()
Dim Str As String
Dim Address As String
Dim Rg As Range
Dim CRg As Range
Dim SRg As Range
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set Rg = Application.InputBox("Please select the filter range:", "Copy to Another Sheet", xAddress, , , , , 8)
If Rg Is Nothing Then Exit Sub
Set CRg = Application.InputBox("Please select the criteria range:", "Copy to Another Sheet", "", , , , , 8)
If CRg Is Nothing Then Exit Sub
Set SRg = Application.InputBox("Please select the output range:", "Copy to Another Sheet", "", , , , , 8)
If SRg Is Nothing Then Exit Sub
Rg.AdvancedFilter xlFilterCopy, CRg, SRg, False
SRg.Worksheet.Activate
SRg.Worksheet.Columns.AutoFit
End Sub
- F5キーを押すか、「実行(Run)」をクリックしてコードを実行します。

- すると、「Copy to Another Sheet」という入力ダイアログが表示されます。

- 入力ボックスをクリックし、「VBA」シートに移動してデータ範囲 (B4:D15) を選択し、OKを押します。

- 次に、検索条件範囲を求めるダイアログが表示されます。入力ボックスをクリックし、VBAシートの範囲 (F9:F11) を選択します。入力ボックスには次のように表示されます。
VBA!$B$4:$D$15
- OKを押します。

- さらに、出力先を求めるダイアログが表示されます。コピー先のセル B4 を選択すると、入力ボックスに $B$4 が挿入されます。
- OKをクリックします。

- 最後に、条件に合うすべての行が別のシートにコピーされていることを確認できます。

あわせて読みたい: Excelで詳細フィルターを「指定した範囲」にコピーして使う方法
まとめ
この記事では、Excelの詳細フィルターを使って、条件に合うデータを別のシートにコピーする2つの方法を解説しました。リボンからの操作は手軽に試せる一方、VBAコードを使えば定型作業を自動化でき、業務の効率化につながります。ぜひ添付の練習用ワークブックをダウンロードして、実際に手を動かしながら試してみてください。ご不明な点があれば、下のコメント欄でお気軽にお尋ねください。今後も役立つExcelのソリューションをお届けしていきます。
関連記事
- Excelで複数条件を使った詳細フィルター(15の実例)
- 動的詳細フィルターの作成方法(VBA&マクロ)
- VBAで詳細フィルターを使う手順(ステップバイステップガイド)
- 検索条件範囲を指定した詳細フィルターの活用例(18パターン)
- Excelの詳細フィルターが動かないときの原因と対処法
-
Excelのデータモデル活用術:3つのステップで複数テーブルを統合する方法
Excelは膨大なデータを処理できる強力なツールですが、データモデル機能を活用していなければ、その真価を発揮できていないかもしれません。データモデルを使えば、共通の列を基準にテーブル間のリレーションシップ(関連付け)を作成し、複数のテーブルからデータを結合できます。この記事では、Excelのデータモデルの基本的な使い方を、わかりやすい手順とともに解説します。 理解を深めながら実際に練習したい方は、サンプルのExcelワークブックをダウンロードして、ご自身でも操作してみてください。 データモデルを使うメリット データモデルはバックグラウンドで動作し、ピボットテーブルなどのレポート機能を効率
-
Excelで別シートの依存セル(参照先)をトレースする2つの方法
ワークシート上のあるセルが、他のシートのセルに依存しているかどうかを確認したいのに、その依存関係(参照先)をどうやってトレースすればよいかわからない——そんなお悩みをお持ちなら、この記事はまさにお役に立ちます。本記事では、Excelで別のシートにある依存セルをトレースする方法をわかりやすく解説します。それでは始めましょう。 Excelで別シートの依存セルをトレースする2つの便利な方法 ここでは、別のシートにある依存セルをトレースするための2つの効果的な方法を、実際の画面例とともに紹介します。サンプルとして、Sheet1にクラスの生徒の名前と年齢が入力されたワークシートを用意しました。 一方、