「複数条件で別シート単価表から単価を参照して計算したい。」という趣旨で、
もしも参照先のシート「単価表」を並び替えることやシート「計算」に列を追加することが許されるのであれば、関数をできるだけシンプルにすることができます。
■シート「単価表」
A B C D E F
1 N.min N N.max 単価属性 果物名称 単価
2 1 ≦n≦ 49 昼 リンゴ 210
3 1 ≦n≦ 49 昼 みかん 211
4 1 ≦n≦ 49 夜 リンゴ 300
5 1 ≦n≦ 49 夜 みかん 301
6 50 ≦n≦ 99 昼 リンゴ 190
7 50 ≦n≦ 99 昼 みかん 191
8 50 ≦n≦ 99 夜 リンゴ 270
9 50 ≦n≦ 99 夜 みかん 271
10 100 ≦n≦ 199 昼 リンゴ 180
11 100 ≦n≦ 199 昼 みかん 181
12 100 ≦n≦ 199 夜 リンゴ 250
13 100 ≦n≦ 199 夜 みかん 251
14 200 ≦n≦ 499 昼 リンゴ 150
15 200 ≦n≦ 499 昼 みかん 151
16 200 ≦n≦ 499 夜 リンゴ 220
17 200 ≦n≦ 499 夜 みかん 221
18 500 ≦n ”” 昼 リンゴ 100
19 500 ≦n ”” 昼 みかん 101
20 500 ≦n ”” 夜 リンゴ 200
21 500 ≦n ”” 夜 みかん 201
■シート「計算」
A B C D E F G H I J
1 昼 夜 果物名称 数量 N.min N N.max 単価属性 単価 金額
2 5 ”” リンゴ 60 50 ≦n≦ 99 昼 190 11,400
3 ”” 2 みかん 520 500 ≦n 0 夜 201 104,520
4 ”” 2 リンゴ 102 100 ≦n≦ 199 夜 250 25,500
5 10 ”” みかん 436 200 ≦n≦ 499 昼 151 65,836
■シート「計算」における関数の入力について
・A〜D列は値貼り付けとし、E〜J列は下記の式を入力します。
・式はすべて2行目に入力し、3行目以降はオートフィル(2行目の式を反映)してください。
ただし、E列とI列は配列数式です。中括弧{}より内側の式を入力後にセル内でctrl+shift+enterを押してください。
・IFERROR関数は無くても計算は機能しますが、エラー値を空欄にして表体裁をシンプルにしています。
・F,G列は無くても計算は機能しますが、人間の視覚上の見やすさを考慮して表示しています。
E列 N.min
{=IF(D2="","",MAX(IF(単価表!$A$2:$A$21<=D2,単価表!$A$2:$A$21,"")))}
F列 N
=IFERROR(VLOOKUP($E2,単価表!$A$2:$C$21,2,FALSE),""))
G列 N.max
=IFERROR(VLOOKUP($E2,単価表!$A$2:$C$21,3,FALSE),"")
H列 単価属性
=IF(ISNUMBER(A2),$A$1,IF(ISNUMBER(B2),$B$1,""))
I列 単価
{=IFERROR(INDEX(単価表!$A$2:$F$21,MATCH($E2&$H2&$C2,単価表!$A$2:$A$21&単価表!$D$2:$D$21&単価表!$E$2:$E$21,0),6),"")}
J列 金額
=IFERROR(D2*I2,"")
■参考文献
・I列の計算式は比較的長いですので、使い方の解説は他のサイトのブログが参考になります。
下記のキーワードを検索してみてください。
INDEX+MATCH関数を複数条件にする方法|全て一致を抽出