GoogleスプレッドシートでVLOOKUP関数を使う方法を解説します。
この関数、スプレッドシートだけでなくExcelにもあって、非常に便利です。何ができるのでしょうか?
※注:本記事内で、「シート」という言葉はタブを指しています。1つのファイルが複数のシートで構成されているイメージです。別の記事ではスプレッドシートのファイルのことをシートと呼んでいるかもしれませんのでご留意願います。
※注:この記事内で深くは書きませんが、注意点として、表のキーとなる列は必ず表の一番左にすると覚えておいてください。一番左にしなくてもできてしまうようなのですが(参考として方法は最後に紹介しますが)、のちのち不都合が出やすくなります。
表に項目が何十個も並んでから作り変えるのはとても手間がかかります。
最初からトラブルの起きにくいように作っておくのが肝要です。
【目次】
◆VLOOKUP関数 使い方
まずはデータを一つ表示してみる
別のデータも表示してみる
今後のことを考えてもう少し手を加える
仕上げ
表の並べ替えをするときの注意点
はじめに(VLOOKUP関数を使う理由)
例えば文献リストを作成するとします。
あるシートに文献の一覧表を作り、その一行一行の細かい情報は、別のシートに作っていくと考えてください。
そんなとき、個別のシートにも、一覧表に記載した、タイトルや著者の情報は表示すると思いますが、いちいち同じ値を打ち込むのは大変ですから、コピーしたいですよね。
方法としては、
- 「=(参照先のセル)」という形式の数式を埋め込む
- 手作業でコピペする
というのがまず、考えられると思います。ところが、どちらも文献が増えるたびに作業をしなければなりません。
そこで出てくるのが第三の方法。VLOOKUP関数を使うことなのです。
この方法なら、ある本のために個別シートを1つ作成したら、2つ目以降は、そのシートをコピーしてそのまま使うことができます。
「=(参照先のセル)」という形式の数式を埋め込むという方法だと、新しいシートを作るたびに、参照先のセルを書き換えないといけません。
それが、どのシートでも同じ数式で大丈夫になるのです。
これは、データの件数が数件だったら大した利点だと感じないかもしれませんが、ビジネスの現場などでは数百~数千件というデータが出てくることがざらにあります。
そうなったら、とてつもない労力の差が出てくるのです。
それでは、ここからVLOOKUP関数の使い方の例を見ていきましょう。
(SE経験を活かして、コンピュータが得意でない方にも分かっていただけるよう頑張って説明します。)
VLOOKUP関数 使い方
まずはデータを一つ表示してみる
例として、「文献(邦文)」というまとめのシートがあり、その一件一件のデータを「邦001」「邦002」・・・・のように「邦○○○」というシートに記載していくことを考えます。
「邦001」の上の方には、その文献の基本的な情報、タイトルや著者などが入ります。
これは、「文献(邦文)」にある情報をそのまま出せば良いです。
何ページにどんな情報がある、という細かい情報は、13行目以降に書いていく想定です。
それでは、まずは「タイトル」のセルに情報を出してみましょう。
B4セルでEnterキーを押して(またはダブルクリックして)編集状態にします。
「=v」と入れると、「VLOOKUP」というのが出てくると思いますので、それをクリックします。
こんな風に、説明が出てくる場合がありますが、×ボタンを押して閉じます。
すると、このように、関数の引数(ひきすう)※を入力する状態になります。
※引数(ひきすう)とは
関数は、「=XXXXX([値1],[値2],・・・)」のように、関数名のあとに括弧がついていて、その括弧の中に関数ごとにいくつかの値を入れるようになっています。
関数とは、引数を受け取って、答えとなる値を返してくれるもののことを言います。
この返ってきた値のことは、渡した数が引数なのに対して、戻り値(もどりち)と言います。
最初の引数は、データを検索する際のキーとなる値を入れます。今回は、まとめシートの一覧表上で、「邦001」「邦002」・・・という値をキーとする想定です。
個別のシートのB3セルにその値を入れているので、まずは、B3と入力します。(打ち込まなくても、B3セルをクリックすれば入ります)
引数を一つ入れ終わったら、「,」(半角のカンマ)を入れます。すると、次の引数を入れる状態になります。
次の引数は、表示する値のある表の範囲を指定します。今回は「文献(邦文)」シートに一覧表がある想定ですから、そちらのタブをクリックして
このように、表の範囲を選択します。(サンプルでデータが1件しか書かれていませんが、実際には何行もデータが入っていると考えてください。また、後から範囲を変更できるので、神経質になる必要はありません。)
範囲を選択すると値が入るので、再び「,」(半角カンマ)を入れて、最後の引数として「2」(半角数字の2)を入れます。これは、先ほど選んだ範囲の中で、左から2番目の値を出すという意味です。
今はこれ以上引数を入れる必要がないので、「Enter」キーを押します。
数式を入力していた「邦001」シートに自動的に切り替わります。B4セルに、 「文献(邦文)」シートにあった値が表示されたのが分かると思います。
別のデータも表示してみる
次に、先ほど作成した数式を利用して、タイトル以外の情報も表示してみましょう。
まずはタイトルのデータが表示されたセルをコピー(ctrl + c)して
すぐ下のセルに貼り付け(ctrl + v)ます。
N/Aというのは、文法は合っているけれども、戻り値が計算できないという状態です。
Enterキーを押して数式を見てみましょう。
一つ目の引数がB4、二つ目の引数の範囲がB4:I14になっています。
ここで、元のセルの方の値を確認してみると、
このように、一つ目の引数はB3、二つ目の引数の範囲はB3:I13なのです。
つまり、数字の部分が全てプラス1されているのですね。
これは、スプレッドシートが親切心で、「一つしたのセルなのだから、値を一つ大きくしてあげよう」とやってくれていることなのですが、今回は不要です。
そこで、これを防ぐためにやることがあります。
元の式を、このように編集します。
分かりにくいかと思うのですが、セルを表す「英語」「数字」それぞれの前に、「$」(半角ドルマーク)をつけました。※
この「$」というマークは、スプレッドシートの世界では、「値を勝手に変更しないでね」という意味になります。
編集後のセルをコピーして
改めて下のセルに貼り付けてみると、同じ値が表示されました。
※ちなみに、勝手に変更されたのは数字だけなのに、どうして英語の方にも「$」をつけたのか分かりますか?今回の例では正直言って、英語にはつける必要がないのですが、応用して別の使い方をしたときにトラブルにならないように、付けました。
先ほどは元のセルの下に数式をコピーしましたが、右のセルにコピーするとどうでしょう。
中を見てみると、今度は数字ではなく、英語の部分がアルファベット順の一つ先に進んでいるのです。
ちなみにもう一点。よくある間違いとして、
「$」をつけるときに、二つ目の引数のように、手前にシート名が入っていたリするとミスしやすいので気をつけてください。
こちら、なにがおかしいか分かりますか?
表示しようとすると、このようにエラーとなります。
こちらは「N/A」とは違って文法のエラーです。どこがおかしかったのかと言いますと、「$」を「!」の手前に付けてしまっていました。つける位置は、「英語」「数字」の直前です。
もう一つありがちなのが、こちらです。
「$B3」で、「B3」セルに固定できていると思いがちですが、実際には、「B」は固定するけれども「3」は固定せずに変化させるという意味になっています。
両方固定したいのなら、「$B$3」と両方に「$」をつける必要があります。
話がそれましたが、先ほどの状態だと、コピー元と同じ値が表示されていました。
最初に、VLOOKUP関数の三つ目の引数は、参照先の表の左から何番目の値を表示するかを表しているということを書きました。
こういうことですね。
コピーした先もコピー元と同じくこうなっています。
つまりここを「2」から「3」に書き換えると、
このように、左から三番目の項目が表示されるようになりました。
今後のことを考えてもう少し手を加える
今後のことを考えて、ここから2点、修正を加えます。
まず一つ目は、表の範囲。最初に適当に選んでしまいましたが、余裕を持った方が良いでしょう。
私の場合、どんなに増えても20冊まではいかないだろうというくらいなので、余裕をもって100としておきます。
ちなみに、「[セル番号]:[セル番号]」の意味ですが、[左上のセル]:[右下のセル]という意味です。
もう一つの修正ですが、最初に言ったことの訂正です。
今は引数は3つで良いという話でしたが、うしろにもう一つ、「,false」という引き数を追加します。
さきほどの状態できちんと表示されていたのになぜ?と思われるかもしれません。
この最後の引数をつけない場合、一覧表のシート上で、キー値がきれいに並んでいる必要があるのです。今回の場合、邦001,002,003・・・という数字が大きくなる方向に並んでいないといけません。
つまり、データの順番を入れ替えることができないんですね。
ところが、実際の現場ではデータの入れ替えというのは頻繁に起こるもので、例えば、この列の値ではなくて、タイトル順にしたいとか、そういうことです。
その場合に正しく値を表示するためには、この「,false」を追加しておく必要があるのです。
ここでは詳細な仕様には立ち入りませんが、まずは同じようにやってみていただければなと思います。
仕上げ
数式は完成したので、後はこれを下のセルにコピーして、
3つ目の引数を順次書き換えていけば、
このように、全ての項目が表示されました。お疲れ様でした。
表の並べ替えをするときの注意点
表の並び替えをする場合、
文献ノート列の値を書き換えないでください。
邦001 XXXXX
邦002 YYYYY
を並び替えたら、
邦002 YYYYY
邦001 XXXXX
こうなりますが、気持ち悪いからと言って、
邦001 YYYYY
邦002 XXXXX
こうしないでください。おかしなことになります。
文献ノート列の値をキー値(検索する際の目印となる値)といって、これは一度データを登録したら変えないようにします。
どうしても上から連番をつけたい場合、左にもう一列追加してそこに振るという方法があります。
参考情報(おすすめはしない方法)
どうしてできたのか分からないので全くおすすめはしないのですが、こんな、キー値が一番左にない表でも
こんな数式で
このように表示できました。
ただ、この場合、最後に追加した「,false」を追加するとうまくいかないようです。データ件数が増えたらどうなるのかも確認していません。
関数というのは奥が深いのです・・・
最後に
VLOOKUP関数は、たくさんのデータを扱う仕事をしているときに、
「こういう条件で並べ替えたデータがほしい」
「こういう項目だけを抜き出してほしい」
といった声に簡単に応えてくれる、便利な関数です。
今回の私の例のように、
1シート、全データのまとめがあって、個別の細かいデータを記載したシートが別にある
というような場合、個別のシートにまでまとめのシートの内容を打ち込むのは手間ですし、何より、修正が発生したときに両方のシートを直さなければなりません。
これは、手間であると同時に、修正漏れを生みかねません。
こんなとき、VLOOKUP関数を使えば、まとめのシートだけ修正すればよくなるので楽ですし、ミスを防ぐことができます。
とにかく利点が多い関数なので、使ったことがなかったら、ぜひ使ってみてください。