• ベストアンサー

エクセルでB1の値が特定範囲の数値である場合に決められた乗算をする

エクセルの質問です。 マクロが分かりませんので、関数で教えてください。 B列の値が7から9の場合はA列に0.5を掛けて、C列にかえす。 B列の値が9から12の場合はA列に0.6を掛けて、C列にかえす。 下記、左からA列B列C列とし、右のC列に答えをかえします。 1000,12,C(600) 2000,10,C(1200) 1000,9,C(600) 1500,8,C(750) 1000,7,C(500) この場合、私の求める計算方法でいくと、C列の値は上から順に 600,1200,600,750,500 となります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! すでに回答は出ていますが・・・ 他の方法の一例です。 今回の質問の場合、区分けが少ないのでIF関数のネストで対応できると思います。 しかし区分けが増えたときにあまりにネストが多いと長い数式になりますので ↓の画像のように表で掛け率を分けて B列の値で掛け率を返す方法です。 質問では「9」の場合どちらに入るのか分からないでので とりあえず、表では 9 は掛け率0.6としています。 C1セルに =IF(COUNTBLANK(A1:B1)>0,"",A1*INDEX($H$2:$H$5,MATCH(B1,$E$2:$E$5,1))) という数式を入れて、オートフィルで下へコピーすると 画像のような感じの表になります。 (表として必要なのはE列でOKなのですが、分かりやすくするために、 F・G列も表示してあります。) そして、区分けは整数だけなのか?小数点以下も含むのか?によって 表の数値の並びも少し変わってきます。 今回は「以上」・「より大きい」・「以下」・「未満」 の区別がはっきりしないので とりあえず、B列は整数だと仮定して 勝手に画像のような区分け方法にしてしまいました。 以上、参考になれば幸いですが、 他によい方法があれば読み流してくださいね。m(__)m

utamaro-j
質問者

お礼

すばらしいです。大変スッキリしました。 スクリーンショットまで用意していただいて恐縮です。 業務上、掛け率が変動する事もあるので、これは便利です! ありがとう御座いました。

その他の回答 (2)

  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.2

> この場合、私の求める計算方法でいくと、C列の値は上から順に 600,1200,600,750,500 となります。 だとすると、 > B列の値が7から9の場合はA列に0.5を掛けて、C列にかえす。 > B列の値が9から12の場合はA列に0.6を掛けて、C列にかえす。 は、 B列の値が7以上、9未満の場合はA列に0.5を掛けて、C列にかえす。 B列の値が9以上、12以下の場合はA列に0.6を掛けて、C列にかえす。 ということになりますので、No.1の方の数式を次のように変更すれば、ご希望の値を得ることができます。 =IF(AND(B1>=7,B1<9),A1*0.5,IF(AND(B1>=9,B1<=12),A1*0.6,""))

utamaro-j
質問者

お礼

説明文がややこしくて申し訳ありせんでした。 >= イコールを並べて使うと、以上、以下、となる事を 今更ですが理解しました。ありがとう御座います。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

>B列の値が7から9の場合はA列に0.5を掛けて、C列にかえす。 >B列の値が9から12の場合はA列に0.6を掛けて、C列にかえす。 式で書けば、下記のようなことだろうが、Bが9のときはどっちなんだ? これでは9が両方に入る。 =IF(AND(B1>=7,B1<=9),A1*0.5,IF(AND(B1>=9,B1<=12),A1*0.6,""))

utamaro-j
質問者

お礼

早速の回答ありがとう御座いました。 大変勉強になりました。

関連するQ&A