有給休暇を5日以上取得が義務化され、人事でも社員に取得フォローしなければならなくなりました。

しかし、システムから取得したデータは以下のように人ごとに複数行ある、いわゆる縦持ちのデータになっています

ということで、システムから出力した縦持ちのデータを横持ちのデータに変更するテクニックを紹介します。

今回は、エクセルの関数を使ったテクニックとなります。

 

縦持ちのデータから横持ちに変換する実例

以下の図の左のような縦持ちのデータから、右の表のような横持ちのデータにしたいということになります。大野くんは有給休暇5日とってますね。

 

縦持ちのデータ

横持ちのデータ(この状態にしたい)

 

ここですでにピンと来ている人はなかなかのExcel信者ですねえ。やりますねえ。

 

作業手順

1.元の表に連番の列を追加する

最初からかなり重要な手順です。

ここでは、D列に連番を追記しています。

 

各人ごとに連番を振っていくということですが、こちらは数式を使いましょう。

 

この数式は、一つ前のIDと現在の列のIDを比べて、一致していなければ、「1」一致している場合は、一つ前のD列の値+1 するという数式になります。

 

これで、IDが連続する場合の連番を振ることができます。

 

とてもよく使う数式ですので、原理を覚えていただければと思います。

 

2.元の表に連番+IDのKeyを作成する

列を挿入して、連番+IDのユニークなKeyの列を作成しました。

 

結論から言うと、最終的にはVlookupを用いるのですが、Vlookup関数で用いる列を差し込んだというのが手順2です。

 

3.別のセルに対象者を入力する

いよいよ、Outputとなる表を作成します。

 

まずは、IDから対象者の情報を別のセルに入力します。

 

いちいち、重複する行を削除していたら大変なことになりますので、ここでは、Excelの機能「重複の削除」を使用します。

 

まず、対象者をまるっと貼り付けます。

 

コピーしたIDと氏名をすべて選択します。

 

次に、データタブの「重複の削除」をクリックします。

 

以下のようなダイアログが表示されますので、「先頭行をデータの見出しとして使用する」にチェックをし、列「ID」にチェックして、OKをクリックします。このチェックは表の中のユニークなキーを選択する必要があります。

 

すると、選択された範囲の中から重複する値のみが削除されます。

 

さて、次の手順に移ります。

 

4.ヘッダーに連番を入力する

いよいよ、Outputとなる表を作成します。

 

ヘッダーに1から始まる連番を入力します。入力の仕方はなんでもよいですが、オートフィルで連続したデータを入力するのが良いですかね。

 

5.Vlookup関数で元のデータから日付を取得する

一番肝の部分です!あとは、以下の矢印のように、連番とIDが対応している部分にデータを入力するだけなのですが、ここでVlookup関数を用います。

 

さて、どのような関数を使うかというと・・・

 

上記のような関数になります。ヘッダーの連番とIDを用いて、Keyと一致する検索値を作り出します。あとは、通常通り、Vlookupするだけです。

 

ここで、二点注意です。

①セルの書式を変更しないとシリアル値(44321 みたいな)となってしまいます。

ということで、セルの書式を日付に変更することを忘れずに!

 

②参照設定($)を忘れないようにしてください

このまま設定したセルをコピーすると、すべてエラーとなってしまいました。

 

これは、前述したVlookup関数の設定の際に、参照($)をしていなかったことに起因しています。

連番とIDをKeyとしたいのに、ずれていることがわかるかと思います。

 

さて、そうならないために、元々の数式に参照を設定します。

元の数式

参照を設定した数式

 

J3 は J$3 に、H4 は $H4 となりました。コピーした際に、縦・横にあえて動かさないという設定になっています。以下の動画でもご確認ください。

 

6.IFERROR関数でエラー回避する

ほぼ、完成ですが、このままコピーしてしまうと、以下の画像のようにエラーが発生してしまいます。

こういう時に便利なのが、IFERROR関数です。

 

Vlookup関数の外側に、=IFERROR([Vlookup関数],””) と設定しています。

 

これで、Vlookup関数がエラーの場合は、ブランクを表示する。ということが可能になりました。

 

さて、これですべてのセルに貼り付けてみると・・・

 

とってもきれいな状態になりました!

 

さいごに

Vlookup関数の変わった使い方って感じですね。覚えておくとどこかで使えるはずですよー!

 

ぜひ試してみてください!