Office365に新しく追加された、FILTER関数を使えばリスト(表)から条件に合うものを抜き出すことができます
- FILTER関数を使えば、条件に合うDATA(行)を別の場所に抜き出すことができます
- 1.VLOOKUP関数で、条件に該当する複数のDATAを表示
- 2.「フィルター機能」で条件に合うものを表示
- 3.FILTER関数を使って別の場所に、条件に合うデータのリストを作成
FILTER関数を使えば、条件に合うDATA(行)を別の場所に抜き出すことができます
今までも、表(リスト)から条件に合うものを表示させる方法にはいくつかありましたが、どの方法も使いにくい点がありました。
今回新たに追加されたFILTER関数は、革新的な新しい機能、スピル(溢れる)特性により簡単に条件に合うデータを抜き出すことができるようになりました。
1.VLOOKUP関数で条件に合うものを"抜き出して表示"
条件に合うデータが "1つ" しかない場合であれば、VLOOKUP 関数を使って条件に該当するデータを抜き出すことができます。
しかし、VLOOKUP 関数は最初に条件に該当するデータ(のみ)を抽出してしまうため、複数のデータが条件に該当する場合には使うことができません。
条件に合う「複数の結果を表示」させるためには、他の関数(COUNTIF関数等)と組み合わせる必要があります。
2.「フィルター機能」で条件に合うものを"表示"
「フィルター機能」を使えば簡単に条件に該当する複数のDATAを "表示" させることが可能です。
しかし、フィルター機能は「元のリストにフィルターをかけて」条件に非該当のDATAを隠す方法なので、 "別の場所" に表示させたい場合は「可視セル」の機能でコピペするなど面倒な作業が必要です。(※ 最新バージョンではそのままコピペ可能?)
しかも元のデータを追加・修正した場合は、その都度作業が必要になります。
3.「FILTER関数」で条件に合うものを"抜き出して表示"
FILTER関数は検索した「結果」が複数になってもスピル(溢れる)特性によりすべての「結果」が表示されるので、あらかじめ「結果が何個になるか」を気にする必要はありません。
そして、FILTER関数を使って抜き出したファイルは、元のデータを追加・修正すれば自動的に更新されます。
1.VLOOKUP関数で、条件に該当する複数のDATAを表示
VLOOKUP関数は職員名簿から、特定の職員のDATAを検索するような「表引き」をする際にはとても使い易い関数です。
しかし、特定の職員の「勤怠データ」を抽出するような、「条件に該当するものが複数ある」場合には使うことができません。
「青空一郎」の8月の勤怠データを抽出する
「遅刻」や「早退」などの勤怠データのみを集計した一覧表から特定の職員のデータだけを抽出する場合、同一職員のデータが複数ある場合があります。
- 青空一郎 8月1日 遅刻
- 青空一郎 8月3日 欠勤
- 青空一郎 8月5日 早退
このような場合VLOOKUP関数の特性で、そのままでは1つ目のデータしか表示できません。
これを回避するためには、COUNTIF関数を使って条件に合うデータが "何番目" に出てきたかをカウントし、その "値" と "職員番号" を連結することで「同じ職員の異なるデータ」にします。
VLOOKUP関数を使って検索する際には、用意しておいた表題の"数値"と"社員番号"を連結して"検索キー"を作成することで回避します。

COUNTIF関数を使って「検索キー」を作成
COUNTIF関数を使って、同一のデータに ”連番" を付けて「検索キー」にします。
出現回数のフィールド(項目)にCOUNTIF関数を入力します、引数「範囲」は「=$E$3:E3 」と範囲指定の"始点"を絶対参照にし"終点"を相対参照にします。
引数「条件」は相対参照で指定します。
セル番地「C3」に入力した数式を下方向にコピーすることで、相対参照にした、引数「条件」の部分が1つずつ増加します。
それにより、1行目からその行までに同一データが「何個」あったかをカウントします。
「出現回数」と「社員番号」のフィールド(項目)を "&" で連結して「検索キー」にします。

VLOOKUP関数で、勤怠情報を抜き出す
VLOOKUP関数でB列~G列の左端の「検索キー」のフィールド(項目)を検索します。
引数「検索値」は "社員番号" と、用意しておいた項目名「No.」の "値" を演算子 "&" で連結したものとします。
- 引数「検索値」に「No.」と「社員番号」のフィールド(項目)を"&"で連結して入力
- 引数「範囲」に"B列からG列までの列全体"を指定します。(※ データが増えても対応できる)
- 引数「列番号」に"4番目"の「氏名」を指定

「勤務状態」に数式を入力して、下方向にコピー
「勤務状態」のフィールドに「氏名」の数式をコピーして、引数「列番号」を"6"に変更。
「氏名」と「勤務状態」の数式を、下方向にコピー。

