【VLOOKUP|IF】関数でデータを突き合わせる方法(バックオフィスの基本)

関数教室
新任
新任

よし、従業員の新しい給与金額が決まったから、人事ソフトに登録しようかな。

先輩人事
先輩人事

お前、ちゃんとチェックしたのか?

給与が間違ってたら大変だからな。

新任
新任

え、先輩から頂いたリストをそのまま使うので大丈夫だと思いますが…。

先輩人事
先輩人事

間違ってたらおれの責任ってことかぁ?!

それをチェックするのがお前の仕事だろぉ〜!

確認頼んだぞ、お先っ。

新任
新任

ひいぃ…。(あんな上司にはなりたくない)

でもどうやって確認すればいいんだろう…。

人事のプロ
人事のプロ

大変ね。

あの人の言い方はひどいけど、確認作業は必要なのでやっていきましょう。

まずは信頼できるソース(元ネタ)を用意すること。

新任
新任

信頼できるソース…。

そういえば各事業部長が決めた給与金額を取り寄せていたと思うので、先輩からもらったリストがそれと一致していれば問題ないかも。

人事のプロ
人事のプロ

意思決定者が直接入力したものは信頼できるわね。

新任
新任

良かった!

では印刷して上からチェックしていきます。ラインマーカーを…

人事のプロ
人事のプロ

ちょっと待って!

あなた(人間)の目で見るより、関数で機械的に突合した方が確実よ。

そんなところにまごころ込めなくていいから。

新任
新任

(結構辛口だな…)失礼しました。

その機械的に突合する方法を教えて下さい!

この記事を読んだら
  • データ同士を突き合わせて一致しているか確認できる(不一致の箇所が分かる)
    • 対象(=行)が合っているか
    • 各項目の内容(=列)の内容が合っているか

前提:信頼できるソース(元ネタ)を用意する

手元にあるデータが正しいかどうか確認する際、当然ながら信頼できるソース(元ネタ)がなければ判断できませんよね。

具体策としては、なるべくその意思決定をした人から情報を取り寄せるようにしましょう。

例えば、人事でいうと、給与・評価・異動先といった情報は、役員や人事部長、あるいは各事業部長が決裁しているはずです。

もしそこまでカッチリしていなくても、彼らが直接入力したもの、少なくとも目を通したものは信頼に値します。

それが一度でも他者に渡り、何かしらデータ加工が施されたものだと、情報が書き換わっている可能性があるので元ネタとしての使用は控えましょう。

それによって発生するミスは、誰も責任を取ってくれません…。

本題:関数でデータ同士を突き合わせる

ここからは、関数を活用したデータ突合の方法について、AKB48を例に解説します。(年収は適当な値です)

以下のシートG列にある新年収が本当に正しいものか各事業部長から取り寄せた元ネタ(正しいことが保証されたもの)と突き合わせます。

正しいことを確認したいシート(給与改定結果)
正しいことを確認したいシート
各事業部長から取り寄せた元ネタ(正しいことが保証されたもの)
各事業部長から取り寄せた元ネタ(正しいことが保証されたもの)

対象(行)が合っているか

まずは対象が合っているか行をチェックしていきます。

「そもそもこれで全部なの?」「余計なものが紛れてない?」ということですね。

ここで活用するのが、バックオフィスではおなじみVLOOKUP関数です。

VLOOKUP関数は、作業中のシートに別のシートから情報を引っ張る際に便利ですが、今回は対象(=行)の一致を確認するために使います。

ポイントは、従業員番号を検索キーにしていることです。

もし名前をキーにすると、性と名の間にスペースや、結婚による改姓、旧字体の使用などによる不一致が発生し、作業を阻害される可能性があります。

正しいことを確認したいシートにVLOOKUP関数を入力して、元ネタから名前データを引っ張る
正しいことを確認したいシート

ちなみに、2列目の名前を引っ張っている理由はなく、何列目でもOKです。

VLOOKUP関数で元ネタのB-G列を範囲指定して、2列目の名前を選択
各事業部長から取り寄せた元ネタ(正しいことが保証されたもの)

関数を下まで伸ばし、各事業部データ(元ネタ)から全ての行に対して名前を引っ張れている(エラーが出ていない)ことを確認します。

但し、ここで言えるのは「少なくとも余計な人が入っていない」ということだけです。

VLOOKUP関数を下の行までコピーして伸ばし、エラーが出ていないことを確認する
正しいことを確認したいシート

もし余計な人が紛れている場合は、以下のようにエラーが発生するため、気づくことができます。

VLOOKUP関数でエラーが出ており、参照先の元ネタに6行目の検索キーが存在しないことが分かる
6行目の対象者は元ネタに存在しないため確認が必要

