最初の正解者に200ポイント!エクセルの数式を教えて下さい。価格を入力すると売価が反映される。A列(A1)に①¥1~¥1000のいずれかの数字を入れるとB列(B1)に¥4980②1001~2000→9980③2001~3000→12880④3001~4000→14880⑤4001~5000→17880⑥5001~6000→19880⑦6001~7000→22880⑧7001~8000→24880⑨8001~9000→27880⑩9001~10000→29880⑪10001~12000→34880⑫12001~15000→39880⑬15001~18000→44880⑭18001~20000→49880⑮20001~25000→59880⑯25001~30000→74880⑰30001~40000→94880⑱40001~50000→128880⑲50001~60000→148880⑳60001~70000→178880 21.70001~80000→198880 22.80001~90000→228880 23.90001~100000→248880 24.100001~→価格の2,2倍

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/10/28 03:18:16
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント200pt

この場合、複数の条件があり、それらをまとめると 非常にわかりにくくなりますので、メンテナンスしやすさを考えて数式を入れたほうがいいです。

まず 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)とします。

id:hirovlsi No.2

回答回数66ベストアンサー獲得回数8

ポイント35pt

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文などの組み合わせでも実現できるかとは思いますが、

恐らく数式が長くなってしまいエクセルがエラーを表示するかと思います。

また上記の方法の方が見た目も分かりやすく修正も簡単だと思います。

id:Mook No.3

回答回数1314ベストアンサー獲得回数393

ポイント35pt

最初の正解者ではないと思いますが、先の質問にコメントした 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列にコピーします。

id:apr-25 No.4

回答回数200ベストアンサー獲得回数3

ポイント35pt

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

id:SALINGER No.5

回答回数3454ベストアンサー獲得回数969

ポイント35pt

たぶん既に回答が出ていると思いますが。

前回の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)))

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません