よし、従業員の新しい給与金額が決まったから、人事ソフトに登録しようかな。
お前、ちゃんとチェックしたのか?
給与が間違ってたら大変だからな。
え、先輩から頂いたリストをそのまま使うので大丈夫だと思いますが…。
間違ってたらおれの責任ってことかぁ?!
それをチェックするのがお前の仕事だろぉ〜!
確認頼んだぞ、お先っ。
ひいぃ…。(あんな上司にはなりたくない)
でもどうやって確認すればいいんだろう…。
大変ね。
あの人の言い方はひどいけど、確認作業は必要なのでやっていきましょう。
まずは信頼できるソース(元ネタ)を用意すること。
信頼できるソース…。
そういえば各事業部長が決めた給与金額を取り寄せていたと思うので、先輩からもらったリストがそれと一致していれば問題ないかも。
意思決定者が直接入力したものは信頼できるわね。
良かった!
では印刷して上からチェックしていきます。ラインマーカーを…
ちょっと待って!
あなた(人間)の目で見るより、関数で機械的に突合した方が確実よ。
そんなところにまごころ込めなくていいから。
(結構辛口だな…)失礼しました。
その機械的に突合する方法を教えて下さい!
前提:信頼できるソース(元ネタ)を用意する
手元にあるデータが正しいかどうか確認する際、当然ながら信頼できるソース(元ネタ)がなければ判断できませんよね。
具体策としては、なるべくその意思決定をした人から情報を取り寄せるようにしましょう。
例えば、人事でいうと、給与・評価・異動先といった情報は、役員や人事部長、あるいは各事業部長が決裁しているはずです。
もしそこまでカッチリしていなくても、彼らが直接入力したもの、少なくとも目を通したものは信頼に値します。
それが一度でも他者に渡り、何かしらデータ加工が施されたものだと、情報が書き換わっている可能性があるので元ネタとしての使用は控えましょう。
それによって発生するミスは、誰も責任を取ってくれません…。
本題:関数でデータ同士を突き合わせる
ここからは、関数を活用したデータ突合の方法について、AKB48を例に解説します。(年収は適当な値です)
以下のシートG列にある新年収が本当に正しいものか、各事業部長から取り寄せた元ネタ(正しいことが保証されたもの)と突き合わせます。
対象(行)が合っているか
まずは対象が合っているか、行をチェックしていきます。
「そもそもこれで全部なの?」「余計なものが紛れてない?」ということですね。
ここで活用するのが、バックオフィスではおなじみVLOOKUP関数です。
VLOOKUP関数は、作業中のシートに別のシートから情報を引っ張る際に便利ですが、今回は対象(=行)の一致を確認するために使います。
ポイントは、従業員番号を検索キーにしていることです。
もし名前をキーにすると、性と名の間にスペースや、結婚による改姓、旧字体の使用などによる不一致が発生し、作業を阻害される可能性があります。
ちなみに、2列目の名前を引っ張っている理由はなく、何列目でもOKです。
関数を下まで伸ばし、各事業部データ(元ネタ)から全ての行に対して名前を引っ張れている(エラーが出ていない)ことを確認します。
但し、ここで言えるのは「少なくとも余計な人が入っていない」ということだけです。
もし余計な人が紛れている場合は、以下のようにエラーが発生するため、気づくことができます。
今度は反対に、元ネタのシートにVLOOKUP関数を入力し、給与改定結果から名前を引っ張ります。
すると、こちらも全ての行に対して名前を引っ張れている(エラーが出ていない)ことが確認できました。
ここで言えるのは「対象者に漏れがない」ということです。
このように相互参照した結果、給与改定結果のシートには「対象者(=行)に漏れがなく、余計な人も紛れていない」ことが確認できました。
クイックに「対象が合っているか」だけを見たい時は、こちらの方法がおすすめです。
以下の文字列をコピーして、早速使ってみましょう。(緑文字を置き換え)
=vlookup($B4,'元ネタのシート名'!$この列から:$この列まで,列番号,0)
- 参照範囲の開始列は、検索キー(上の例ではB4セル)のある列を指定する
- 列番号は参照範囲の中で何番目にあるか
内容(列)が合っているか
対象(行)は合っているという前提で、肝心な内容(=列)の突き合わせをしていきましょう。
セル書式が文字の場合と数値の場合に分けて見ていきます。
文字の場合
給与改定結果シートのD列にある事業部が本当に正しいものか確認します。
まずは、先程と同様にVLOOKUP関数を使って、元ネタから同じ項目を引っ張ってきます。
次に、IF関数を使用します。
「もし〜だったら●、そうでなければ▲」という、場合分けの関数です。
このケースでは「もし元ネタと一致していれば0、不一致なら1」という条件にします。
すると、以下のように全て0が表示されているため、全対象者の事業部が正しいことを確認できました。
目視できるほど少ない行数であれば問題ありませんが、I3セルのようにSUM関数で不一致数をカウントできるようにしておくと便利です。
もし不一致があれば、以下のように「1」のフラグが立ち、SUM関数を入れたセルには個数が表示されます。
=if(D4=H4,0,1)
- 「もし元ネタと一致していれば0、不一致なら1」という条件
数値の場合
数値でも文字と同様にIF関数で突合できますが、あえて違う方法とそのメリットを紹介します。
給与改定結果シートのG列にある新年収が本当に正しいものか確認します。
まずはVLOOKUP関数で元ネタから同じ項目をJ列に引っ張ってきます。
次に、IF関数は使用せず、単純にG列とJ列(元ネタ)で引き算をします。
メリットとしては、一致・不一致だけでなく、不一致の場合に「いくらずれているのか」確認できます。
以下のように全て0になっていれば、全対象者の新年収が正しいということになります。
もし不一致があれば、以下のように差額が表示されます。
例えば、1円のずれなら「端数処理が怪しいな」となりますし、このように金額が大きければ「そもそもどこかのプロセスで2人だけ漏れた」と見当がつくので、数値の場合はIF関数と組み合わせて活用してみて下さい。
今回は、VLOOKUP関数とIF関数を使用してデータを突き合わせる方法について解説しました。
人事などのバックオフィスで働いていると、帳票同士の整合性を確認する作業が多いため、この手順を体で覚えておくと非常に捗ります。
また、VLOOKUP関数はリスト作成で便利ですが、参照先の「並び」が変わる度に式の修正が必要という弱点があります。
その弱点を克服する画期的な関数をこちらの記事で紹介しているので、是非ご覧下さい。