エクセルLOOKUP関数がエラーになる原因と対処法!エラー回避

エクセルLOOKUP関数でエラーになる原因と、その対処法をを紹介しています。LOOKUP関数がエラー#N/Aになるときは、セルの表示形式や検査値に原因がある場合があります。例えば、セルの表示形式が「文字列」になっていたり、検査値が検査する範囲内に含まれる最小値よりも小さい時などです。LOOKU使い慣れないと、思い通りの値が得られない場合や、エラー#N/Aが出るときがあります。エラーになる時はどのような場合なのか、分かるとエラーの対処法がすぐ分かります。

 

 

エラーを、ISERROR関数、IFERROR関数で回避する

LOOKUP関数でエラーが出たとき、ISERROR関数、IFERROR関数を使うとエラーが表示されません。

ISERROR関数とIFERROR関数を使って、エラーを表示させない方法を説明していきましょう。

エクセルIFERROR関数でLOOKUP関数のエラーを回避

エクセルIFERROR関数を使って、LOOKUP関数の式にエラーを表示させないようにします。

 

D2に式を入力します。

D2 =IFERROR(LOOKUP(C2,$A$2:$A$6,$B$2:$B$6),””)

この式を下にドラッグします。

D3を見てみましょう。

№「100」はありません。エラーになります。

D3は、エラー値「#N/A」なので、空白(””)が返されます。

こちらの記事もご覧ください。⇒エクセルINDEX関数とMATCH関数を使って検索、抽出する方法

 

ISERROR関数でLOOKUP関数のエラーを回避

ISERROR関数で、LOOKUP関数の式にエラーを表示させないようにします。

 

「C2:C6」には検索する№が入力されています。

D2に、№で検索して、一致する№があったらそれに対応する商品名を返し、一致する№がなかったら空白を返す式を入力します。

D2 =IF(ISERROR(LOOKUP(C2,$A$2:$A$6,$B$2:$B$6)),””,LOOKUP(C2,$A$2:$A$6,$B$2:$B$6))

この式を下にドラッグします。

D3を見てみましょう。

№「100」は検査範囲「$A$2:$A$6」にないので、エラー値「#N/A」になります。

D3には、指定した値「空白」が返されます。

こちらの記事もご覧ください。⇒エクセルVLOOKUP関数で値を検索!基本から応用までマスター

セルの表示形式が原因でエラー

LOOKUP関数でエラーになる原因は

セルの表示形式が原因でエラーになることがあります。

見た目は全く同じでも、「表示形式」の違いで、実際の値が異なる場合があります。このような場合にエラーになります。

 

上の表で№「103」を検査値として、検査範囲A2:A6を指定します。対応範囲は「B2:B6」です。D2に式を入力します。

D2 =LOOKUP(C2,A2:A6,B2:B6)

この結果は#N/Aになります。A4の「103」とC2の「103」は全く同じ値に見えますが、実際はA4の「103」のセルの「表示形式」は「標準」、C2の「103」は「文字列」になっています。

A4の「103」は「標準」という書式になっているため自動的に「数値」と認識されています。値が右寄りになっていることで分かります。C2の「103」は「文字列」になっているので値が左寄りになっています。

2つの値は見た目が全く同じでも実際は違うので、この2つの値を全く同じにしないとLOOKUP関数でエラーがでてしまいます。

セルの書式が「数値」か「文字列」かを単純に見分ける方法には、セルの表示形式を標準にした後に、セルの文字の配置が右寄りか、左寄りになっているかでもわかります。右寄りは「数値」、左寄りは「文字列」です。

A4の「103」とC2の「103」を同じ値にしなくてはいけません。検査値と検査範囲の「表示形式」をセルの「書式設定」で同じにしてみます。

こちらの記事もご覧ください。⇒エクセルLOOKUP関数の使い方を解説!VLOOKUP関数との違いは?

 

C2の「103」の「表示形式」を「標準」にした場合

セルの「書式設定」を開きます。C2の「103」の「表示形式」を「標準」にして、「A2:A6」と「表示形式」を同じにします。C2の「103」の「表示形式」を「標準」にした表が、下の表になります。

 

D2に式を入力します。

D2 =LOOKUP(C2,A2:A6,B2:B6)

結果はエラーになります。このように2つのセルの書式を同じにしても#N/Aになります。これは、「文字列」で入力したあと、表示形式を「標準」に変更したので「表示形式」が標準になっただけで、実際は「文字列」のままなのでエラーになったのです。

上の表を見るとC2を「標準」に変更したのに、文字の配列は左寄りのままです。

この場合の解決策は、C2の「エラーチェックオプション」ボタンで数値に変換することもできます。

または、式を作成してC2を「数値」に変換します。どちらのやり方でも数値に変換できるのですが、式を作成して数値に変換しましょう。

 

E2にC2を数値に変換する式を入力します。

E2 =C2*1

この式により「表示形式」は「文字列」ですが、実際は「数値」になります。文字の配列は右寄りです。

D2にLOOKUP関数の式を入力します。

D2 =LOOKUP(E2,A2:A6,B2:B6)

#N/Aがなくなります。「いちご」が返されます。

