Windows TIPS
[Office Master]
  Windows TIPS TOPへ
Windows TIPS全リストへ

Excelで柔軟なデータ・フィルタリングを行う

解説をスキップして操作方法を読む

WINGSプロジェクト
本田将輝
2004/04/10
 
対象ソフトウェア
Excel 2000
Excel 2002
Excel 2003
Excelシート上の表データを絞り込んで表示する場合、標準的な「オートフィルタ」を利用することができる。
複雑な条件に基づく絞り込みを行いたい場合には、「フィルタオプションの設定」を利用することでより柔軟な絞り込みを行うことが可能になる。
フィルタオプションの設定を利用すると、表データそのものをフィルタリング表示するだけでなく、フィルタリング結果を別のシート領域に出力することも可能である。
 
解説

 Excelは便利なアプリケーションで、1つのワークシートには縦方向で最大6万5536行までのデータを格納することができる。ただし、実際にディスプレイに表示できる情報量には限度があり、すべての情報(セル)を参照するには大量のスクロールを余儀なくされることも少なくないはずだ。

 このような大量データの操作に対する解として、Excelは「フィルタ」機能を提供している。フィルタとは、条件を指定することによって、該当する情報のみを絞り込んで表示させる仕組みのことだ。実際には、「オートフィルタ」と「フィルタオプションの設定」という2種類の機能名称で提供している。

 オートフィルタ機能を利用すると、表形式でまとまった一連のデータの見出し部分がプルダウン・リストボックスに変化し、選択肢から絞り込みの対象としたいデータを選ぶことによって絞り込み表示を実現できる。

「オートフィルタ」の例
表内の適当なセルを選択した状態で、[データ]メニューから[フィルタ]−[オートフィルタ]を選択すると、オートフィルタ機能を利用することができるようになる。オートフィルタ機能を設定すると、見出しセル部分がプルダウン・リストボックス化し、そこからデータの絞り込みが可能になる。
  見出しセル部分がプルダウン・リストになる。リストから項目を選択することにより、指定された内容や条件の行だけが表示される。

  • サンプル・ファイルのダウンロード
    注:今回のサンプル・ファイルfy2003_1q_log.xlsをダウンロードするには、上のリンクを右クリックして、fy2003_1q_log.xlsというファイル名で保存してください)

 オートフィルタ機能は単純な絞り込みには便利だが、「項目をまたがったOR条件」などの複雑な絞り込み条件には対応していない。そのような場合は、フィルタオプションの設定機能を利用するとよい。

 本稿では、オートフィルタ機能よりも柔軟なフィルタリングを実現できるフィルタオプションの設定について解説する。


操作方法

手順1―抽出条件を指定するための表を作成する

 まず、抽出条件を指定する部分を表の形でワークシート上に作成する。

 抽出条件の表は、見出し部分に「条件を設定する項目見出し名」を、そしてその下には条件を記述する。条件は複数行に記述することが可能で、同一行に記述した内容はAND条件(すべての条件が一致)、別の行に記述した内容は行単位でOR条件(いずれかの条件が一致)として解釈される。条件には、数値項目見出しの下の場合は「>」「>=」「<」「<=」「<>」といった比較演算子を用いて比較対象となる数値を指定することができる。文字項目見出しの下の場合は、以下の表に示すワイルドカード文字を組み合わせて指定することができる。

入力する文字列 説明
?(疑問符) 任意の1文字を検索する場合に利用。例:「フェ?ズ」と入力すると、「フェーズ」や「フェイズ」に一致する
*(アスタリスク) 任意の文字数を検索する場合に利用。例:「Office*」と入力すると、「Office 2003」や「Office XP」に一致する
~(チルダ)(?、*、~の前に入力) 疑問符、アスタリスク、チルダそのものを検索したい場合に、文字をエスケープするために利用。例:「SQL~*Net」と入力すると、「SQL*Net」に一致する
文字項目見出し条件で利用できるワイルドカード文字
ワイルドカード文字を使うと、部分一致する文字列を検索することができる。

 例えば、以下のような表を作成したとする。

