Excelのデータ抽出の方法はいろいろありますが、ここでは[データ]タブの[並べ替えとフィルター]グループにある[詳細設定]を使って、複数の条件に合うデータを抽出する方法を紹介します。
また、抽出したデータを別シートへ書き出すこともできます。
この記事の目次
サンプルデータの確認
Excelで作成した下のようなデータ表があります。
1行に1つのデータ、先頭行に見出しがあります。
検索条件
検索条件は以下の3つとし、3つの条件に合うデータを抽出します。
- 納入月日が---「2014/12/12」より前
- 得意先名が---「りんご」という文字を含む会社
- 商品コードが---「4」で始まるコード
検索条件の設定
まず、検索条件を入力する行を表の上や下などに決めます。
ここでは、表の上へ設定します。
下のように表の上へ5行追加して、検索条件を入力します。
見出しは表の見出しと同じにします。
コピーして貼り付けた方が無難です。
下のようになります。
検索条件にはアスタリスクなどのワイルドカードの使用ができます。
横並びの場合はAND条件、縦並びの場合はOR条件となります。
[データ]タブの[詳細設定]をクリック
準備ができたら、データの抽出を行います。
表内でクリックして、[データ]タブの[並べ替えとフィルター]グループにある[詳細設定]をクリックします。
[詳細設定]のポップヒントには以下のように記されています。
詳細設定
複雑な条件を使ってフィルター処理を行うときのオプションです。
フィルターオプションの設定
[フィルターオプションの設定]ダイアログボックスが表示されます。
[リスト範囲]は、自動で範囲が設定されていると思います。
もし、修正が必要であれば、[ダイアログボックス拡大/縮小]ボタンをクリックして、ドラッグで修正します。
直接入力しても構いません。
[抽出先]は[選択範囲内]を選択しておきます。
既定のままです。
[検索条件範囲]の[ダイアログボックス拡大/縮小]ボタンをクリックして、
セル[A2]からセル[C3]までをドラッグして、[ダイアログボックス拡大/縮小]ボタンをクリックします。
[フィルターオプションの設定]ダイアログボックスは下のようになります。
[OK]ボタンをクリックします。
参考[フィルターオプションの設定]で範囲を指定する場合、[ダイアログボックス拡大/縮小]ボタンを押さなくても、テキストボックス内にカーソルを置いた状態で参照範囲をドラッグしても指定することができます。やりやすい方法で行ってください。
データは下のようになります。
検索条件が何であるかが、一目で分かりますね。
フィルターの解除
フィルターを解除するには、[データ]タブの[並べ替えとフィルター]グループにある[クリア]ボタンをクリックします。
クリア
現在のデータ範囲に適用されているフィルターと並べ替え状態を解除します。
検索条件の追加
検索条件を[商品コード]が「4または5で始まる」という条件に変えてみます。
[納入月日]と[得意先名]は同じ条件にします。
- 納入月日が---「2014/12/12」より前
- 得意先名が---「りんご」という文字を含む会社
- 商品コードが---「4」または「5」で始まるコード
検索条件は、下のように入力します。
同じように[詳細設定]をクリックして、[フィルターオプションの設定]ダイアログボックスで設定します。
検索条件範囲は、今度はセル[A2]からセル[C4]とします。
データは以下のようになります。
任意のセル位置へ抽出データを書き出し
抽出したデータを指定したセル位置に書き出すこともできます。
その場合は、[フィルターオプションの設定]ダイアログボックスで、下のように[抽出先]を[指定した範囲]に変更します。
[抽出範囲]の[ダイアログボックス拡大/縮小]ボタンをクリックして、書き出したいセル位置を指定します。
ここでは、表の下に書き出したいので、セル[A23]をクリックします。
そして、[ダイアログボックス拡大/縮小]ボタンをクリックします。
[フィルターオプションの設定]ダイアログボックスは下のようになります。
[OK]ボタンをクリックします。
以下のように抽出したデータが書き出されます。
参考Excel2021とMicrosoft 365のExcelでは、FILTER関数を使用してデータを抽出することができます。
-
条件に一致するデータを抽出できるFILTER(フィルター)関数
FILTER関数を使用して条件に合うデータを抽出することができます。 数式は先頭のセルに入力すると、スピル機能によって自動で数式が入力されま ...
抽出データを別シートへ書き出しするには
抽出したデータを別シートへ書き出したい場合は、書き出したいシートをアクティブにして、上記操作をします。
注意作業中のシートから別シートへ書き出そうとすると、以下のメッセージが表示されますので気をつけてください。
抽出データを作業中のシート以外へコピーすることはできません。
抽出したいシートで操作を開始
例えば、[データ抽出]シートに表示したい場合は、[データ抽出]シートに切り替えて、[データ]タブの[詳細設定]をクリックします。
[フィルターオプションの設定]ダイアログボックスが表示されますので、[抽出先]を[指定した範囲]に切り替え、[リスト範囲]の[ダイアログボックス拡大/縮小]ボタンをクリックします。
シートを切り替えて、リスト範囲を指定します。
ここでは、[フィルターオプション]シートに切り替えます。
リスト範囲であるセル[A6]からセル[D21]を指定します。
[検索条件範囲]も同じようにセル[A2]からセル[C4]を指定します。
[フィルターオプションの設定]ダイアログボックスは下のようになります。
[抽出範囲]の[ダイアログボックス拡大/縮小]ボタンをクリックして、[データ抽出]シートへ切り替えます。
そして、抽出先となるセル位置をクリックします。
[ダイアログボックス拡大/縮小]ボタンをクリックします。
下のように抽出されたデータが表示されます。
特定の列のみの抽出と重複レコードの削除
また、特定の列のみ抽出して重複レコードを削除することもできます。
たとえば、[商品コード]の一意のレコード(重複レコードを削除)のみを抽出したいと思います。
まず、抽出先に書き出したい項目と同じ名前の見出しを入力します。
そして、[データ]タブの[詳細設定]をクリックします。
[フィルターオプションの設定]ダイアログボックスが表示されたら、[抽出先]は[指定した範囲]、[リスト範囲]は[A1からD16]ですね。
[抽出範囲]でセル[F1]を指定します。
[ダイアログボックス拡大/縮小]ボタンをクリックして指定します。または、テキストボックス内にカーソルを置いた状態で、セルや範囲を指定します。
[重複するレコードは無視する]のチェックボックスをオンにして、[OK]ボタンをクリックします。
以下のように一意の商品コードが抽出されます。
注意[重複するレコードは無視する]をオンにして抽出しても、同じレコードがあれば、セルのお尻に空白スペースが入力されていないかを確認してください。スペースがあると別物と認識されます。以下の記事を参考にしてください。
-
[重複の削除]は1番目の値が残るがデータの空白スペースには注意
Excel2007以降には、[データ]タブの[データツール]グループに[重複の削除]というコマンドがあります。 重複する行を削除してくれる機 ...
一列のみ選択して重複を削除
[商品コード]列のみをリスト範囲($C$1:$C$16)として指定する場合は、抽出範囲の見出しを設定する必要はありません。
[フィルターオプションの設定]ダイアログボックスの[リスト範囲]に[商品コード]の列のみ($C$1:$C$16)を指定します。
[抽出範囲]のセルを指定します。[重複するレコードは無視する]のチェックボックスをオンにして、[OK]ボタンをクリックします。
以下のように重複しないリストが抽出されます。
複数列で共に一致している重複行を削除するには
[得意先名]と[商品コード]で共に一致している重複行を削除することもできます。以下の表では、[№]の1、7、14が重複しています。
[フィルターオプションの設定]ダイアログボックスを表示して、[指定した範囲]を選択して、[リスト範囲]は、[得意先名]と[商品コード]の列を範囲選択します。
[抽出範囲]のセルを指定します。[重複するレコードは無視する]のチェックボックスをオンにして、[OK]ボタンをクリックします。
以下のように抽出されます。
参考削除する前に重複レコードをチェックしたい場合もあると思います。
条件付き書式を使って、重複をチェックすることができます。以下の記事では、複数列で共に一致している重複行をチェックする方法も解説しています。
-
重複しない一意の値を求める方法と複数列で重複をチェックする方法
Excelで2つの列にデータが入力されていて、そのデータの差分を求めたい場合がありますね。 A列には分析用データとして別表に貼り付け済みのI ...
Power Queryエディターでも、複数列で一致している重複行を削除した結果を求めることができます。
-
Power Queryエディターで複数のグループ化の結果を表示するには
Power Queryには、[グループ化]という機能があります。 COUNTIF関数やSUMIF関数、またはピボットテーブルで求める結果と同 ...
重複レコードの削除について
Excel2007以降には[重複の削除]という機能がありますが、Excel2003で重複レコードの削除をしたい場合は、[フィルターオプションの設定]を使うと効率的です。
以下は、Excel2003の記事です。
-
フィルタオプションの設定[重複するレコードは無視する]で重複削除
大きなリストの中から、重複データを探し出して削除する方法です。 Excelの[フィルタオプションの設定]には、とても便利な機能があります。 ...
Excel2007以降は、以下の記事が参考になると思います。
-
重複する値の削除(条件付き書式でチェックしてデータを削除)
Excel2007以降には、[重複の削除]という機能があります。 [重複の削除]を実行すると1番目に登場した値が残り、残りのデータはすべて削 ...
以下の記事では、ピボットテーブルを活用して一意のリストを作成する方法を解説しています。
-
ピボットテーブルで重複データをチェックして一意のリストを作成
Excelのリストで重複データが混在している場合、重複データをチェックして一意のリストを作成したい場合があります。 重複データをチェックする ...
Excel2021とMicrosoft 365のExcelでは、UNIQUE(ユニーク)関数を使って重複しないリストを作成できます。
-
UNIQUE関数で重複しない値をリスト化して表内の該当セルを塗りつぶす
Excel2021とMicrosoft 365のExcelでは、UNIQUE(ユニーク)関数を使用することができます。 UNIQUE関数を使 ...
検索条件の記述方法
抽出条件の記述方法については、Microsoftのページを参考にしてください。
高度な条件を使ってフィルターを適用する - Microsoft サポート(Microsoft)
比較演算子 | 読み | 意味 |
= | 等号 | 等しい |
< | 小なり記号 | ~より小さい |
> | 大なり記号 | ~より大きい |
<= | より小か等しい記号 | ~以下 |
>= | より大か等しい記号 | ~以上 |
<> | 不等号 | 等しくない |
ワイルドカードは、1文字の場合は[?]、任意の文字列の場合は[*]を使用します。
以下は、検索条件で「~で終わる」を指定する場合の方法です。
例えば、商品コードの末尾が[0]のコードを抽出したい場合は、検索条件のセルの書式を文字列にして[=*0]のように入力します。
求めたい値と異なる場合は、[="=*0"]のように指定してみてください。
[詳細設定]をクリックして表示される[フィルターオプションの設定]ダイアログボックスは何かと便利ですね。
関連以下は、関連ページです。
-
複数項目を[または]でデータ抽出(フィルターオプションの設定)
[データ]タブの[並べ替えとフィルター]グループにある[詳細設定]をクリックすると、[フィルターオプションの設定]ダイアログボックスが表示さ ...
また、Excelをフィルターモードにしたときのフィルター機能は便利ですが、抽出条件はデータの種類によって変わります。
以下の記事で解説しています。
-
フィルターモードの詳細な抽出条件はデータの種類で異なる
Excelのフィルター機能を使用すると、条件に合うデータを簡単に抽出できます。 表をフィルターモードにするには、表内のセルをアクティブにして ...
参考複数の条件で合計を求めるには、関数を使う方法もあります。
-
複雑な複数の条件に合う合計を求めるにはDSUM関数
Excelで複雑な複数の条件を満たすデータの合計値を求める時に便利な関数があります。 複数の条件に合うものを抽出する方法では、[フィルターオ ...
-
複数条件の合計を求めるにはSUMIFS関数
複数の検索条件の値の合計を求める関数を紹介します。 1つの条件であれば、SUMIF関数で求めることができますが、2つ以上の条件を満たす合計値 ...
ワイルドカードは、条件付き書式でも役立ちます。
-
条件付き書式で特定の文字列を含む(含まない)セルに書式を設定
Excelの条件付き書式を活用することで、セル範囲内の特定の文字列を含むセルに書式を設定できます。 逆に、特定の文字列を含まないなど、条件付 ...