- 締切済み
エクセル関数で、VLOOKUPの応用?
エクセルの関数を教えてください。 簡単VLOOKUP等での計算は、出来るのですが・・・ 下記の資料より、=IF(A2>0,VLOOKUP(A2,単価表!A:D,4,"")"") で単価を求めることは出来ますが、数量(資材及び大きさ)が多い為、個々にコードを付けるの難しい為。 一つのコードより複数の内容から、条件の範囲に合う内容を選択したい 【資料】 A B C D E F 1 コード 資材名 大きさ 単価 数量 価格 2 1001 〇〇〇 1.00m 1,000円 10ヶ所 10,000円 (1) (2) 3 1001 〇〇〇 2.00m 2,000円 25ヶ所 50,000円 4 1012 △△△ 1.00m 1,500円 22ヶ所 33,000円 5 1012 △△△ 3.00m 3,500円 12ヶ所 42,000円 【単価表】 A B C D 1 コード 資材名 大きさ 単価 2 1001 〇〇〇 1.00m 1,000円 3 2.00m 2,000円 4 3.00m 3,000円 5 コード 資材名 大きさ 単価 6 1012 △△△ 1.00m 1,500円 7 2.00m 2,000円 8 3.00m 3,500円 上記の資料より、コード入力(1)をすると、【全ての単価表】より条件に合う単価(2)が表示されるようにしたい。 【資料:単価で表示したい関数の内容】 1 コード1001の場合、単価表より資材名〇〇〇で大きさ1m以上2m未満の場合、単価1,000円 2 コード1001の場合、単価表より資材名〇〇〇で大きさ2m以上3m未満の場合、単価2,000円 3 コード1012の場合、単価表より資材名△△△で大きさ1m以上2m未満の場合、単価1,500円 4 コード1012の場合、単価表より資材名△△△で大きさ3m以上2m未満の場合、単価3,500円 と表示したい 以上、説明不足かもしれませんが、宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一案です。 ↓の画像のようにSheet2の別表を作成しておきます。 1行目は「コード」と「資材名」の組み合わせを入れておきます。 A2セル以降は大きさの区分を! そしてSheet1のD2セルに =IF(COUNTBLANK(A2:C2),"",INDEX(Sheet2!$B$2:$C$4,MATCH(C2,Sheet2!$A$2:$A$4,1),MATCH(A2&B2,Sheet2!$B$1:$C$1,0))) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 ※ 実際はもっと多くの組み合わせになると思いますが、やり方は全く同じで 数式の範囲指定部分を変更するだけで大丈夫だと思います。 お役に立ちますかね?m(_ _)m
- KURUMITO
- ベストアンサー率42% (1835/4283)
単価表がシート2にあるとして作業列をE列とし、E2セルには次の式を入力して下方にドラッグコピーします。 =IF(ISNUMBER(A2),A2*100+C2,IF(A2<>"","",IF(C2<>"",ROUNDDOWN(E1,-2)+C2,""))) 資料がシート1に有るとして単価の列であるD2セルには次の式を入力して下方にドラッグコピーします。なお、大きさの1mは数値の1として入力されているとします。 =IF(OR(A2="",C2<1),"",INDEX(Sheet2!D:D,MATCH(A2*100+C2,Sheet2!E:E,1)))
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
- keithin
- ベストアンサー率66% (5278/7941)
基本的にはコード番号に対応する「大きさ/単価のブロック」を抜き取ってVLOOKUPするような方策になります。 作成例1:ご質問で掲示された「単価表」のその通りのレイアウトなら =VLOOKUP(C2,OFFSET(単価表!$C$1:$D$3,MATCH(A2,単価表!A:A,0)-1,0),2,FALSE) 作成例2: 単価表のコード1001に対応する大きさ単価のブロック(C2:D4)に「大きさ1001」と名前を定義する 単価表のコード1012に対応する大きさ単価のブロック(C6:D8)に「大きさ1012」と名前を定義する =VLOOKUP(C2,INDIRECT("大きさ"&A2),2,FALSE) のように検索する 作成例3:実際にはコード毎にデータ数(ブロックの行数)が異なるなら たとえばコード毎のブロック行数をVLOOKUPできるように単価表に追記し,その行数を拾って作成例1の数式を応用する