Excel の入力ミスを防ぐ、VLOOKUP 関数で営業の名前を自動表示
社内で複数の人が編集する(共有する)Excel ファイルの管理を任されていると、頻繁に遭遇する問題がいくつかあります。中でも一番煩わしいのが、入力方法のバラつきではないでしょうか?
- 半角はNG
- 苗字と名前の間には全角のスペースを入れる
- ①などの環境依存文字は入れない…
何度注意しても直してくれない人っていますよね?本人は直そうとしていても、過去の誤った入力履歴のせいで再び間違えてしまったり…。
関数やマクロによっては、書式が統一されていないと処理が正常に行われない事もあるので、入力方法のバラつきは死活問題。月末の忙しい時にこの細かい修正で時間を取られると、苛立ちもひとしおです。入力リストから選ばせたり入力規則で制限をかける方法もありますが、どれも予め設定するのに一定の手間がかかります。
そこで今回は、営業が日々の売り上げを登録する際に「自分の名前を入れなくても社員番号を入力すれば自動的に名前が表示される」方法をご紹介します。ファイルを管理する側の工数を最小限にしつつ、氏名の入力ミスを未然に防げる方法として、この方法を選択しました。
やろうとしていることは次の2点です。
- A 列に社員番号を入力したらB 列に自動的に担当者名が表示されるようにしたい
(氏名の入力ミスが散見されたため) - #N/A と表示されると見にくいので、A 列が空欄の場合は結果を表示させないようにしたい
これを実現するために利用する関数は次の二つです。
- VLOOKUP
- IF
目次
入力された社員番号に対応する担当者名を表示させる方法
やり方は以下のような手順です。
1.別のシート「営業一覧」にあらかじめ営業の一覧表を作っておく
下記のように社員番号と、それに対応する担当者名の一覧表を作成します。
「売り上げ」シートは下記のように「社員番号」「担当者名」「売上額」の行を作成しておきます。
2.「売り上げ」シートのB2に以下の数式を作成する
=VLOOKUP(A2,営業一覧!$A$2:$B$6,2,FALSE)
意味:A列の値が「営業一覧」シートの指定した範囲から見つかったら、該当の行の左から2番目のセルの値を返す
【VLOOKUP 関数とは】
指定された範囲の左端(1列目)から該当の値を探し、見つかった行の、指定した列の値を返す。
一般的に、名簿から特定の情報(郵便番号や住所)を抽出するときなどに使う。
データ検索、抽出系では最もメジャーな関数の一つ。
☆ちなみに…☆
営業一覧!$A$2:$B$6に名前を付けておくと、
数式で指定するときにどこを参照しているのか視覚的に解りやすくなるのでおすすめです。
ここでは「名簿」と名前を付けます。
=VLOOKUP(A2,営業一覧!$A$2:$B$6,2,FALSE)
→=VLOOKUP(A2,名簿,2,FALSE)
数式が短くなりましたね。
A2 に社員番号を入力すると、一覧の中の該当者の名前が B 列に自動的に表示されるようになりました。
これで最初の重要な目的は達成しました。
4.セルに表示されるエラーを表示させないようにする
3行目以降に関数をコピーすると、下のショットのようにエラーの表示が出ます。
A 列に値を入れれば正しく結果が表示されますが、これは日々売り上げデータを追加していくものなので、A 列に値が入っていない状態がデフォルトになります。
このままだと Excel に詳しくない人に混乱を招きかねないので、A 列が空欄でも #N/A が表示されないようにします。
【#N/Aとは】
数式で参照の対象が見つからないことを示すエラー。
この場合、参照対象であるA 列に何も値がないため表示される。
先ほどの数式を IF 関数で囲います。
=IF(A2=””,””,VLOOKUP(A2,営業一覧!$A$2:$B$6,2,FALSE))
意味:A 列が空欄の場合に空欄を表示し、空欄ではない場合 VLOOKUP の式を実行する。
こうすることで、A 列が空欄でも B 列に何も表示されなくなります。
ちなみに…
数式自体はちゃんと入力されています。
あとは C 列に売上額を入力してもらい、月末に集計する流れですね。
【次回】