- ベストアンサー
エクセルのVLOOKUP関数について
- エクセルのVLOOKUP関数を使用して、sheet2の商品マスターのデータをsheet1に表示する方法について教えてください。
- sheet2には品目コード、品名、会社名、県名、個数が入力されており、sheet1に指定した品目コードのデータを表示することができるかどうか知りたいです。
- 商品マスターのデータは約1400行あり、県名に対して2個、個数を3種類持っています。VLOOKUP関数を利用する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! >尚、sheet2の商品マスターは作り直せず、手をつけることも出来ません。・・・ とありますので、一例です。 ↓の画像でSheet1のA・B列を作業用の列として使用します。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルでずぃ~~~!っと下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") という数式を入れオートフィルで列方向・行方向にコピーすると 画像のような感じになります。 ※ 作業列が目障りであればA・B列を非表示にするか遠く離れた列を使用します。 参考になりますかね?m(_ _)m
その他の回答 (2)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
マスターの何とも言えない作りに合わせて作業するのもたいへんなので、シートごとコピーし、好きに作り変えてから集計するのはいかがですか?関数もいいですが、オートフィルタやピボットテーブルでも手っ取り早くその手の集計ができますよ。
- keithin
- ベストアンサー率66% (5278/7941)
VLOOKUP関数では、ヒットしたキーの行から「ずれた行」の値を取ってくることはできません。 なので、あなたが見つけて理解できなかった、そういう意味不明な数式を使わなきゃならないってことです。 簡単な方法) シート2のマスターシートを触る必要は全くありません。 シート2のマスターシートはそのままにしておいて、それを元にシート3に、あなたにも判るVLOOKUP関数で計算できる体裁に、マスターデータを並べ替えてしまいます。 A列に品目コード B列に商品名 C列に会社名 D列に県名1 E列に県名2 F列に県名3 G列に個数1 H列に個数2 I列に個数3 のように。 たとえば「県名2」を表示したいセルには =IF(VLOOKUP(コード,Sheet3!A:I,5,FALSE)="","",VLOOKUP(コード,Sheet3!A:I,5,FALSE)) のように配置しておけばOKです。 またもちろん、そうしたければ「県名1」「個数1」「県名2」「個数2」「県名3」「個数3」の順で並べても全然かまいません。 メンドクサイ方法) シート1のA2に111や333を記入する事として。 A3に =IF(OR(A2="",INDEX(Sheet2!A:A,MATCH($A$2,Sheet2!A:A,0)+ROW(A1))<>""),"","c") と記入し、下向けに適当数コピー貼り付け。 B2に =IF($A2="","",INDEX(Sheet2!B:B,MATCH($A$2,Sheet2!$A:$A,0)-1+ROW(B1)))&"" と記入してD2までコピー、更にコピーして下向けに適当数貼り付け。 E2に =IF($A2="","",INDEX(Sheet2!E:E,MATCH($A$2,Sheet2!$A:$A,0)-1+ROW(E1))) と記入し、セルの書式設定の表示形式でユーザー定義を選んで #,### と設定、コピーして下向けに適当数貼り付ける。
補足
お返事遅くなり申し訳ありません。大変参考になりました^^ もう一つ教えて頂きたいのですが、添付画像のSheet1のD2以外にコードを入力する場合はどうすればいいでしょうか?例えばD5,D10に。出来ればコードを入力できるセルが複数あれば、助かるのです。一度に複数のデータを参照できるので。お時間あれば、教えてください。