単純反復作業の多い経理を高速化するためには、作業や判断を自動化する仕組みを整えることが不可欠です。そのためには使い勝手の良いExcelシートを作りこみ、実作業の際になるべく人間が作業しなくていい準備を整えましょう。
さて、経理ではリスト化された表から特定のデータを探して使うことがありますが、Excelを使えば自動でデータを探し、抽出することができます。数値を抽出する方法として、当社ではSUMIF関数をオススメしています。SUMIF関数については以下にまとめてありますのでご覧ください。
SUMIF関数は数値を扱う経理に向いた関数ですが、数値しか扱えないという欠点があります。つまり、名前や住所などの文字列情報は抽出してくることができません。
そこで今回は、リストから文字列を抽出できるVLOOKUP関数をご紹介します。SUMIF関数より使い勝手が悪いものの、この関数を使うことで大量の文字列を瞬時に扱うことができ、請求書の作成やインポートデータの摘要作成などの場面で大活躍してくれます。
1.VLOOKUPの基本
今回はVLOOKUP関数を用いて、「以下の顧客リストから、指定の番号の顧客を探し出し、その氏名を抽出する」という式を作ります。
1-1.VLOOKUP関数の書き方
VLOOKUP関数は以下のように書きます。
なかなかクセのある関数ですので、以下それぞれの引数を説明しましょう。
VLOOKUPの引数1 検索条件(検索値)
リストの中から探し出したい検索のキーとなる数値や文字列を入力します。今回の場合は探したい顧客番号です。
こちらはセル参照でも入力できます。実務的にはセル参照を使って、内容を変化させたりコピーして使うことが多いでしょう。
VLOOKUPの引数2 リストの範囲(範囲)
検索するリストのセル範囲を指定します。今回の例ではA2:C6になります。タイトル行を含めても計算してくれるので、A1:C6でも構いませんし、A:Cと列ごと指定することもできます。
このとき必ず、検索対象範囲となる列(今回は「顧客番号」であるA列)が一番左になるように範囲指定し、また抽出対象となるセルの列(今回は「氏名」であるB列)が範囲内に含まれるようにしてください。
VLOOKUPの引数3 抽出番号(列番号)
引数2で指定したリスト範囲のうち、抽出対象となるセルの列が左から何番目になるかを指定します。今回抽出したい「氏名」は左から2番目の列なので「2」と入力します。この引数もセル参照で指定できます。
VLOOKUPの引数4 検索方法
検索対象範囲内に検索条件と一致する値がなかった場合の対処を指定します。ここに「0」と入力するとエラー値(#N/A)を返し、「1」と入力すると1つ前の条件を抽出します。
たとえば検索条件がリストにない「1466」なら、「0」ならエラー値を返し、「1」なら1462の大久保利通さんのデータを返します。
経理実務としては、リストにないからといって違う顧客の情報を勝手に持ってこられても困るので、基本的には忘れずに「0」に設定しましょう。
なお、「VLOOKUPの検索対象範囲は昇順でなければならい」というのが公式的な設定ですが、検索方法を「0」にすることで昇順でなくても正しく拾ってくれるようです。
上記より、VLOOKUP関数の記載例としては以下のとおりとなります。
2.VLOOKUPの留意点
上記の手順で抽出ができるVLOOKUP関数ですが、SUMIF関数と比べると使い勝手では落ちます。具体的には以下の制約があることに留意してください。
留意点① 検索範囲は抽出列よりも左でなければならない
上述の通り、引数②のリストの範囲を指定するときは検索対象範囲が一番左の列になるようにしなければならず、また、抽出列を範囲内に含めなければなりません。したがって、元々のリストの状態で、検索対象範囲は抽出列よりも左の列になければいけません。
上図の場合は顧客番号で氏名や住所を検索することはできません。どうしても必要な場合は、セル参照を使ってD列に抽出したい文字列を右側に表示しましょう(下図)。
留意点② リスト範囲に列を追加・削除しない
VLOOKUPではSUMIFと異なり、「左から〇列目のデータを抽出する」という探し方をします。リスト範囲に列を追加し、この〇列目が変化してしまっても、自動で数式の数字を直してはくれません。
そのため、VLOOKUPをした場合は列を追加・削除しないようにしましょう。また、過去に作ったVLOOKUPを使う際には列番号が変化していないかに注意しましょう。
3.エラー値の捌き方
4番目の引数である「検索方法」を「0」に設定しておくと、条件に一致する値が検索範囲になかった際に、「#N/A」のエラー値を表示します。
このエラー値を「空欄」や「ゼロ」にしたい場合は、IFERROR関数を使いましょう。
基本的には引数1の「値」に入力した内容を表示しますが、その内容がエラー値だったときだけ、引数2の「エラーだった場合の値」を表示します。
この関数を使って、エラー値を空欄やゼロにする例は以下のとおりです。
コメント