今度は反対に、元ネタのシートにVLOOKUP関数を入力し、給与改定結果から名前を引っ張ります。

すると、こちらも全ての行に対して名前を引っ張れている(エラーが出ていない)ことが確認できました。

ここで言えるのは「対象者に漏れがない」ということです。

元ネタにVLOOKUP関数を入力して、正しいことを確認したいシートから名前データを引っ張る
各事業部長から取り寄せた元ネタ(正しいことが保証されたもの)

このように相互参照した結果、給与改定結果のシートには「対象者(=行)に漏れがなく、余計な人も紛れていない」ことが確認できました。

クイックに「対象が合っているか」だけを見たい時は、こちらの方法がおすすめです。

以下の文字列をコピーして、早速使ってみましょう。(緑文字を置き換え)

=vlookup($B4,'元ネタのシート名'!$この列から:$この列まで,列番号,0)

Copy
  • 参照範囲の開始列は、検索キー(上の例ではB4セル)のある列を指定する
  • 列番号は参照範囲の中で何番目にあるか
【補足】シートに関数をコピーする方法
  • 貼り付けたいセルにカーソルを合わせて「fx」欄に貼り付け
    • キーボード「F2」ボタン(セル編集)を押してから貼り付けでも可
スプレッドシートに関数をコピペするには、対象セルにカーソルを合わせて「fx」欄に貼り付けることを説明したキャプチャ

内容(列)が合っているか

対象(行)は合っているという前提で、肝心な内容(=列)の突き合わせをしていきましょう。

セル書式が文字の場合と数値の場合に分けて見ていきます。

文字の場合

給与改定結果シートのD列にある事業部が本当に正しいものか確認します。

まずは、先程と同様にVLOOKUP関数を使って、元ネタから同じ項目を引っ張ってきます。

VLOOKUP関数を入力して元ネタから事業部データを引っ張る
正しいことを確認したいシート

次に、IF関数を使用します。

「もし〜だったら●、そうでなければ▲」という、場合分けの関数です。

このケースでは「もし元ネタと一致していれば0、不一致なら1」という条件にします。

元ネタの事業部データと照合するようにIF関数を入力する
正しいことを確認したいシート

すると、以下のように全て0が表示されているため、全対象者の事業部が正しいことを確認できました。

目視できるほど少ない行数であれば問題ありませんが、I3セルのようにSUM関数不一致数をカウントできるようにしておくと便利です。

IF関数を下の行までコピーして、その列の最上行にSUM関数を入力する
正しいことを確認したいシート

もし不一致があれば、以下のように「1」のフラグが立ち、SUM関数を入れたセルには個数が表示されます。

6行目と9行目でIF関数が1を表示しており、元ネタの事業部と不一致が起きていることが分かる
6行目と9行目の対象者は元ネタとチーム名が異なるため確認が必要

=if(D4=H4,0,1)

Copy
  • 「もし元ネタと一致していれば0、不一致なら1」という条件

数値の場合

数値でも文字と同様にIF関数で突合できますが、あえて違う方法とそのメリットを紹介します

給与改定結果シートのG列にある新年収が本当に正しいものか確認します。

まずはVLOOKUP関数で元ネタから同じ項目をJ列に引っ張ってきます。

VLOOKUP関数を入力して元ネタから新年収データを引っ張る
正しいことを確認したいシート

次に、IF関数は使用せず、単純にG列とJ列(元ネタ)で引き算をします。

メリットとしては、一致・不一致だけでなく、不一致の場合に「いくらずれているのか」確認できます。

元ネタの新年収データとの差額を確認できるように引き算する
正しいことを確認したいシート

以下のように全て0になっていれば、全対象者の新年収が正しいということになります。

引き算を下の行までコピーして、その列の最上行にSUM関数を入力する
正しいことを確認したいシート

もし不一致があれば、以下のように差額が表示されます。

例えば、1円のずれなら「端数処理が怪しいな」となりますし、このように金額が大きければ「そもそもどこかのプロセスで2人だけ漏れた」と見当がつくので、数値の場合はIF関数と組み合わせて活用してみて下さい。

6行目と9行目に金額が表示されており、元ネタの新年収との差額が分かる
6行目と9行目の対象者は元ネタと新年収が異なるため確認が必要

今回は、VLOOKUP関数IF関数を使用してデータを突き合わせる方法について解説しました。

人事などのバックオフィスで働いていると、帳票同士の整合性を確認する作業が多いため、この手順を体で覚えておくと非常に捗ります。

また、VLOOKUP関数はリスト作成で便利ですが、参照先の「並び」が変わる度に式の修正が必要という弱点があります。

その弱点を克服する画期的な関数こちらの記事で紹介しているので、是非ご覧下さい。

タイトルとURLをコピーしました