このように、VLOOKUP関数で条件に合致するものが複数あるものを抜き出すには、とても複雑な作業が必要です。
- COUNTIF関数で、検索条件に該当するデータが範囲内で"何番目に出現したのか"を算出
- "何番目に出現したか"の"値"と「社員番号」を連結(&)して「検索キー」を作成
- 「氏名」のフィールド(項目)に入力した、VLOOKUP関数の"検索値"を、検索キーを入力した"セル"と用意した「No.」のセルを連結(&)したものにする
- 「勤務状態」のフィールドにも、VLOOKUP関数を入力
このような複雑な手順で最初に出現した「青島一郎」と2番目に出現した「青島一郎」は異なるデータとして検索することで、VLOOKUP関数の "最初に条件に合致したものしか抽出しない" という欠点を回避します。
問題点は、最初に「No.」として用意しておいた数以上の「結果」があった場合には表を作り直す必要があり、逆に用意した「No.」の数より「結果」が少なかった場合がエラーが表示されてしまいます。
エラーを回避するためには"IFERRO関数"を組み合わせる必要がありさらに数式が複雑になってしまいます。
2.「フィルター機能」で条件に合うものを表示
フィルター機能は、"データタブ" ➡ "フィルター" からでも使うことができますが、今回は「表(リスト)」をテーブル化してからフィルター機能を使います。
表(リスト)を「テーブル化」する
- 「表(リスト)」のどこか1カ所を選択状態にする
- 「挿入」タブを選択
- 「テーブル」をクリック
- テーブルの作成ダイアログで、"テーブルに変換される範囲"が正しく選択されていることを確認
- 「先頭行をテーブルの見出しとして・・・」にチェックを入れる
- 「OK」をクリック

テーブル化された表で「フィルターをかける」
フィルター機能は、条件に合うものを抽出して表示」するのではなく「条件に合わないものを見えなくする(隠す)」仕組みです。
- 「氏名」のフィールド(項目)の "フィルターボタン" をクリック
- フィルターのダイアログで「すべて選択」のチェックを外す
- 「氏名」のフィールドの全ての "要素" の選択が解除されました
- 表示したい「青空一郎」にチェックを入れる

「青空一郎」のみが表示されました
「青空一郎」以外の部分に "フィルター" がかかり、見えなくなりました。

このように、フィルター機能を使えば簡単に条件に合うものだけを表示させることができます。
フィルターをかけた状態で "コピー して貼り付け" てやれば、条件に合うものだけを抜き出すことができます。
しかしこの方法では、元のデータ(表)が更新されるたびに作業をやり直す必要があります。
表を「テーブル化」して作業効率を上げる - Excelの機能を活用して、事務作業の省力化や経営分析をする
3.FILTER関数を使って別の場所に、条件に合うデータのリストを作成
「FILTER関数」は、スピル配列の特性を持つ新しい数式 - Excelの機能を活用して、事務作業の省力化や経営分析をする
FILTER関数を使えば、VLOOKUP関数のような複雑な手順を踏むことなく簡単に条件に合うデータ(行)を抜き出すことができます。
FILTER関数とVLOOKUP関数の最大の相違点は、FILTER関数は"スピル特性"により「数式が入力されていない部分にも"結果"が表示される」ことです。
条件に合致するデータが複数ある場合、数式を入力してあるセルの"下側の範囲"に、スピル(溢れる)ように「ゴースト」として「結果」が表示されます。
この特性により、あらかじめ検索結果の "数 が何個になるか"気にする必要がありません。

FILTER関数を入力
条件に合致する「結果」を表示させる範囲の「左上」にFILTER関数を入力。
「結果」が複数ある場合は、スピル特性により「ゴースト」として数式のない部分に表示される。
※ 表示される範囲に"データ"があると「スピルエラー」になるので注意
- 引数「配列」に"表全体"を指定
- 引数「条件」に「氏名」のフィールド(項目)を指定
- 「氏名」のフィールドに続いて、演算子 "=" を入力
- "=" に続いて、検索条件を入力したセル "H2" を入力
※ "範囲" には「項目名」を含めない

抜き出したデータは、表示形式が「標準」になるので修正
「日付」のフィールドの表示形式を修正する。
- 「日付」のフィールド(項目)を選択して、"右クリック"
- プルダウンリストから「セルの書式設定」を選択
- セルの書式設定のダイアログで、「表示形式」のタブを選択
- 分類で「日付」を選択
- 種類のボックスで"2012/3/14"を選択
- 「OK」をクリック

選択したフィールド(項目)のみを表示する
FILTER関数は通常1行(レコード)を抽出するので、全てのフィールド(項目)が表示されます。
少し複雑になりますが、FILTER関数をネスト(入れ子)構造にすることで任意の項目のみを抽出して表示させることができます。
FILTER関数を使って、「任意の項目だけ」を抽出する - Excelの機能を活用して、事務作業の省力化や経営分析をする
「配列リテラル」の仕組みで、任意の項目だけ表示する
配列リテラルの仕組みを使えば、任意の項目だけ表示することができます。
あらかじめ「表示したい項目」を用意しておき、元の項目とCOUNTIF関数を使って比較して「配列リテラル」を作成します。
FILTER関数をネスト(入れ子)構造にして、外側のFILTER関数の引数「含む」にCOUNTIF関数でつくった数式を入れます。

このように、今までは難しかった「条件に合うデータを抜き出す」作業が、FILTER関数を使えば簡単にできるようになります。
- FILTER関数を使えば、条件に合うDATA(行)を別の場所に抜き出すことができます
- 1.VLOOKUP関数で、条件に該当する複数のDATAを表示
- 2.「フィルター機能」で条件に合うものを表示
- 3.FILTER関数を使って別の場所に、条件に合うデータのリストを作成