抽出条件の表の記述例
タイトルや対象年月、アクセス数を指定して条件を作成する。ここでは2つの条件を指定している。

 この場合、「サーバサイド」で始まるページ・タイトルで2003年6月に1000件以上のアクセスがあったログと、ページ・タイトルを問わず、2003年5月に800件以上のアクセスがあったログを表示する指定を意味する。

 抽出条件表を作成する場所については、抽出対象のデータのあるワークシート上でもよいし、別のワークシート上でも構わない。ただし、同じワークシートに作成する場合は、抽出対象データ領域より上もしくは下の余白セルに設定する(左右の余白に設定すると、フィルタリングを実行するとともに、抽出条件の表も一緒に非表示になってしまう可能性がある)。

 抽出条件の表を別ワークシートに設定した場合、フィルタリングを実行するたびに、後述する[フィルタオプションの設定]ダイアログ上の範囲設定を行う必要がある。同一ワークシートに設定すれば、[フィルタオプションの設定]ダイアログ上の設定は前回の内容をそのまま利用できる。

 逆に、同一ワークシート内に抽出条件の表を記述すると、ディスプレイ上、肝心のデータ部分を表示できるスペースがその分狭くなる。

 どちらを選択すべきかはデータ量やフィルタ設定を実行する頻度との兼ね合いで決まるため、一概にはいえない。本稿では、対象となるデータの列数が少ないことに着目し、抽出対象データと同一ワークシートの、データより下のセル位置に抽出条件表を作成することにする。対象となるデータの列数が少なくディスプレイの右側に空きスペースがあるため、同一ワークシートを別ウィンドウで開き、左右に並べて表示させることにする(Excelシートやセルをディスプレイ上に効率的に表示する手法は、Windows TIPS「Excelのシートやセルを利用しやすいように表示する」参照)。

手順2―抽出対象データ領域そのものをフィルタリング表示する

 まず、抽出した結果をどこに表示させるかを決める。抽出対象データ領域そのものをフィルタリング表示させたい場合は、データ領域のいずれかのセルを選択する。抽出対象データのあるワークシートはそのままにして、別のワークシート上に抽出結果を表示させたい場合は、抽出先ワークシートを選択する。その後、[データ]メニューから[フィルタ]−[フィルタ オプションの設定]を選択して[フィルタ オプションの設定]ダイアログを表示させる。

[フィルタ オプションの設定]ダイアログ
  抽出対象データ領域そのものをフィルタリング表示させたい場合はこれを選択する。
  抽出対象データ領域以外の場所に抽出結果を表示させたい場合はこれを選択する。
  抽出対象データ領域のセル範囲を指定する。
  抽出条件の表のセル範囲を指定する。
  別のワークシートに抽出結果を表示する場合にのみ有効。詳細は手順3参照。
  抽出結果に重複するレコードがあった際に1レコードのみ表示させたい場合はこれをオンにする。

 「抽出先」には、抽出対象データ領域そのものをフィルタリング表示させたい場合はを、抽出対象データ領域以外の場所(同一ワークシートの余白または別のワークシート)に抽出結果を表示させたい場合はを選択する。の「リスト範囲」には抽出対象データ領域のセル範囲を、の「検索条件範囲」には抽出条件の表のセル範囲をそれぞれ指定する。

 の「抽出範囲」のオプションは、別のワークシートに抽出結果を表示する場合にのみ有効である。抽出対象データ領域のセルを選択したうえで[フィルタ オプションの設定]ダイアログを開いた場合は、このオプションは入力できない。別のワークシートに抽出結果を表示する場合に、このオプションをどのように設定すればよいかについては手順3にて説明する。

 [フィルタ オプションの設定]ダイアログ上の設定が完了したら、[OK]ボタンをクリックすることでフィルタリングの処理が実行される。繰り返しになるが、抽出条件の表を別ワークシートに設定すると、フィルタリングを実行するたびに、毎回[フィルタオプションの設定]ダイアログ上のセル範囲設定を行う必要がある。同一ワークシートに抽出条件表を設定した場合は、[フィルタオプションの設定]ダイアログ上の設定は前回の設定内容が初期値として残るため、前回の内容をそのまま利用することができる。

[フィルタ オプションの設定]によりフィルタ実行した例
「サイトアクセスログ(2003年度1Q)」というデータ表に対し、「サーバサイド」で始まるページ・タイトルで、2003年6月に1000件以上のアクセスがあったログと、ページ・タイトルを問わず、2003年5月に800件以上のアクセスがあったログのみを表示するようフィルタ実行したところ。
  抽出結果。タイトルが「サーバサイド」、もしくはアクセス件数が800件以上のデータが抽出されている。これは同じシートを2つのウィンドウで表示しているところ。結果は同じシート上の、元の選択位置に表示されている。

 フィルタリング状態を解除してすべてのデータを表示させたい場合は、[データ]メニューから[フィルタ]−[すべて表示]を選択する。

