「B」という商品データが書き込まれたシートを参照し、JANコードを
元に各データを引っ張りたいと思います。
普通なら
=IF($A2=””,””,VLOOKUP($A2,商品データ!$1:$1000,3,FALSE))
など書けばいいと思いますが、A列以外の場所(例えばF列)に
見るべきJANコードが有る場合はどうすればいいでしょうか?
=IF($A2=””,””,VLOOKUP($A2,商品データ!$L$1:$L$1000,3,FALSE))
こういうことはできませんよね?
というか「#REF!」とエラーが出ました。
よろしくお願いします。
http://www.atmarkit.co.jp/fwin2k/win2ktips/317vlookup/vlookup.ht...
@IT:Windows TIPS -- Tips:VLOOKUP関数でExcel帳票への自動入力を可能にする
VLOOKUPで指定する範囲は、検索ワードと引っ張ってくる文字列がある範囲です。
それが
$L$1:$L$1000
という指定だと、検索するワードの列しか指定しないことになります。
次の 3 というのは 指定された列の3列目という意味です。
列を指定する場合、
コード、内容 という順でないと難しいですね。
なので F列にコードがあるならば
$F$1:$L$1000
という感じに指定したほうがいいでしょう。
人力検索はてな - 質問一覧
1.商品データ一覧の頭(1列目)に名前を設定する
例)
A B C ・・・ F
1 入荷日 出荷日 商品名 ・・・JANコード
2 ○○○ ××× ☆☆☆ ・・・XXXX
3 △△△ ■■■ XXX ・・・XXXX
2.入力する箇所の1つ上のセル(A1)に「見るべきJANコード」が記載してあるタイトル(例の場合『JANコード』)を記入する。
3.表示したいセルに以下のように記載します。
=IF($A2=””, ””, DGET(商品データ!$A$1:$L$1000, 3, $A1:$A2))
データがどの列まであるのか分からないので、A~Lにしましたが・・・。
これで出来ると思いますよ。
軽く見ただけでちゃんと検証していないのですが、
1列目はうまくいったのですが、2列目以降がうまくいきません。
少し調べてみます。。。
http://www.excel.studio-kazu.jp/lib/e1tw/e1tw.html
�G�N�Z���̊w�Z�FVLOOKUP(e1tw)
extreaさんが、Lと書いたのは参照する場所です IF($A2=””,””,VLOOKUP($A2,商品データ!$L1:$L$1000,3,FALSE)) としているので、その範囲の3列目のデータを参照すると範囲外なので#REF!になります
IF($A2=””,””,VLOOKUP($A2,商品データ!$1:$1000,3,FALSE)) の意味は IF($A2=””,””,VLOOKUP($A2,商品データ!$A1:$IV1000,3,FALSE)) と同じです(つまり横方向全部)
L列に参照すべきデータがあるならば
IF($A2=””,””,VLOOKUP($A2,商品データ!$A1:$L1000,12,FALSE)) (←Lは12番目なので)
とすべきです
もしF列にA2の参照テーブルがありL列に結果が
入っているのであれば
IF($A2=””,””,VLOOKUP($A2,商品データ!$F1:$L1000,7,FALSE)) となります
LはFから見て7番目 (F=1,G=2,H=3,I=4,J=5,K=6,L=7なので)になるわけです
ありがとうございます。
徹夜明けの頭にはすんなりと入らないようで。。。
もう少し、頭がさえている時に見直させて頂きますね。
Vlookupの機能上、
発売日/メーカー/分類/商品名/品番/JANコード/数量
の列で、JANコードから商品名などを引っ張ってくるのは 無理です。
JANコード/発売日/メーカー/分類/商品名/品番/数量
というように 先頭に JANコードを持ってくれば、どの項目も持ってこれます。
ただし、
範囲に A:G まで指定しないとダメですが。
ありがとうございます。
vlookup以外で、出来そうな機能がないか質問させて頂きました。
そんな機能は無いですかね?
http://arena.nikkeibp.co.jp/lecture/20040322/108253/
一覧表を“縦横”に調べ、該当するデータを取り出す / デジタルARENA
MATCH、INDEX、VLOOKUPを組み合わせれば可能です
ありがとうございます。
組み合わせですね
http://www.moug.net/skillup/buef/kn006-1.htm
�u���b�V���A�b�v�IExcel���@���[�O�X�L���A�b�v�u��
ちょっとめんどくさいですが、INDEX関数とMATCH関数を組み合わせればできないこともないです。
たとえば、「分類」のセルには
=INDEX(B!$C$2:$C$1000,MATCH($A$2,B!$F$2:$F$1000,0),1)
と入力。
他の項目については、「$C$2:$C$1000」の部分を、Bシートの該当する範囲に変えて入力する。
これで、できると思いますが?
出来ました!
ありがとうございます。
VLOOKUP関数を使うものとばかり
思いこんでいたのでハマりました
VLOOKUP以外の方法ではINDEXとMATCHを組み合わせて使う方法があります。
たとえば、F列のコードを検索してA列の値を得る場合は次のようになります。
=INDEX(商品データ!A:A,MATCH($A2,商品データ!$F:$F,0))
この方法ならJANコードは昇順にソートされている必要はないし、検索する列の左側の値も取り出せます。
また、URLで紹介されている例のように縦と横の両方から表引きすることもできます。
http://arena.nikkeibp.co.jp/lecture/excel36/20020521/01/
WPC ARENA / 一覧表を“縦横”に調べ、該当するデータを取り出す
http://zeronao.seesaa.net/article/6939675.html
エクセルの家庭教師: INDEXとMATCH関数
なるほど!
NDEXとMATCHを組み合わせならソートの
必要なしですか。
まさしく自分の環境にマッチしています。
元の商品リストは発売順に並んでいるので
JANでソートさせたくなかったのです。
http://www2.moug.net/bbs/exopr/
Excel���ʋ@�\ Q&A�f����
開けてもらえるかな…(^_^.)
Sheet1(納品データ)
商品名 JAN 単価
-----------------------------
EN-LLL555 1234 500
MK500-PPP 5678 600
Sheet2(商品管理)
JAN 単価 商品名
--------------------------
1234 500 EN-LLL555
だとして、
Sheet2の
B2=INDEX(Sheet1!A$2:C$3,MATCH(A2,Sheet1!B$2:B$3,0),3)
C2=INDEX(Sheet1!A$2:C$3,MATCH(A2,Sheet1!B$2:B$3,0),1)
以下コピーでどうでしょうか。
INDEXは検索範囲に対して、行番号と列番号を指定して値を取り出す関数、
MATCHは検索範囲内に対して条件に合致した行番号を取り出す関数です。
わかりやすい例ありがとうございました。
あと、
B2=INDEX(Sheet1!A$2:C$3,MATCH(A2,Sheet1!B$2:B$3,0),3)
C2=INDEX(Sheet1!A$2:C$3,MATCH(A2,Sheet1!B$2:B$3,0),1)
末尾の1,3等の値が気になったので調べてみたのですが
領域番号なのですね。勉強になりました。
先ほどまでの回答で
INDEX(Sheet1!$B$1:$B$1000,MATCH($A2,Sheet1!$L$1:$L$1000,0),1)
INDEX(Sheet1!$C$1:$C$1000,MATCH($A2,Sheet1!$L$1:$L$1000,0),1)
INDEX(Sheet1!$D$1:$D$1000,MATCH($A2,Sheet1!$L$1:$L$1000,0),1)
とめんどくさい事をやっていたので、末尾だけ変えれば
良いとは大助かりです
すみません。この場合
$F$1:$F$1000
でした。
少し、イメージわきにくいですね。。。
一応イメージとしては
シート「A」・・・自店舗管理の商品管理表
シート「B」・・・メーカー納品データ
シート「A」のJAN欄に入れるだけで必要なデータは
シート「B」から引っ張ってくる。
ただし、JANコードはF列
シート「A」
JAN/分類/メーカー/商品名/品番/数量/コメント
481111111/aaa/ccc/ddd/10/新発売です。
シート「B」
発売日/メーカー/分類/商品名/品番/JANコード/数量
20060101/aaa/bbb/ccc/ddd/481111111/10
20060202/eee/fff/ggg/hhh/482222222/10
20060303/iii/jjj/kkk/fff/483333333/10
このようなイメージです。