- ベストアンサー
vlookupにつきまして
こんにちは、教えてください。 以下のような表をつくっています。 A B C D E 1 商品コード 商品名 100枚 1000枚 10000枚 2 1 赤 10 9 8 3 2 青 11 10 7 4 3 黄 12 11 6 赤という商品を100枚発注すると単価は10円ですが、1000枚発注すると9円になるという表です。 現状はvlookup関数を使用して「1」という商品コードを入力すると「赤」と表示 させ、その後に「1」と「1000枚」という情報を入力 すると 「9円」という単価まで自動表示させてしまう表を作成 したいと思っています。 もし縦横読む関数がありましたら教えてください。 =IF(A29="","",VLOOKUP(A29,sheet1!$D$5:$E$154,2,FALSE)) 現状はこの関数を使用しています。この関数だと単価は手入力と なってしまい作業効率が悪く、金額齟齬のおそれがありますので是非 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
例データ Sheet1のA1:F4に 商品コード 商品名 100 1000 10000 2 1 赤 10 9 8 3 2 青 11 10 7 4 3 黄 12 11 6 第1行の100無いなどの見出しは数だけの100などにし、単位「枚」は書式設定でそのように見せること(良く使う注意点です。) ーー Sheet2に行って A1に商品コード、2にロットを入力します。 C1には =INDEX(Sheet1!$A$1:$F$100,MATCH(A1,Sheet1!$A$1:$A$100,0),3) D1には =INDEX(Sheet1!$A$1:$F$100,MATCH(A1,Sheet1!$A$1:$A$100,0),MATCH(B1,Sheet1!$A$1:$F$1,1)) と入れます。 結果 2 10001 赤 8 VLOOKUPやLOOKUPより見つけた位置を返す また第3引数で3種類を選べるMATCH関数が最適と思う。 D1の式の・・・MATCH(B1,Sheet1!$A$1:$F$1,1))の最後の1が効いていることに注意。 MATCH関数のWEB解説を「エクセル MATCH関数」で(Google)照会のこと。 2次元表表引きはINDEX関数が役立つ。
その他の回答 (3)
- mshr1962
- ベストアンサー率39% (7417/18945)
B29に枚数入力として LOG関数(対数)を利用する方法 INT(LOG(B29)+2) 10枚以上99枚で3、100枚以上999枚で4、1000枚以上9999枚で5になります。 LOOKUP関数を利用する方法 LOOKUP(B29,{0,100,1000},{3,4,5}) 0枚以上99枚で3、100枚以上999枚で4、1000枚以上で5になります。 IF文を利用する方法 IF(B29>=1000,5,IF(B29>=100,4,3)) 0枚以上99枚で3、100枚以上999枚で4、1000枚以上で5になります。
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法はいかがでしょうか。 仮にご例示の表(A1:E4)から、F1にコード、F2に枚数を入力し、単価を抽出します。 =OFFSET($A$1,MATCH($F1,$A$1:$A$4,0)-1,MATCH($F2,$A$1:$E$1,0)-1)
- pbforce
- ベストアンサー率22% (379/1719)
数量が100なら商品コードから3番目、1000なら4番目、10000なら5番目と言うことですので、IF文で3,4,5を指定するのは?