VLOOKUP練習問題3日目です。
利用したエクセルファイルをこちらに添付しました。
必要に応じてダウンロードしてご利用ください。
エクセル関数練習問題エクセルファイル
今度はこんなこともできますよ、的なVLOOKUP+小技を使った練習問題です。
問題
元の表があります。横に長ーい表です。
これを別のシートに工場名をキーにしてVLOOKUPで値を展開します。
1問目は横2段に展開、二問目は縦に展開します。
表の余白は自由に使えることとします。

1問目:横にデータを展開
元の表には2020年の1月~2021年の12月まで2年分24か月のデータがあります。
そのデータを工場ごとに2020年の1~12月を展開、次の行に翌年2021年の1~12月を展開します。
ヒント
・キーは3、4行目はB3の工場名、5、6行目はB5の工場名です。
・VLOOKUPの列番号は手入力で指定してもよいですが、面倒なので、余白のセルに列番号を入力しておき、そのセルを参照する方式がおススメです。
2問目:縦にデータを展開
元データは横ですが、工場ごとに縦方向にデータを展開します。
ヒント
・キーはD列はD2の工場名、E列はE2の工場名、F列はF2の工場名です
・VLOOKUPの列番号は手入力で指定してもよいですが、面倒なので、余白のセルに列番号を入力しておき、そのセルを参照する方式がおススメです。
解答例
1問目の解答例
1問目。あくまで解答例です。どのようなやり方でも出力する値があっていたら大丈夫です。っていうか、この場合VLOOKUPなんて使わないで元の表をコピペすりゃいいじゃん、という作りですがね。
まず、セルD3にVLOOKUPを入力します。
検索値 :セルB3の工場名を指定します。とりあえず行列の絶対参照にします。
範囲 :元データシートのセルA3~Y8を指定します。行列の絶対参照にします。
列番号 :とりあえず、2を指定します。
検索方法:完全一致のFalse(または0)を指定します。

VLOOKUPを入力したセルD3をほかのセルにもコピーして、列番号を手入力で直していってもよいのですが、結構面倒です。
そこで、参照列を別のセルに入力しておき、VLOOKUP式の列番号はそのセルを参照する方式にしようと思います。
どこでもよいのですが、わかりやすいように表の下セルD8~O9に参照列番号を入力しておきます。
まず、セルD8に「2」と入力します。
隣のセルE8に =D8+1 と入力します。
セルE8をコピーしF8~8へ貼り付けします。
すると2からの連番が入力されました。
次にセルD9に =D8+12 と入力し、14を表示させます。(14と入力、してもよいのですが)
セルE9~O9にはセルE8の式をコピーして貼り付けします。

これで青森工場分はセルD3をコピーして貼り付けすればOKです。

ためしに青森工場の2021年12月のセル4をクリックしてみると、検索値はセルB3の青森工場、列番号はセルO9の25を参照していることが分かります。

次に、岩手工場の5~6行目です。青森工場の2020年1月のセルD3をコピーして岩手工場の2020年1月のセルD5に貼り付けします。と、まずはエラー値が表示されます。
式を2か所だけ変更します。
=VLOOKUP($B$3,Sheet1!$A$3:$Y$8,D10,0)
↓
=VLOOKUP($B$5,Sheet1!$A$3:$Y$8,D8,0)
検索値の$B$3を$B$5に修正。
列番号D10をD8に修正。
これでセルB5をコピーしてセルB5~O6に貼り付けしたら完了です。

2問目の解答例
2問目。あくまで解答例です。どのようなやり方でも出力する値があっていたら大丈夫です。っていうか、この場合VLOOKUPなんて使わないで元の表を縦横変換してコピペすりゃいいじゃん、という作りですがね。。。
さて、今度は横のデータを縦に出力することになります。
1問目と同じように列番号は余白に入力しておいて参照する方式にしましょう。列番号をチマチマ入力していくのは面倒なのでね。
まず、何列目なのかを元の表で確認しましょう。
列番号はCOLUMN関数で調べるのが便利です。
=COLUMN()
と入力します。カッコ内はなにも入れません。列番号を返す関数です。
行番号を返すROW関数もありますが、行番号は横の行番号を見ればわかるのであんまり使いません。

キーから数えて2列目~最後が25列目だということが分かりました。
これをそのままコピーして使います。セルB10~Y10までをコピーし、出力する表の余白部分に縦横変換して値のみ貼り付けします。

出力するシートにVLOOKUPを入れていきます。
まずセルD3に入れていきます。
検索値:2行目の工場名を指定します。コピーしたときに行がずれないように行の絶対参照にします。(F4キー2回で行の絶対参照になります)
範囲:元の表のA列の工場名から2021年12月のY列までの範囲を指定します。行列の絶対参照にします。
列番号:先ほど用意したH列の数値を利用します。H3を指定し、F4キーを3回押して列の絶対参照にします。

VLOOKUP式を入力したセルD3をコピーし、セルD3~F25に貼り付けします。罫線を崩さないように、形式を選択して貼り付けで「数式のみ」とする方がスマートです。

これで完成です!意外にあっさり完成しましたね。
おススメのエクセル本
学びなおしにも!これ一冊よむだけで全然違う。
関数を簡単に楽しく学ぶなら、こちらがおススメ!マンガみたいで読みやすいですよ。
コメント