図1のような、会合の出席者のリストがある。このリストを元に、特定の人、例えば「高橋」さんが出席するかどうかを調べたい。1人2人なら検索してしまえば話が早いが、人数が多かったり、出席者リストが頻繁に変わったりするような場合は面倒だ。

 こんなときは、「あるデータがリストに存在するかどうか」を調べるワークシート関数を使ってみよう。方法はいくつかある。

 最初は検索の定番MATCH関数を使う。MATCH関数は指定したセル範囲に特定の文字列が存在するかどうかを調べる関数だ。

 文字列が見つかった場合はその位置を、見つからなかった場合は#N/Aエラーを返す。今回は欠席かどうかを調べたいだけなので、位置は必要ない。MATCH関数の結果が#N/Aエラーになったかどうかを判定すればいい。これにはISNA関数を使う。ISNA関数は、引数に指定した数式が#N/AエラーのときTRUEを返す関数だ(図2)。

 マスターテーブルからの表引きに便利なVLOOKUP関数を使って調べることもできる。VLOOKUP関数も検索値が見つからなかったときに#N/Aエラーを返すからだ。

 MATCH関数と同じようにISNA関数を使って、結果が#N/Aエラーかどうかを判定しよう(図3)。  最後にエラー判定を使わない方法を紹介しよう。リストに「高橋」さんがいるということは、リスト中に少なくとも「高橋」が1つ以上存在することになる。逆に「高橋」さんがいないということは、リスト中の「高橋」の個数が0となる。これを判定するにはCOUNTIF関数が適している。COUNTIF関数の結果が0だったら欠席、そうでなかったら出席と考えればいい(図4)。

図1 出席者のリスト。この中に「高橋」さんがいるかどうかを関数で判定する


図2 MATCH関数は検索したい文字列が見つからないとエラーを返す


図3 VLOOKUP関数も検索に失敗すると#N/Aエラーを返す


図4 出席かどうかは「高橋」の個数をカウントしてもわかる