こちらの記事もご覧ください。⇒エクセルLOOKUP関数が昇順で並び替えていない場合の対処法

 

「A2:A6」のセルの「表示形式」を「文字列」に変更した場合

次に「A2:A6」のセルの「表示形式」を「文字列」に変更すると、どうなるでしょう。「A2:A6」のセルの「表示形式」を「文字列」に変更した表が、下の表になります。

 

文字の配列は右寄りで、「表示形式」は「文字列」になっています。

D2に式を入力します。

D2 =LOOKUP(C2,A2:A6,B2:B6)

結果はエラーになります。セルの「表示形式」を「文字列」に変更したのでは、「表示形式」が「文字列」になっただけで、実際は「数値」のままなのでエラーになったのです。

この場合の解決策は、エクセルTEXT関数で「A2:A6」を「文字列」に変換します。

 

E2に「A2:A6」を「文字列」に変換する式を入力します。

E2 =TEXT(A2,0)

この式を下にコピーして「A3:A6」を「文字列」に変換します。表のとおりです。文字の配列は左寄りになっています。

D2にLOOKUP関数の式を入力します。

D2 =LOOKUP(C2,E2:E6,B2:B6)

#N/Aがなくなります。「いちご」が返されます。

このようにエクセルの「数値」と「文字列」の扱いは非常に厄介です。注意しましょう。

こちらの記事もご覧ください。⇒エクセルLOOKUP関数で複数条件を指定して検索する方法

検査値が原因でエラー

検査値が、検査範囲に含まれる最小値よりも小さい場合にエラー

D2に式を入力します。

D2 =LOOKUP(C2,A2:A6,B2:B6)

結果はエラーになります。検査値「100」が、検査範囲「A2:A6」に含まれる最小値よりも小さいからです。

関数の説明

LOOKUP関数

エクセルLOOKUP関数は、指定した値を1行または1列からなるセルの範囲、または配列から見つける時に使います。ベクトル形式と配列形式の2種類の使い方がありますが、使用頻度はベクトル形式が高いです。

ベクトル形式の書式と引数

LOOKUP ((検査値, 検査範囲, 対応範囲)

検査値 検索する値を指定します。検査値には数値、文字列、論理値が指定できます。または名前やセル参照でも指定できます。
検査範囲 検索する範囲を1行または1列で指定します。昇順で並び替えておく必要があります。
対応範囲 検索の対象となる範囲を指定します。1行または1列で範囲を指定し、検査範囲と同じサイズにします。

配列形式の書式と引数

LOOKUP (検査値,配列)

 検査値 検索する値を指定します。検査値には数値、文字列、論理値が指定できます。または名前、セル参照でも指定できます。
 配列 検査値と比較するセル範囲を指定します。配列の最初の行、列から検査値を探します。

IF関数

エクセルIF関数は、指定された条件に一致した結果が TRUE の場合はある値を返し、FALSE の場合は別の値を返します。IF関数はよく使われる関数です。他の関数と組み合わせて使うことも多いので、覚えておくと便利です。

こちらの記事もご覧ください。⇒エクセルIF関数 もし~の条件式を攻略!使い方をマスター

 

IF関数の書式と引数

=IF(論理式真の場合偽の場合

論理式 TRUE(真)かFALSE(偽)を返す式を指定します。
真の場合 論理式の結果が真の場合の、返す値を指定します。
偽の場合 論理式の結果が偽の場合(条件を満たさない場合)に返す値を指定します。

こちらの記事もご覧ください。⇒エクセルIF関数で複数条件!OR関数、AND関数と組み合わせて使う

IFERROR関数

数式がエラーの場合、指定した値を返します。エラーでない場合は式の値自体を返します。

 エクセルIFERROR関数の書式と引数

=IFERROR(値, エラーの場合の値)

エラーかどうか調べます。
エラーの場合の値 値がエラーと評価された場合に返す値を指定します。エラーと評価されるエラー値には、#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? または #NULL! があります。

こちらの記事もご覧ください。⇒エクセルIFERROR関数でVLOOKUP関数のエラーを回避する方法

ISERROR関数

結果に応じて論理値 TRUE または FALSE を返します。

エクセルISERROR関数の書式と引数

 =ISERROR(テストの対象)
 
テストの対象 エラーかどうか調べるセルを選択します。テスト対象がエラー値(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? または #NULL! のいずれか) を参照するときにTRUEを返します。

こちらの記事もご覧ください。⇒VLOOKUP関数のエラーをエクセルIF関数で回避する方法

エクセルISERROR関数、IFERROR関数で、指定の値を表示させる。

エクセルLOOKUP関数でエラーになった場合、ISERROR、IFERROR関数で、空白ではなく指定した値を表示させることができます。

=IF(ISERROR(LOOKUP(C2,$A$2:$A$6,$B$2:$B$6)),”エラー”,LOOKUP(C2,$A$2:$A$6,$B$2:$B$6))

=IFERROR(LOOKUP(C2,$A$2:$A$6,$B$2:$B$6),”エラー”)

上の式を入力すると、空白でなく「エラー」が表示されます。

こちらの記事もご覧ください。⇒エクセルLOOKUP関数で完全一致の値のみ検索する方法