Excel2013対応
---topics:vlookup関数、絶対参照と相対参照---

其ノ9 vlookupの練習 その2

vlookup編の第2回です。下↓からダウンロードをお願いします。

開くとこんな↓です※1 ※2

取扱い品目データ hinmoku_data
※1 取扱い品目データ hinmoku_data
在庫数データ data_zaiko
※2 在庫数データ data_zaiko

「取扱い品目データ」hinmoku_data.xlsの方、「価格」列と「在庫数」列が空っぽですね。 今回はココを、「在庫数データ」data_zaiko.xlsからひっぱってきて埋めたい、と思います。
例によって例のごとく、vlookupを使うのですが、 vlookup関数の式のかたち、覚えています?念のためおさらいしておきましょう。

=vlookup(検索値 , 検索範囲 , 欲しいのは左から何番目? , FALSE)

ハイ、では。まず、vlookupを使う前に、下準備として、参照元となるデータをsheet2にコピーしてきましょう。
全選択してコピペ、でも良いんだけど、今回はシート移動を使いましょうか。 まず、2つのExcelを両方とも開いてください※3。 そして、「在庫数データ」のシートタブを右クリックします。
「移動またはコピー」ってありますよね。それを選択してください。

2つExcelを開き、移動またはコピー
※3 2つExcelを開き、移動またはコピー

移動先ブック名をもう一方のExcelにします。 移動先のExcelを開いていれば、下三角▼で選べるようになります。
挿入先は末尾でいいよね。
で、「コピーを作成する」チェックボックスに忘れずチェック入れておいてください。 入れ忘れるとデータが切り取られてしまいますので。※4 ※5

移動先の選択
※4 移動先の選択
コピー完了
※5 コピー完了

