たまには、"スピル系"ではない関数の話をしましょうか。特に最近は(私の趣味でw)LAMBDA関数など難しい解説が多かったですからね。
上図はVLOOKUP関数の使用例です。まぁ、普通です。さて、VLOOKUP関数には4つの引数を指定できますが、4番目の引数にはFALSEを指定しています。一般的にここは「TRUEまたはFALSEを指定します」に続けて「まぁ、普通はFALSEです」のように言われます。FALSEって何ですか?どういう意味ですか?と聞くと「完全一致です」って。何だか、分かったような分からないような気分です。本稿では、このFALSEについて詳しく解説します。
VLOOKUP関数の入力中、4番目の引数のところにくると、下図のようにリストが表示されます。
まず重要なことは、ここで選択できる"TRUE"と"FALSE"には、意味がないということです。一般的に"TRUE"は「正しい, 真」で"FALSE"は「正しくない, 偽」と言われます。じゃ、ここで"FALSE"を指定すると「VLOOKUP関数で、何か"正しくない"ような動作(検索)をするの?」みたいに感じるかもしれませんけど違います。この"TRUE"と"FALSE"には意味がありません。VLOOKUP関数が行う2種類の動作を切り替えるための、単なるスイッチです。別に、"TRUE"と"FALSE"じゃなくたって、何なら"○"と"△"でも、"赤"と"黒"でも、"東京"と"大阪"でも、何でもいいんです。あ、実際にそんな適当な文字は指定できませんよ。指定できるのは、あくまで"TRUE"または"FALSE"だけです。いずれにしても、この"TRUE"と"FALSE"ってのは「どちらの動作を行うのか?」を切り替えるために指定する、ただの"目印"みたいなものです。
では、その「VLOOKUP関数が行う2種類の動作」とは何でしょう。それは、上図のリストや、リストで選択したときに表示されるヒントに書かれています。
書かれていませんでしたね。なんとも「だから?」という感じです。何のヒントにもなりません。では、順番に解説します。まず分かりやすい「FALSE - 完全一致」から。こちらは、読んで字のごとく「1番目の引数に指定した"検索語"が、範囲の左端列で、完全に一致するかどうか」を調べます。だから、完全に一致しない(つまり、見つからない)ときは、エラーになります。
実務では、こうした動作が求められます。"製品コード"や"請求番号"などを検索したとき、もし見つからなかったら、適当に別の値が返っては困ります。見つからなかったら、"見つからなかった(エラー)"という状態になって欲しいです。なので実務では、一般的に"FALSE"を指定することが多いのですが、この「完全に一致する」というルールが、実務ではときどき問題になります。たとえば、検索する文字列にスペースなどの"表示されない"ゴミが付属していたり、あるいは、セル内の値が"数値形式"なのか"文字列形式"なのか、日付を検索するとき"年月日"で指定するのか"シリアル値"を指定するのか、などによって「完全に一致する」かどうかが変わってきます。まぁ、いずれにしても実務では、この「完全に一致する=FALSE」を指定するケースが大多数です。
では、多くの人が悩んでいる「TRUE - 近似一致」です。"近似"とは「検索語そのものではないけど、検索語に"近い"値」を意味します。ここからは、表の構造を変えて、数値を検索するケースで解説します。
上図は、4番目の引数に"FALSE"を指定して「完全一致」で検索しています。検索語の"300"が見つかったので"佐倉"を返しました。このときは、4番目の引数に"TRUE"を指定しても同じ結果になります。
では、セルE1に検索語として"250"を指定したらどうでしょう。"FALSE"の「完全一致」で検索すると"250"は見つかりません。なのでエラーになります。しかし「TRUE - 近似一致」では、検索語を探す範囲(ここではA列)の中で、検索語が見つからなかったとき、検索語(ここでは"250")を超えない値のうち、最も大きい値が、見つかったとされます。
つまり、200~299内であれば、どんな値であっても、"200"が見つかったことになり、該当する値が返されます。これが"近似一致"です。ザックリ言うと「TRUE - 近似一致」とは「完全に一致した値がなくても、ある範囲内であれば、見つかったものとする」という検索です。
そんな検索に、何の意味があるの?って思いますか。そう、実務ではこんなこと、めったにやりません。こうした検索が必要になるケースというのは、たとえば次のような料金表を検索するときです。
もし、あなたが、こういう"範囲検索"をしたいのでしたら、VLOOKUP関数の4番目の引数に"TRUE"を指定してください。もちろん、誰でも分かるように、この「TRUE - 近似一致」には、2つのポイントがあります。
文字列を検索するときにも"TRUE"を指定できます。ただし、その場合は、セルに入力されている文字列の"文字コード"が「超えない範囲で、最も大きい値」で検索されます。普通そんなことしませんよね。そして2番目の「昇順に並んでいなければならない」です。"超えない範囲"で探すのですから、検索する範囲(ここではA列)が、昇順に並んでいなければなりません。これがヒントとして表示される「範囲の先頭列の値は昇順で並べ替えておく必要があります」です。な~んてことを考えると、実務で使うケースはほとんどない、と思われます。とはいえ注意しなければならないのは、VLOOKUP関数の4番目の引数("TRUEまたは"FALSE")を省略すると"TRUE"が指定されたものとみなす、という仕様です。これは、いただけません。だからVLOOKUP関数を入力するときは、いつも"FALSE"を指定しなければならないのです。ちなみに、新しく追加されたXLOOKUP関数などは、こうした動作を切り替える引数を省略すると「完全一致」で検索するように改良されています。
最後に補足です。4番目の引数に、"FALSE"ではなく"0"を指定するケースを散見します。
詳しい解説は割愛しますけど、"FALSE"と"0"は同じです。実務では、ほぼ必ず4番目の引数で「完全一致」を指定するので、ここは本来"FALSE"なのですが"0"も同じ意味になります。なぜ、"FALSE"ではなく"0"を指定するのかというと「"FALSE"と入力するより、"0"を入力する方が早い」という理由をよく耳にします。まぁ、それは一理ありますけど、それにしても、そんなに1秒や2秒の時間を急いでいる日本人が多いとは驚きです。みなさん、メチャクチャ時間に追われているんですね。だったら、VBAを学習したり、もっとExcelの基礎を理解すれば、数時間の短縮になるのに。そちらはやらないで、1秒や2秒にこだわる気持ちが理解できません。ま、いいです。ご存じなかった方は、要するに"FALSE"でも"0"でも同じ、ということだけ覚えといてください。