大文字と小文字を区別して値を取得する方法【Excel】

PC

はじめに

VLOOKUP関数の検索値は、大文字と小文字の区別ができないというデメリットがあります。そこで、今回は、EXACT関数、INDEX関数、MATCH関数を使用して、大文字と小文字の区別をした値の取得(ルックアップ)をしてみたいと思います。

今回は、EXACT関数、INDEX関数、MATCH関数を使用します。

tayuyu
tayuyu

前半はこれらの関数の概要なので、知ってるよという方は飛ばしてね。

EXACT関数

EXACT関数は、2つの文字列を比較して、完全一致している場合はTRUE、一致していない場合はFALSEを返す関数です。

  • 大文字と小文字の違いは区別されます
  • 書式の違いは区別されません

EXACT関数の書式

EXACT(文字列1, 文字列2)

文字列1必須比較したい文字列を指定します。
文字列2必須もう一方の比較したい文字列を指定します。
表1:EXACT関数の引数

EXACT関数の使用例

表2のような例でEXACT関数を使用してみます。

AB
1TOMATOTomato
2tomatotomato
表2:EXACT関数の使用例

例1

A1セルに入力されている「TOMATO」とB1セルに入力されている「Tomato」を比較します。「TOMATO」と「Tomato」は、異なるので、結果は「FALSE」となります。

=EXACT(A1,B1)

例2

A1セルに入力されている「tomato」とB1セルに入力されている「tomato」を比較します。「tomato」と「tomato」は、同じであるため、結果は「TRUE」となります。

=EXACT(A2,B2)

INDEX関数

INDEX関数は、指定した範囲、行番号、列番号からセルの値を取得する関数です。

INDEX関数の書式

今回は、配列形式のINDEX関数を使用します。

配列形式

INDEX(配列, 行番号, 列番号)

配列必須セルの範囲または配列を指定します。
行番号必須(※)範囲(配列)中の値を返す行を指定します。
※引数「配列」が1行のみの場合省略可能です。
列番号必須(※)範囲(配列)中の値を返す列を指定します。
※引数「配列」が1列のみの場合省略可能です。
表3:INDEX関数(配列形式)の引数

INDEX関数の使い方は下記をご覧ください。

MATCH関数

MATCH関数は、指定した検査範囲における検査値の位置を返す関数です。

MATCH関数の書式

MATCH(検査値, 検査範囲, [照合の種類])

検査値必須検査したい値またはセル参照を指定します。
検査範囲必衰検査値を検査する範囲(単一の行・列)または配列(1次元)を指定します。
照合の種類任意表2をご覧ください。
表1:MATCH関数の引数
1または省略検査値以下の最大値を検査します。ただし、検査範囲が昇順で並べ替えされている必要があります。
0検査値と等しい最初の値を検査します。
検査値にワイルドカード文字(*,?,~)を使用できます。
-1検査値以下の最小値を検査します。ただし、検査範囲が降順で並べ替えされている必要があります。
表4:MATCH関数の引数「照合の種類」

MATCH関数の使い方は下記をご覧ください。

大文字と小文字を区別して値を取得する

図1のような場合を考えます。

図1:例

VLOOKUP関数を使用して、F3セルの商品コード「F01」を検索値として、商品名である「APPLE」を取得したいとします。しかし、VLOOKUP関数が大文字と小文字を区別できないため、範囲の上にある商品コード「f01」を検索値として、商品名「apple」を取得してしまいます。


今回は、図1の例を用いて、大文字と小文字を区別して値を取得してみたいと思います。少し複雑になるため、以下の3STEPに分けてみます。

tayuyu
tayuyu

今回のポイントは、EXACT関数!

大文字と小文字を区別して値を取得するための流れ
  • STEP1
    EXACT関数で文字列を比較する
  • STEP2
    MATCH関数で一致している文字列の位置を取得する
  • STEP3
    INDEX関数で値を取得する

STEP1 EXACT関数で文字列を比較する

はじめに、EXACT関数で、F3セルに入力されている「F01」とB3セルからB7セルの商品コードの内容が完全に一致するかどうかを判定します。

図2:EXACT関数による文字列の比較

G3セルに上記のように入力します。

=EXACT(F3,B3:B7)

今回は、一つの数式で値を取得できるように、配列数式を使ってみましょう。配列数式を使用する場合は、「Ctrl」+「Shift」+「Enter」を押して確定させます。(一部のエクセルのバージョンを除きます。)

{=EXACT(F3,B3:B7)}

すると、図2の数式バーに表示されているように、「」、「」の記号で囲われます。

」、「」は直接入力せず、「Ctrl」+「Shift」+「Enter」を押して表示させてください。

G3セルには、「FALSE」と表示されていますが、パソコンの中では{FALSE;FALSE;FALSE;FALSE;TRUE}のように配列として保存されています。

STEP2 MATCH関数で一致している文字列の位置を取得する

次に、EXACT関数でF3セルに入力されている「F01」と完全一致したセルの位置をMATCH関数で取得します。つまり、EXACT関数の戻り値である配列{FALSE;FALSE;FALSE;FALSE;TRUE}の中でTRUEの位置をMATCH関数で取得します。

図3:MATCH関数で位置を取得

G3セルに下記のように入力します。

=MATCH(TRUE,EXACT(F3,B3:B7),0)

「Ctrl」+「Shift」+「Enter」を押します。(配列数式)

{=MATCH(TRUE,EXACT(F3,B3:B7),0)}

結果は「5」となります。

STEP3 INDEX関数で値を取得する

EXACT関数とMATCH関数を用いて、F3セルの商品コード「F01」と完全に一致する商品コードの位置が行番号「5」とわかりました。

最後に、INDEX関数を用いて値を取得します。

図4:INDEX関数で値を取得

G3セルに下記のように入力します。

=INDEX(C3:C7,MATCH(TRUE,EXACT(F3,B3:B7),0))

「Ctrl」+「Shift」+「Enter」を押します。(配列数式)

{=INDEX(C3:C7,MATCH(TRUE,EXACT(F3,B3:B7),0))}

上記の数式で、図4のように、大文字と小文字を区別して値を取得することができました。

コメント

タイトルとURLをコピーしました