この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
こんにちは。かわべです。
Excelで一覧表から条件に一致するデータを探すためには、VLOOKUP関数を使うと便利です。このVLOOKUP関数は、Excelのなかでも基本の関数と言えるでしょう。
今日は、VLOOKUP関数について記載します。
(この記事は2014/8/11と8/12にの記事をまとめて、加筆訂正したものです。)
参考
参考 support Office;VLOOKUP関数
VLOOKUP関数
VLOOKUPの記述方法
VLOOKUP関数は次のように記述します。
検索値などの引数(ひきすう)については、次のパラグラフに記載しますが、Excelで「関数の引数」というダイアログボックスを表示させると簡単な解説が表示されるため入力しやすいと思います。
「関数の引数」ダイアログボックスは、数式バーに「=VLOOKUP」と入力してから、数式バーの左隣の「関数の挿入」ボタン(下の画像の赤色の丸囲み部分)をクリックします。
もしくは、数式バーに何も入力しないで「関数の挿入」ボタンをクリックし「関数の挿入」ダイアログボックスを開き、その画面で「VLOOKUP」と入力してから「関数の引数」ダイアログボックスを開きます。
VLOOKUP関数の引数の設定
VLOOKUP関数の引数について簡単に説明します。
検索値
(次の引数で指定する)範囲のなかで検索したい値を指定します。
検索値を直接記述すること(たとえば、上の画像でNo.「100」を検索したい場合は「100」と記述すること)もできますが、検索値を変更することも考えて、検索値を入力するセル番号を記載した方が良いでしょう。
上の画像では検索値に「E3」(セル)と記述しています。これは、(次の引数で指定する)「範囲のなかでE3のセルに入力した値」を探すという記述になります。
範囲
検索値(前の引数で指定したもの)を探す範囲を指定します。
この範囲は、検索値の列(上の画像の場合はB列)だけでなく、答えとして返す値の列(上の画像の場合はC列)も含めて記述します。
上記の例では、「B2:C12」と記述しました。
この範囲については、一定の範囲のセルに名前をつける「名前の定義」という機能を使うと、B2:C12の変わりに定義した名前の文字列を記述することができます。(例えばB2セルからC12セルまでを、「勘定科目一覧表」という名前をつけると、式にも「勘定科目一覧表」と記述することができます。)
名前の定義については、次の記事を参考にしてください。
関連記事 Excelでセルに名前をつける「名前の定義」を便利に使う
列
範囲のなかで戻り値として表示する(セルの)列番号(左から何列目か?)を記述します。
上記の例では、「2」と記述しました。範囲(B列、C列)の左から2番目の列、つまりC列の値(科目)を返すことになります。
検索方法
「TRUE」(近似値を含めて検索)か「FALSE」(完全一致の値を検索)を選択しますが、省略することもできます。省略した場合は、TRUEを選択したことになります。
(省略せずにFALSEを入力した方が良いです。なぜかについては、次のパラグラフに記載します。)
VLOOKUP関数で初心者が陥りやすい誤り
VLOOKUP関数を利用した場合、初心者のうちは、指定どおりに記述をしても思い通りの戻り値を得られない場合があります。(私もVLOOKUP関数を覚えたての頃は何回かありました。)
初心者の方が陥りやすいエラーについて記載してみます。
検索方法を「TRUE」に指定しているケース
上の画像のF16セルには次のようなVLOOKUP関数を利用した式が入力されています。
[aside type=”boader”]「=VLOOKUP(E16,B14:C24,2)」[/aside]E16セルに入力したNo.と一致する科目を表示させるつもりで記述しました。
しかし、E16セルに入力されている「800」に一致する科目は、左の表では「郵便貯金」となっていますが、「現金」が表示されてしまっています。(上の画像の赤色の丸囲み部分)
なぜでしょうか?
これは、検索方法(「TRUE」か「FALSE」)を省略してしまったことによる誤りです。
VLOOKUP関数で検索方法を省略した場合は、「TRUE」を指定しているのと同じ状態となります。そして、VLOOKUP関数で検索方法にTRUEを指定する(あるいは検索方法を省略する)場合は、リストの一番左端の列を昇順で並べなければ思い通りの値を表示してくれないのです。
(support Office;VLOOKUP関数より)
TRUE を指定すると、左端列は数字または英字を基準に並べ替えられているものとみなされ、検索値に最も近い値が検索されます。この引数を省略した場合は、TRUE が指定されたものとみなされます。
検索方法(「TRUE」か「FALSE」)の省略には気をつけましょう。
[lnvoicer icon=”https://ar-kawabe.com/blog/wp-content/uploads/2015/06/1527_Ako_NC_31.jpg” name=”管理人”]私は経理関連の資料を作る場合は、検索方法を省略せずに「FALSE」を指定しています。また、表の1列目を昇順に並べなおすようにしています。[/lnvoicer]データが存在しないケース
次のケースはVLOOKUP関数自体の誤りではありませんが、条件に一致するデータが存在しないというケースです。
文字列でエラーが表示される場合
上記の例は、F5セルには次のような式を入力しています。
[aside type=”boader”]「=VLOOKUP(E5,C2:C11,2,FALSE)」[/aside]E5セルの数値と一致する科目をF5セルに表示させたいのですが、E5セルに左の科目リストに存在しない番号「501」を入力しているため、「#N/A」というエラー表示になってしまっています。(上の画像の赤色の丸囲み部分)
「#N/A」の表示でも自分しか使わない表のような場合は問題ありませんが、プレゼン資料等でこの表示は相応しくないかと思います。(やや恥ずかしいかも)
このようなエラーが表示された場合はIF関数とISERROR関数を利用して、別の表示をした方がわかりやすい資料になります。
先ほどのF5セルとは異なり、F6セルに次のような式を記述しました。
[aside type=”boader”]「=IF(ISERROR(VLOOKUP(E6,B2:C11,2,FALSE)),“無“,VLOOKUP(E6,B2:C11,2,FALSE))」[/aside]上記の式では「もし、リストに数値がなかったら、『無』と表示してください。」と記述しています。しかし、文字列の場合は「#N/A」と表示されても「無」と表示されてもさほど影響はありませんのでこのような式を入力しなくても良いかもしれません。
数値でエラーが表示される場合
文字列と違い、数値の場合は次の画像のように、合計数値等に影響がでてしまうので、エラー表示にも気をつけなければなりません。
上の画像では、商品No.を限定して売上高を合計する表を、2行目から10行目までの表と12行目から20行目までの2種類作成しました。
2行目から10行目までの表では、「#N/A」値が表示されているため合計までエラーになってしまっています。
一方、12行より下部の表では、先ほどのISERROR関数を使った式を入力しているため、合計値は正しく表示されています。
[aside type=”boader”]「=IF(ISERROR(VLOOKUP(E6,B2:C11,2,FALSE)),0,VLOOKUP(E6,B2:C11,2,FALSE))」[/aside]文字列で作成した式との違いは、「“無”」を「0」に変更したところです。
(おまけ)HLOOKUP関数
VLOOKUP関数と似た関数でHLOOKUP関数があります。
この、HLOOKUP関数では、VLOOKUP関数で「何列目の値を返す」と指定するところを「何行目の値を返す」と指定することになります。(縦と横の違いです。)
上記の例では、「B2~E3」までの範囲を指定し、そのなかで2番目の行を返すという指定をしています。
私は、このHLOOKUP関数を実務であまり使ったことがありません。
まとめ
VLOOKUP関数は非常に便利です。
経理事務では、Excelで作成する帳簿に科目等を入力する場合、別途に科目一覧表を作成し、VLOOKUP関数を利用して出納帳に科目を入力するなどの方法が多く見られます。
オリジナルの帳簿を作成する場合し、入力方法の手間を減らすにはVLOOKUP関数は最適です。誤りに注意しながら上手に使いたいものです。
■□◆◇ 編集後記 ◇◆□■
急に寒くなって、体調がいまいちです。日曜日には九州に出張なのでそれまでに整えます。