コピーができました。
じゃ!さっそく関数入れちゃおうかな!
=vlookup(と入力して、検索したい値は1コ目の注文番号だから…

検索値はA2セルで…
※6 検索値はA2セルで…

範囲は「在庫」シートを全部選んで…

範囲をガバっと選んで…
※7 範囲をガバっと選んで…

「価格」列は左から4番目だから…

左から4番目、と…
※8 左から4番目、と…

FALSEを入れて、入力完了!

oops!
※9 oops!

*おおっと*
エラーが出た!何で?
 ・
 ・
ちょっと試しに、1コ目の注文番号「D59465」を、「在庫」シートで検索してみましょうか。

ctrl+Fで検索してみた
※10 ctrl+Fで検索してみた

ctrl+Fで検索すると、あるんですよ、コレが。ということは、完全な、失敗、ですな。
うーん、どういうことなんでしょうか。
 ・
 ・
実は、vlookupの式のかたち、思い出してください。 vlookupは、1コ目の引数「検索値」を、2コ目の引数「検索範囲」の中から探す、という構造になっているんですが、 「検索値」が「検索範囲」の一番左にないとダメなんです。
今回の例だと、「注文番号」が一番左にないとダメ。
現状だと、sheet2「在庫」シートの「注文番号」は右端にあるから、これを左側にもってこないといけない。 加工が必要なんですな。

検索範囲の一番左にもってくる
※11 検索範囲の一番左にもってくる

ということで、sheet2の「在庫」シート、加工してやりましょう。「注文番号」列を一番左にもってきてください※12
こういった加工が必要だから、参照元となるデータはコピーを使ってるわけなんです。

vlookupは下準備に加工が必要なんだな
※12 vlookupは下準備に加工が必要なんだな

下準備ができたところで、式を入れてあげましょう。
vlookupの式はもう長々と説明しなくても、大丈夫ですよね? 不安、という人は、画面見ながらついてきてくださいね※13 ※14

「価格」列は左から何番目?
※13 「価格」列は左から何番目?
「価格」列を埋めた
※14 「価格」列を埋めた

ハイ、ではこの勢いで、「在庫数」も埋めていきましょう。
式をもう一回手入力しても良いんだけど、めんどくさいから隣からコピっちゃおうかな!※15 ※16

隣をコピると…
※15 隣をコピると…
oops!(本日2回目)
※16 oops!(本日2回目)

…エラーになってしまいました。うーん…左の「価格」列はうまくいっているのに…。
コピペした式、どこがうまくいってないのか、 ちょっと分析してみましょうか。
 ・
 ・
まず、「検索値」がB2になってますね※17

検索値がB2にずれている
※17 検索値がB2にずれている

あと、2コ目の引数(検索範囲)もB:G列にずれちゃってます。 これではvlookupは機能してくれませんよね。

で、こうなってしまった時の対策なんですが、 改めて式を手で入力し直せば良い※18。 つまり、コピペしない。

式を入れ直しました
※18 式を入れ直しました

でも、コピペしたいケースもありますよね。 例えば、今回のケースは式を入れるのが「価格」と「在庫数」の2列だけなので入力し直してもそんなに手間ではないですが、 もしこれが5列あったとしたら、けっこうな手間です。 なので、隣の列にコピペしてもずれない方法を紹介しましょう。
コピペしてもずれないようにするためには、1列目の「価格」のところの式の入れ方から工夫してやる必要があります。 まず、いつもの通りvlookup式を入れてください。「 =vlookup( 」として、A2セルを選択するんでしたね※19

検索値にA2セルを選択して…
※19 検索値にA2セルを選択して…

で、A2セルを選択したら、F4キーを押してください※20。 すると、「$」マークが付きますよね?

A2→$A$2になる
※20 A2→$A$2になる

コレ、絶対参照ってヤツです。 参照セルの番地の前に「$」マークが付くと、その参照が固定化されるんです。
セル参照には相対参照($なし)と絶対参照($あり)があるのですが、 相対参照と絶対参照のちがいは、…まあ解説書を読むと難しい説明が載ってますけど、 ここでは簡単に、相対参照は「ずれる」、絶対参照は「ずれない」と理解しておいてください。
今回は、コピペしてもずれないように、絶対参照を使う、というわけです。
同様に、検索範囲の選択のときも、F4キーで$付きにしてください※21

第2引数も絶対参照に
※21 第2引数も絶対参照に

あとは同様です※22。 ではこの新たな式を「価格」列全部にコピーしましょう!※23 さあ!どうなるか?

あとは同様に
※22 あとは同様に
何かがおかしい…ぞ…?
※23 何かがおかしい…ぞ…?

あれ?全部5600円になっちゃった…。これはおかしいぞ…。
 ・
 ・
実は、1コ目の引数「検索値」のときに、固定化させすぎちゃったんです。
「A2」セルって、「A列の2行目のセル」って意味ですよね。 その「A」とか「2」の前に$マークが付くと、そこが固定化される。 で、「A」列が固定化されるのは良いんですよ。だけど、「2」まで固定化されちゃうと、 延々と注文番号「D59465」を検索しちゃうことになってしまう…。 だから、全部5600円になっちゃったんです。
「A2」の「2」のところは、「3、4、5…」とずれていってほしいですよね。 なので、もう一回。
「A2」の「A」のところだけ固定されるように、調節しましょう。F4キーを何回か押せば、われわれが求めている状態 「$A2」になりますので※24

F4キーを3回押す
※24 F4キーを3回押す

これで、「価格」列はきっちり埋められたと思います※25

「価格」列はできた
※25 「価格」列はできた

ようやく本題に帰って来ることができました。 では、式を「在庫数」列の方にコピーしてみましょう。 「価格」列の式をコピって、「在庫数」列の1番上に貼りつけてください※26

「在庫数」の方にコピーした
※26 「在庫数」の方にコピーした

エラーは出なくなりましたね。コピペ先でも、列がずれていないこと、確認しておいてください。
でね、もうひと手間必要なんですが、実はこのやり方、 3番目の引数「左から何番目?」のところは手で直さないといけない んですよ。
現状左から番目を拾ってきてるんですが、 それを番目に直してください※27

左から6番目に直す
※27 左から6番目に直す

そうすれば、「在庫」シートの左から6番目、つまり「在庫数」列の情報を引っ張ってこれます。
あとは、この式を「在庫数」列全部にコピーしてください※28。完了です。

できた
※28 できた

今日はこんなところですね。

え?絶対参照にしたけど、あんまり楽になってないって?そうですよね、どうせなら手直しの部分ナシで、 コピーしただけできっちり情報を拾えれば良いですよね。
つまり、
 ・「検索値」= 列は動かない、行は動く
 ・「検索範囲」= 動かない
 ・「左から何番目?」= 動く
とできれば、理想的なんですが…。
でもとりあえず今の段階では、この辺りで妥協しておきましょうよ。 もちろんやり方はあります、が、式が複雑になっちゃう。 なので、vlookupに慣れるまでは、とりあえず上のやり方で覚えていきましょうよ。 スマートなやり方は、後々、紹介できたら、と思っています。

Copyright(C)森田表計算