この場合、複数の条件があり、それらをまとめると 非常にわかりにくくなりますので、メンテナンスしやすさを考えて数式を入れたほうがいいです。
まず C1に
=IF(A1>=1,IF(A1<=1000,4980,0),0)
次に
D1に
=IF(A1>=1001,IF(A1<=2000,9980,0),0)
というように 以降 E1、F1・・・と入れていきます。
変更する箇所は
A1>=1001
の1001のところ
A1<=2000,9980
の 2000と9980 をそれぞれ適宜変更してください。
横のセルにどんどん入れていき
Z1が 24番目となります。このときだけ
=IF(A1>=100001,A1*2.2,0)
とします。
それで肝心のB1ですが
=SUM(C1:Z1)とします。
vlookup関数を使用すると楽です。
セルB1に以下を入力します。
=IF(100001<=A1,ROUNDDOWN(A1*2.2,0),VLOOKUP(A1,D1:E23,2,TRUE))
D列に各『AAA以上BBB以下ならばCCC』のAAAを入力します。
(セルD1に1、セルD2に1001、セルD3に2001、…セルD23に90001)
※100001以上の時の100001という値は記入不要です。
セルB1の数式の中に100001以上のための計算式が入っています。
E列に各『AAA以上BBB以下ならばCCC』のCCCを入力します。
(セルD1に4980、セルD2に9980、セルD3に12880、…セルD23に248880)
B1の数式をB2にコピーされる場合は、以下の数式の様に$を入れてセル参照を固定してください。
=IF(100001<=A1,ROUNDDOWN(A1*2.2,0),VLOOKUP(A1,$D$1:$E$23,2,TRUE))
IF文、AND文などの組み合わせでも実現できるかとは思いますが、
恐らく数式が長くなってしまいエクセルがエラーを表示するかと思います。
また上記の方法の方が見た目も分かりやすく修正も簡単だと思います。
最初の正解者ではないと思いますが、先の質問にコメントした VLOOKUP を使用した例です。
http://office.microsoft.com/ja-jp/excel/HP052093351041.aspx
別シートでもかまいませんが、どこかに
0 | |
1 | 4980 |
1000 | 9980 |
2000 | 12880 |
3000 | 14880 |
4000 | 17880 |
5000 | 19880 |
6000 | 22880 |
7000 | 24880 |
8000 | 27880 |
9000 | 29880 |
10000 | 34880 |
12000 | 39880 |
15000 | 44880 |
18000 | 49880 |
20000 | 59880 |
25000 | 74880 |
30000 | 94880 |
40000 | 128880 |
50000 | 148880 |
60000 | 178880 |
70000 | 198880 |
80000 | 228880 |
90000 | 248880 |
という表を作り A1:B24 を選び名前 「PRICE_LIST」 と付けます。
http://kokoro.kir.jp/excel/name.html
B1に
=IF(ISNUMBER(A1),IF(A1>100000,A1*2,VLOOKUP(A1,PRICE_LIST,2,TRUE)),"")
B1をB列にコピーします。
http://q-apr25.ne.jp/ (dummy)
これだけ条件が細分化されるとif関数でのネストは無理がるのでVLOOKUP関数を使用する必要がありますね。ただし、100000円を超える分については別途対処する必要があるのでその分をif関数で取り除いた上でVLOOKUP関数を使う必要があります。ありえないとは思いますが1円未満の値については#N/Aが返されます。
VLOOKUP関数用のテーブルをC,D列(C1:D23)に作りましたが実際に運用する際には別のシートでもかまいません。(その方が使いやすいと思います)
まずB列に以下の式を記述します。
=IF(A1>100000,A1*2.2,VLOOKUP(A1,$C$1:$D$23,2,1))
100000円を超える額を整数値にする必要がある場合はA1*2.2の式をROUND関数やINT関数で囲えばOKです。
次にC列に各条件の下限側の価格をD列にその範囲の価格に応じた売価を入れていきます。
行番号 C D
1 1 4980
2 1001 9980
3 2001 12880
4 3001 14880
: : :
: : :
: : :
22 80001 228880
23 90001 248880
たぶん既に回答が出ていると思いますが。
前回のIF文ではネストが多すぎるので、VLOOKUPを使うのがいいでしょう。
後で条件を変えるのにも簡単ですし。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/vlookup.htm#vlo...
VLOOKUPを使うために条件の表を用意します。
ここでは、D1:E23に表を作りました。
D | E | |
---|---|---|
1 | 1 | 4980 |
2 | 1001 | 9980 |
3 | 2001 | 12880 |
4 | 3001 | 14880 |
5 | 4001 | 17880 |
6 | 5001 | 19880 |
7 | 6001 | 22880 |
8 | 7001 | 24880 |
9 | 8001 | 27880 |
10 | 9001 | 29880 |
11 | 10001 | 34880 |
12 | 12001 | 39800 |
13 | 15001 | 44880 |
14 | 18001 | 49880 |
15 | 20001 | 59880 |
16 | 25001 | 74880 |
17 | 30001 | 94880 |
18 | 40001 | 128880 |
19 | 50001 | 148880 |
20 | 60001 | 178880 |
21 | 70001 | 198880 |
22 | 80001 | 228880 |
23 | 90001 | 248880 |
B1の数式を次のようにします。(0と空白の場合、2.2倍になる場合を加えて)
=IF(A1=0,"",IF(A1>100000,A1*2.2,VLOOKUP(A1,D1:E23,2,TRUE)))
コメント(0件)