Excel関数にはデータを検索して結果を表示する関数がいくつかあります。データを検索するには、もちろん引数に探したいデータを入力しますが、「検索文字列」「検索値」「検索条件」と表現が異なっているため、どのような違いがあるのかが気になります。
ところで、Excel関数がある程度使えるようになったら、複数の関数を比較して共通する部分と異なる部分を知ることによって、さらに関数を深く知ることができます。また、状況に応じて適切に関数を選び、関数を使うことができます。
そこで、今回は、データを検索して結果を表示する関数の引数について、「検索文字列」「検索値」「検索条件」の違いについて出題します。
目次
1.検索文字列
問題
各行で、A列の検索文字列とB列の対象で、FIND関数とSEARCH関数を用いた場合、計算結果はどうなるか。
解説
FIND関数とSEARCH関数はいずれも第1引数は「検索文字列」です。
- =FIND(検索文字列,対象,[開始位置])
- =SEARCH(検索文字列,対象,[開始位置])
検索文字列は「文字列」であるということに注意します。
- =FIND(A3,B3)
- =SEARCH(A3,B3)
しかし、検索文字列を数値にしてもエラーにはなりません。これは、Excelが自動的に数値を文字列に変換して検索しているからです。
検索文字列に数値データを指定すると正しく検索できないことがあります。例えば「13.5%」のなかに「3.5%」という文字列が含まれているように見えますが、エラーになります。
パーセンテージは表示形式であり、元の値は0.035と0.135なので見つかりません。表示形式が設定されているときは標準の形式(数値)を文字列として検索します。
3.50%(0.035)は、3.52%(0.0352)の中に含まれています。
文字列の場合でワイルドカードが使えるのはSEARCH関数だけです。第2引数が数値の場合も文字列とみなされるので、エラーになりません。
検索文字列は原則として文字列のみであり、数値を指定した場合は文字列とみなされます。検索文字列も対象も文字列として考えますので数値と文字列は区別されません。また、表示形式が設定されている数値は、標準の状態の数値を文字列とみなして検索します。
2.検索値
問題
セルA3~A5の各データを検索値として、VLOOKUP関数を用いてセル範囲B3:B5を検索して1列目を表示しなさい。ただし、セルB3は文字列として入力するものとし、第4引数は完全一致とする。
解説
VLOOKUP関数の第1引数は「検索値」です。
- =VLOOKUP(検索値,範囲,列番号,[検索方法])
セルA3を検索値として、セル範囲B3:B5の1列目を完全一致で検索します。エラーになります。検索値の場合、数値は文字列とは異なるものとして扱われます。
- =VLOOKUP(A3,$B$3:$B$5,1,0)
45.00%を検索値として検索すると、0.45が抽出されます。表示形式が設定されているときは標準の形式(数値)として検索します。
VLOOKUP関数はワイルドカードが使えますが、ワイルドカードが使えるのは文字列の場合だけです。「*67*」を検索値として検索しても、数値の67は抽出されません。
検索値は、数値と文字列を別のものとして扱い、数値の表示形式は無視されます。ワイルドカードは文字列なので、数値は検索できません。このことは、VLOOKUP関数だけでなくHLOOKUPやMATCHの場合も同様です。
3.検索文字列と検索値の違い
ここで、検索文字列と検索値の違いと共通点をおさらいしましょう。
(1)引数にすることができるデータの種類
マイクロソフトの公式の説明によると、FIND関数、SEARCH関数の検索文字列は、「検索する文字列」を指定することになっています。英語では「text」です。つまり、文字列型(String)です。数値の場合は文字列化されます。
Find_text Required. The text you want to find.
検索文字列 必ず指定します。検索する文字列を指定します。
VLOOKUP関数の検索値は、「値またはセルへの参照」を指定することになっています。英語では「value」とされています。文字列ではなく値であることに注意します。数値は数値、文字列は文字列のままです。
Lookup_value can be a value or a reference to a cell.
Lookup_valueには、値またはセルへの参照を指定できます。
(2)数値を指定した場合
検索文字列は「文字列」だけしか考えないので、数値を指定すると文字列化して考えることになります。したがって、数値の「23」と文字列「23」は区別されません。これに対して、検索値の場合は、数値と文字列を両方引数とすることができ、これらを区別して考えます。
(3)ワイルドカード
ワイルドカードは特殊な役割を持つ「文字」であり、数値ではありません。そして、ワイルドカードを含むデータは「文字列」です。数値にワイルドカードは使えません。しかし、SEARCH関数の場合、数値も文字列とみなされるので、数値も抽出されます。これに対して、検索値の場合は数値と文字列を区別するので、ワイルドカードを使った文字列で検索しても、数値は抽出されません。
(4)共通点
検索文字列と検索値の共通点は次の通りです。
- セル参照や数式を利用して、検索したいデータを作ってもよい
- 数値の表示形式は無視され、標準の形式で考える
4.検索条件
問題
セルB3~B10の各データを検索条件として、セル範囲A3:A6のなかから検索条件に該当するデータの個数を、COUNTIF関数を用いて求めなさい。ただし、セルA4、B4、A6、B6は文字列として入力するものとする。
解説
COUNTIF関数の第2引数は「検索条件」です。
- =COUNTIF(範囲,検索条件)
マイクロソフトの公式の説明によると、COUNTIF関数の検索条件は、「数値、式、セル参照、または文字列」を指定することになっています。検索条件を引数とする関数は、SUMIF、COUNTIFSなどたくさんありますが仕様は同じです。
criteria A number, expression, cell reference, or text string that determines which cells will be counted.
検索条件 個数の計算対象となるセルを決定する条件を、数値、式、セル参照、または文字列で指定します。
前述のとおり、式やセル参照が使えるのは「検索値」の場合も同じであり、検索したいデータを指定することに変わりはないので、その意味では「検索値」と「検索条件」はほぼ同じということになります。
ところが、検索条件を数値の「23」にすると、数値と文字列の「23」が両方カウントされます。また、文字列の「23」を検索すると、数値と文字列の「23」が両方カウントされます。
- =COUNTIF($A$3:$A$6,B3)
また、日付を検索値とした場合、文字列だけでなくシリアル値もカウントされます。日付文字列を検索費とした場合もシリアル値をカウントします。つまり、数値に変換できる文字列や日付はすべて、表示形式を無視した数値に変換してカウントしているのです。
COUNTIF関数もワイルドカードが使えますが、ワイルドカードが使えるのは文字列の場合だけなので、数値は対象外となります。
検索条件を文字列で指定する場合に限り、先頭に「比較演算子のような記号」を入力することができます。これはあくまで「比較演算子のような記号」であって、比較演算子ではありません(参考:【Excel】COUNTIFやSUMIFの「検索条件」総まとめ、ワイルドカード、比較演算子との違い)。比較演算子とは微妙に仕様が異なりますが、基本的には比較演算子と同じような使い方ができます。イコールを先頭につけるのとつけないのでは同じです。
先頭に不等号がある場合は数値のみが対象となります(比較演算子のような記号について詳しくは後述)。
5.検索値と検索条件の違い
ここで、検索値と検索条件の共通点と違いをおさらいしましょう。
(1)共通点
検索値と検索条件の指定できるデータの種類はいずれも、数値と文字列です。「探したい値を指定する」という考え方は同じです。そして、探したい値をセル参照または数式で作っても良いです。
ワイルドカードは文字列でしか使えず、文字列を検索するときに使うものなので、数値として入力されたデータは対象外となります。
(2)数値に変換できる文字列
文字列の中には数値に変換できるものがありますが、検索値の場合は「数値」と「数値に変換できる文字列」は区別されます。これに対して、検索条件の場合は「数値に変換できる文字列」を数値に変換して比較するため、原則として区別されません。
検索条件は、その先頭に比較演算子のような記号(詳しくは後述)を付けることによって、大小関係を指定することができます。
検索文字列、検索値、検索条件の違いをまとめるとこんな感じになります。
6.補足:比較演算子のような記号について
論理式や比較演算で使われる比較演算子(等号、不等号)と、検索条件で使われる「比較演算子のような記号」は、厳密に言えば異なる物です。また、比較演算ではTRUEであっても、検索条件ではFALSEになることもあります。
詳しくはこちらの記事をご覧ください。
7.検索機能との違いについて
最後に、検索機能との違いについて考えてみましょう。Excelには文字列を検索する機能があります(Ctrl+F)。この画面は「検索する文字列」を入力します。FIND関数などの「検索文字列」と同じように、数値を入力した場合も文字列に変換して検索します。ワイルドカードは使えますが、比較演算子は使えません。
普通に検索すると完全に一致するものだけでなく、指定した文字列を含む物すべてが表示されます(参考:【Excel】特定の文字列を含むセルを全部選択するには[すべて検索]をして[すべて選択]をすればよい)。
オプションで、「セル内容が完全に同一であるものを検索する」にチェックを入れると、完全に一致するセルだけを検索することができます。
解説は以上です。