---topics:vlookup関数、「データベース」の概念---

其ノ14 …ところで、「其ノ2」って何の意味があったの?

vlookupの使い方って、もう覚えていただけましたでしょうか。
vlookupって、2つのExcelを合体するときに使うんですよ。 例えば、片方のExcelには「会社名」はあるけど、「会社住所」がない。 だけど、もう片方のExcelには「会社住所」が載っている。 そういうとき、例えば「会社ID」みたいな情報を特定できる要素があれば、 「会社住所」を引っ張ってこれるんです、vlookupを使って※1

vlookup概念図
※1 vlookup概念図

なので、vlookupって便利だよね、ってトコまでが、これまでのおさらい。
ですが、vlookupを使う上で気を付けてほしい点が1点。 …って、過去vlookupの注意点ばっかり挙げてきているので、 「vlookupってめんどくさいヤツなのかな~」とか思う方もいらっしゃるかもしれませんが、 vlookupが役立つ関数であることは間違いありません。 ただ、コイツを100%使いこなすにはやっぱりコツがあるので、 それについてお話をしたいと思います。 というわけで、下↓からサンプルデータをダウンロードしてください。

コイツを開くと、シートが2枚あります。
シート1「売上データ」はこんな感じです※2

1枚目のシート
※2 1枚目のシート

これの右端の列「会社住所」を、シート2「会社情報テーブル」からもってきてほしい、というのがミッション。
で、シート2はどんなものかというと、こんなふうに↓なっています※3

会社IDに重複がある
※3 会社IDに重複がある

…会社ID「187」が2つありますね。いやな予感がします。
が、とりあえずこのままの状態で、会社IDを軸にして、 「会社住所」を引っ張ってきてみてください。
すると、こう↓なります※4

会社IDを軸にvlookupをすると…
※4 会社IDを軸にvlookupをすると…

「大一番ソフト」の住所が「ウルケミ」と同じになってしまいました。 「大一番ソフト」は大阪のはずなのに…。

実は、vlookupは、2コ目の引数(検索範囲)で指定した範囲を上から検索して、 最初にぶつかった情報をもってくる、という特性を持っています。 だから、「187」が検索値である以上、永遠に「東京都渋谷区~」の住所しか持ってこないんです。
つまり、データ元の方でダブっている情報は、上側しか有効じゃない

でね、「こういうとき、どうしたらいいの?」って質問をネット上でされる方、けっこういるみたいです。 つまり、元データにダブリがあるままvlookupをするにはどうしたらよいか、というもの。 そして、それに対して、複雑な関数を駆使して回答してくださる方もいるみたいです。

他方、今回のサンプルデータの場合に話を限りますと、現状のママでも、 「会社ID」じゃなくて「会社名」の方でvlookupかければ、狙った結果が得られるでしょう。
また、仮にデータ量がもっと多かったとしても、 会社IDと会社名を結合した文字列を作ってそれで作業すれば、 もしかしたらうまくいく、かもしれません。

…けどね、「そもそも」ですよ? …そもそも、「会社ID」がダブってるのがまずもっておかしいんですよ。 「会社ID」っていうのは、会社情報を特定するためのキーとなる番号であるはずです。 だから、ユニークなものでなければならないんだけど、この表ではそうなっていない。 つまり、この表には欠陥がある。
欠陥のある表で仕事をしたところで、良い結果が得られるわけがありません。スタートからダメなのですから。 例えて言うなら、4つあるタイヤの1コが外れちゃった自動車、そんな感じです。 ここで考えるべきは、「残った3つのタイヤで、どうやったらうまく走れるか」でしょうか? …うーん、「3つのタイヤで切り抜けなけりゃならない」事態も、現実には、あるでしょう。 ですが、ファーストチョイスは「タイヤを直す」であるはずです。あるべき、なんです。

だから、データの重複を解消する、あるいは差異のある箇所を割り出す(そして最終的に解消する)、という作業が必要になるんです。 つまり、vlookupの下準備として
このために、其ノ2や其ノ4の練習をしてもらったんです。

データって、2次利用、3次利用しますよね※5
その際、元となるデータに欠陥があると、その後の作業に悪影響を及ぼします。 だから、元データは一意でなければならない、 つまり、ひとつのIDに対してひとつの情報、というかたちに(「ID」という名称でなくても、それに準ずるものがあるはずですよね)固まっていなければならない。 こういう考え方を、「データベース」と言います。

データの利用のされ方
※5 データの利用のされ方

こういう話をすると、 「Excelはデータベースソフトではない。表計算ソフト」なんてツッコミをなさる方もいて、 …ハイ、その通りです。 ですが、実際には簡易データベースとして利用されているケースも多いです。 いろんな用途に使えちゃいますからね、Excel。 ホラ、単なる方眼紙として使われているの、見たことありますよね?(アレ見ると残念な気持ちになりますが…)
それに、vlookupを使いこなす上で、データベース的なものの考え方は、必要になるかと思いまして。

今回のように、「187」が2コあってそれぞれに違う情報が紐づいているような場合、 本来であれば、どちらかに新しいIDが振り直されるのが筋です。 であれば、IDを振り直すためにも、問題箇所の検出はあらかじめやっておきたい。
伝統工芸の世界に、「道具が仕事をしてくれる」という言葉があります。 良い制作物を作る道は、仕事道具を揃える時点から始まっていて、 道具の質が悪ければ、どんなに技術があっても、良い制作物はできないでしょう。 他方、良い道具を準備できたならば、その段階で、良い制作物が出来る道はおのずから開かれている…、というような意味です。
Excel仕事も同じです。 「vlookup関数を入れる」というのは、作業上の一工程にすぎません。 その手前の段階で元となるデータの整備ができていなければ、vlookupで得られる成果も中途半端なものになってしまいます。 だから、「その後の工程に耐えるに十分なデータを準備する」という意味で、元データの精査というのが、まずもって必要になります。 精査の仕方というのは、…まあ人によっていろいろなやり方があると思いますが、僕が最低限やるのは、
1.「ID」など、vlookupの軸となるデータに重複がないかどうか調べる
2.もし重複があるのであれば、それらに差異がないかどうか、異なる情報が紐づいていないか調べる
です。つまり「其ノ2」とか「其ノ4」でやったことですね。 「其ノ2」「其ノ4」でやったことって、このときに活きてくるんです。

ということで、其ノ2とか其ノ4でやったことも、それなりに意味はあったんだよ、というお話でした。 今回はちょっとカタイ話でしたね。 「いまいちピンとこなかった」という人も、 とりあえず、「vlookupは上側の情報しかもってこれない」ということは覚えておいてください。

Copyright(C)森田表計算