この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
VLOOKUP関数について昨日の続きです。
[aside type=”yellow”]この記事を改訂した新しい記事を書きましたのでそちらをお読みください。
関連記事 条件に一致するデータを探すExcelのVLOOKUP関数[/aside]
● VLOOKUP関数のエラーケース1
エラーとしては、次のようなものがあります。
F16にはVLOOKUP関数を利用した式が入力されていますが、検索値(「TRUE」か「FALSE」)を省略した式を入力しています。(省略した場合は、「TRUE」を指定しているのと同じ状態となります。)
上記のケースだとE16には「800」という数値を入力したので青枠の科目のリストから「郵便貯金」を参照し、F16のセルに表示してくれることを願って数式を入力したのですが、「現金」が表示されてしまっている状態です。
なぜでしょう?
VLOOKUP関数でTRUEを指定(または省略)する場合は、リストの一番左端の列を昇順で並べなければ思い通りの値を表示してくれないのです。
経理事務ではTRUE(または省略)で近似値を検索するケースは少ないかと思いますので、省略せずに「FALSE」を入力する方が良いでしょう。
● VLOOKUP関数のエラーケース2
次のようなエラーもあります。
上記の例は、E5に「501」を入力しているため、それと一致する数値がリストに存在しないケースです。
この場合の対策としてIF関数とISERROR関数を利用する方法があります。
上記のF6には次のような式が記載されています。
「=IF(ISERROR(VLOOKUP(E6,B2:C11,2,FALSE)),“無“,VLOOKUP(E6,B2:C11,2,FALSE))」
これは、「もし、リストに数値がなかったら、『無』と表示してください。」という式なのですが、文字列の場合は「#N/A」と表示されても「無」と表示されてもさほど影響はありませんのでこのような式を入力しなくても良いかもしれません。
ただし、数値の場合は次のようになってしまうので、注意が必要です。
上記の例では、商品No.を限定して売上高の合計を算出している表となっていますが、上部の表では、「#N/A」値が表示されているため合計までエラーになってしまっています。
一方、12行より下部の表では、先ほどのISERROR関数を使った式を入力しているため、合計値は正しく表示されて
います。
「=IF(ISERROR(VLOOKUP(E6,B2:C11,2,FALSE)),0,VLOOKUP(E6,B2:C11,2,FALSE))」
先ほどの式の「“無”」を「0」に変更しました。
(おまけ)
● HLOOKUP
VLOOKUPと似た関数でHLOOKUPというものがあります。
これは、VLOOKUP関数で「何列目の値を返す」と指定するところを、HLOOKUP関数では「何行目の値を返す」と指定することになります。
上記の例では、「B2~E3」までの範囲を指定し、そのなかで2番目の行を返すという指定をしています。
私は、このHLOOKUP関数を実務であまり使ったことがありません。