手順3―抽出対象データ領域以外の場所にフィルタリング結果を表示させる方法

 抽出対象データ領域以外の場所に抽出結果を表示させる場合は、抽出対象データのうち、表示させたい見出し項目のみを出力することが可能である(もちろん、すべての見出し項目をそのまま出力することも可能)。

 すべての見出し項目をそのまま出力したい場合は、[フィルタ オプションの設定]ダイアログの「抽出範囲」欄に、出力開始位置としたいセルを指定する。新しいワークシートのセル「B2」を基点としてフィルタリングした結果を出力したい場合の例を以下に紹介する。

別ワークシートにすべての見出し項目を出力する設定例
「抽出範囲」欄には新しいワークシート(サンプルでは「抽出結果@」ワークシート)のセル「B2」を指定する。「抽出結果@」ワークシートのセル「B2」を直接選択することで、「抽出範囲」欄には「抽出結果@!$B$2」という記述がセットされる。なおこのダイアログ(メニュー)を実行する前に、抽出先のシートを(作成して)アクティブにしておくこと。抽出元のシートをアクティブにした状態で実行すると、[抽出データを作業中のシート以外へコピーすることはできません。]というエラーが表示されることがある。
  別のワークシート上へ抽出するにはこれを選択する。
  抽出元のデータ範囲。
  抽出条件。
  抽出先のシートと範囲の指定。

 上記設定の場合の検索結果は次のとおり。

別ワークシート上への出力
「抽出結果@」というワークシート上へ抽出した場合の例。先ほどの例と同じ結果が、別のワークシート上へ出力されている。
  元のデータが置かれているシート。
  結果の出力されているシート。

 なお、別ワークシートへフィルタリング結果を出力したい場合は、出力先のワークシートをアクティブにした(開いた)状態で[データ]メニューから[フィルタ]−[フィルタ オプションの設定]を選択して[フィルタ オプションの設定]ダイアログを開く必要がある。そうしないと、[抽出データを作業中のシート以外へコピーすることはできません。]というエラーが表示されることがあるので注意が必要だ。抽出元シートをアクティブにするのではなく、抽出先のシートをアクティブにしてからメニューを実行していただきたい。

必要な見出し項目のみを出力する方法

 次に、必要な見出し項目のみを出力したい場合について紹介する。この場合は、新しいワークシート上に出力したい見出し項目名をあらかじめ記述しておく。ここで記述する見出し項目名は、抽出対象データの見出し項目名と完全に一致させる必要がある。さもないとフィルタリング処理がエラーになるので要注意だ(抽出対象データの見出し項目名をそのままコピー&ペーストする方法が、一番問題が起きにくいだろう)。本稿では、サンプル・データのうち「ページタイトル」と「対象年月」という見出し部分のみを出力した例を次に紹介する。

抽出先シートの例
抽出する先のワークシートには、出力したい見出し項目名をあらかじめ用意しておく。
  出力したい見出し。ここでは「ページタイトル」と「対象年月」だけを抽出することにする。

 [フィルタ オプションの設定]では、抽出範囲として、上の見出しの部分を選択しておく。

別ワークシートに必要な見出し項目を出力する設定例
「抽出範囲」欄には、新しいワークシート(サンプルでは「抽出結果A」ワークシート)上にあらかじめ記述しておいた見出し項目のセル範囲「B2:C2」を指定する。「抽出結果A」ワークシートのセル「B2〜C2」を直接ドラッグして選択することで、「抽出範囲」欄には「抽出結果A!$B$2:$C$2」という記述がセットされる。
  別のワークシート上へ抽出するにはこれを選択する。
  抽出元のデータ範囲。
  抽出条件。
  抽出先のシートと範囲の指定。

 上記設定の場合の検索結果は次のようになる。End of Article

見出しを指定して抽出した例
指定された見出しの項目のみが抽出される。先ほどの例と違って、アクセス数は表示されていない。
  指定された項目のみが表示されている。
 
関連記事
  Windows TIPS:Excelのシートやセルを利用しやすいように表示する(Windows Server Insider)
     
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間