• 締切済み

IF関数を短くする方法(階層が深すぎる)

A列に任意の数値が入っています。 そのときB列に、 「A1<999」なら「A1×5.0」して四捨五入 「1000<A1<2000」なら「A1×4.0」して四捨五入 「2000<A1<3000」なら「A1×3.0」して四捨五入 「3000<A1<4000」なら「A1×2.0」して四捨五入 「4000<A1<5000」なら「A1×1.5」して四捨五入 「5000<A1<6000」なら「A1×1.0」して四捨五入 とした計算式を入れたいとおもってます。 IF関数にするとものすごく長くなってしまいます。 短くしたり、他に適応する関数はあるでしょうか? よろしくお願いいたします。

みんなの回答

noname#204879
noname#204879
回答No.5

何処か空いている範囲に   0  5 1000  4 2000  3 3000  2 4000 1.5 5000  1 6000 0.5 のデータを入力して、当該範囲に(例えば) table という名前を付けておけば =ROUND(A1*VLOOKUP(A1,table,2),0) でよろしいかと。 ただし、6000以上の場合は 0.5 としておきました。また、小数点以下を四捨五入としておきました。

noname#262398
noname#262398
回答No.4

 C列  D列 1  0   5 2 1001  4 3 5001  3 4 10001 2 5 50001 1.5 こんな対応表を作って B1 =ROUND(LOOKUP(A1,$C$1:$C$5,$D$1:$D$5)*A1,0)

noname#22222
noname#22222
回答No.3

0~999=5 1000~1999=4 2000~2999=3 3000~3999=2 4000~4999=1.5 5000~5999=1.0 ならば =CHOOSE(A1/1000+1,5,4,3,2,1.5,1) この値を A1に×ということなので =A1*CHOOSE(A1/1000+1,5,4,3,2,1.5,1) さらに、四捨五入するということなので =ROUND(A1*CHOOSE(A1/1000+1,5,4,3,2,1.5,1),0)

isana21
質問者

補足

ありがとうございます。 データを確認したところ、 ~1000 1001~5000 5001~10000 100001~50000 … と刻んでいきます。 IF関数だと7階層ぐらいまでしかできないので、 どうしようか?と思っていたところです。 参考にさせていただきます。

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.2

こんにちは 6000以上の入力があった場合でも A1×1.0 でいいのでしょうか? 四捨五入は何処の位まで求めるのでしょうか? =ROUND(CHOOSE(MIN(INT(A1/1000)+1,6),A1*5,A1*4,A1*3,A1*2,A1*1.5,A1),0) こんな感じで、後はご自身で調整できますでしょうか?

isana21
質問者

補足

ありがとうございます。 データを確認したところ、 ~1000 1001~5000 5001~10000 100001~50000 … と刻んでいきます。 掛け算の値は例として出したので実際は規則性の無い数字になります。参考にさせていただきます。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Vlookup 等が使えますが・・・。 >「A1<999」なら「A1×5.0」して四捨五入 >「1000<A1<2000」なら「A1×4.0」して四捨五入 1000とか2000はどう扱われるのでしょうか? 通常は<= や <= などで繋がないと除外されてしまいますが?

関連するQ&A