1つのリストに対して異なるフィルタ処理を定期的に実行する場合、複数の検索条件範囲を用意しておくと良いでしょう。
それぞれの条件範囲には名前を付けておきます。
そして、「フィルタオプションの設定」ダイアログボックスの「検索条件範囲」テキストボックスには、条件範囲のセル参照ではなく、名前を指定します。
この名前を変更するだけで、簡単に異なるフィルタ処理を実行できます。
下のリストにおいて、「給料」が50万円以上か、または、「年齢」が40歳以上の従業員の行を確認してみましょう。
こうした条件範囲を設定するために、ワークシートの上部に新しい行(ここでは6行)を挿入する。
検索条件を入力する。
検索条件は通常の文字列として入力されています。
見出し「給料」の下には
>=500000
また、見出し「年齢」の下には
>=40
が入力されています。![]()
「データ」「フィルタオ」「フィルタオプションの設定」を選択する。
下のようなダイアログボックスが表示されます。
「選択範囲内」オプションボタンが選択されていることを確認し、「OK」ボタンを押します。![]()
結果が下のように表示され、今までのリストから検索条件に一致しない行を非表示にし、条件に一致する行番号は異なる色で表示します。
![]()
これら2つの条件式は、異なる行に入力されている点に注意してください。
条件式を同じ行に入力した場合、フィルタを通過できるのは、2つの条件を両方満たす行のみとなります。
(同じ行の条件式はAND条件となります)
つまり、給料が50万円以上かつ年齢が40歳以上の従業員の行のみが表示されます。
検索条件範囲には、必要なだけの条件式を指定できます。
条件範囲に入力された条件は、次の規則に従って解釈されます。・同じ行に入力された条件式は、AND演算子が使用される。
・異なる行に入力された条件式には、OR演算子が使用される。
従業員リストにおいて、名前の頭文字が「周」「良」「卓」で始まる従業員の行を表示してみましょう。
検索条件範囲には、列見出し「名」を指定し、その下3行には、周、良、卓と入力します。
「フィルタオプションの設定」コマンドを選択したら、リスト範囲と、検索条件範囲を指定し、「OK」ボタンを押してください。
検索結果をしたに示します。
![]()
次に、名前の頭文字が、周、良、卓ではじまり、さらには年齢が40歳以上の従業員の行を表示してみましょう。
条件式 >=40 はすべての行に指定されていますが、これは、頭文字と年齢という2つの条件をどちらも満たす必要があるためです。
![]()
リストの外側にあるセルを参照する
次の図は、中間の給料を上回っている従業員の行を表示するためのフィルタ処理の例を示します。
このフィルタ設定に当たっては、まず、リストの外側のセルH2に次の数式を入力します。
=MEDIAN(F8:F22)
次に、このリストの外側のセルを参照する計算検索条件をセルA2に入力します。
A1:A2が検索条件範囲となります。A2の計算検索条件式は次のとおりです。
=F8>$h$2
フィルタ処理の結果、ステータスバーには、15行中7の行が見つかったというメッセージが表示されました。
この例では、次の点に注意してください。
論理値ではなく、検索条件範囲に入力されている数式そのものを確認したい場合は、「ウィンドウ」「新しいウィンドウを開く」コマンドを選択し、次に「ツール」、「オプション」ダイアログボックスの「表示」タブを表示して「数式」オブションをオンにしてください。2つのウィンドウのサイズと位置を調整することで、数式を表示したままリストの操作を行うことが可能となります。
次の表は、フィルタ処理の結果、中間の給料を上回る従業員レコードのみが表示されています。戻る
ただし、このワークシートは「給料」列を直接参照しています。=F8<MEDIAN($F$8:$F$22)
![]()
計算検索条件の使用で解説した計算検索条件を指定する際のガイドラインに従えば、リスト内のセルに対する参照には相対参照を使用しなければなりません。
しかし、F8からF22に対しては、絶対参照が使用されています。
これは、フィルタ処理の過程で「給料」列の各値を常に同じ値と比較するためです。
つまり、最初はF8とF8:F22の中間値が比較され、次にF9とF8:F22の中間値が比較されるように、F8:F22の中間値はいつも比較の対象として使用されます。この部分に相対参照を使用すると、最初の比較以外、正しい結果が得られなくなってしまいます。
「フィルタオプションの設定」ダイアログボックスには、フィルタを通過した行をワークシートの他の位置へコピーするためのオプションが用意されています。戻る
フィルタ処理の結果をストに表示する代わりに、他の位置へ抽出するには、「抽出先」グループの「指定した範囲」オプションボタンを選択し、「抽出範囲」テキストボックスに抽出先のセル範囲を指定してください。
抽出先を指定する最も簡単な方法は、抽出範囲の基点(左上隅のセル)となる空白セルを一つだけクリックすることです。
ただし、クリックする空白セルの右側お及び下側には、十分な空白領域があることを確認しておいてください。
Excelは、リストの見出しおよび検索条件にいつ値するすべての行を、指定された範囲へ抽出します。
このとき抽出範囲に入力されている既存のデータは、抽出によってすべて上書きされてしまいます。
抽出先のセル範囲をあらかじめ限定しておくことも可能です。この場合、抽出範囲がいっぱいになった時点で、データの抽出は中止されます。「フィルタオプションの設定」ダイアログボックスの「抽出範囲」テキストボックスに抽出先を指定すると、そのセル範囲にはExtractという名前が付けられます。ワークシート上での移動に、この名前を使用することが可能です。たとえば、列見出しを変更するために抽出範囲まで移動するには、「F5」を押し、「ジャンプ」ダイアログボックスの「移動先」リストボックスから"Extract"を選択してください。
リストのすべての列ではなく、特定の列のみを抽出するには、対象なる列見出しをあらかじめ抽出先にコピーしておきます。
そして、「フィルタオプションの設定」ダイアログボックスの「抽出範囲」テキストボックスには、列見出しをコピーしたセル範囲を指定します。
たとえば、上の従業員リストに対して「フィルタオプションの設定」コマンドを実行し、フィルタを通過した行の「姓」「名」「給料」列のデータのみをA100を基点とする抽出範囲に抽出するには、次の手順にしたがつて下さい。
1 列見出し「姓」「名」「給料」をセル範囲A100:C100にコピーする。
見出しの並び順は、リストと同じでなくてもかまいません。
2 「データ」「フィルタ」「フィルタオプションの設定」を選択する。
3 「フィルタオプションに設定」ダイアログボックスにの抽出先グループの「指定した範囲」オプションを選択し、リスト範囲と検索条件範囲を指定し、「抽出範囲」テキストボックスに「A100:C100」と入力し、「OK」ボタンを押します。
![]()
フィルタ処理間結果、抽出されるレコードの中に内容が全く重複するレコードが含まれていた場合、「重複するレコードは無視する」オプションによって、重複するレコードをすべて抽出するかどうか指定できます。(このオプションは「指定した範囲」オプションボタンが選択状態にある時のみ機能します。)戻る
たとえば、従業員リストから、数量50の社員名をすべて抽出する場合、そのまま抽出すると、同じ名前が繰り返し抽出されてしまいます。
同じ名前を繰り返し抽出しないようにするのは、次の手順に従ってください。
1 リストの上側または下側に検索条件範囲を設定する。
必要な列見出しは、「数量」だけです。
2 ワークシートの適当な位置に列見出し「社員名」をコピーする。このセルが抽出範囲となります。
3 「データ」「フィルタ」「フィルタオプションの設定」コマンドを選択する。
4 「フィルタオプションの選択」ダイアログボックスにリスト範囲と検索条件範囲を指定する。
5 「指定つれた範囲」オプションボタンを選択し、「抽出範囲」テキストボックスに列見出し「社員名」をコピーしたセルを指定し、「重複するレコードは無視する」チェツクボックスをオンにして、「OK」ボタンを押します。![]()
結果を下に示します。