- ベストアンサー
エクセルのIF関数について
明けましておめでとうございます。 新年早々質問なのですが(^^;、次の場合の式はどのようにすればよろしいでしょうか。 セルA1が10000円以上の場合、A1*30% セルA1が10000円未満9000円以上の場合、A1*30% セルA1が9000円未満8000円以上の場合、A1*28% セルA1が8000円未満7000円以上の場合、A1*27.5% セルA1が7000円未満6000円以上の場合、A1*27% セルA1が6000円未満5000円以上の場合、A1*26% セルA1が5000円未満4000円以上の場合、A1*24% セルA1が4000円未満3000円以上の場合、A1*23% セルA1が3000円未満2000円以上の場合、A1*22.5% セルA1が2000円未満1000円以上の場合、A1*20% セルA1が1000円未満0円以上の場合、A1*10% ~%は例題として適当にランダムに設定しました。 IF関数の中にIF・・・とやっていくとネストは7つまでですので、どうしてもすべてを満たす数式を作ることができません。 上記の例題につきまして、詳しい方にアドバイスいただければ幸いです。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 本来のデータや以上未満の境が、不規則であれば =A1*LOOKUP(A1,{0,1000,2000,3000,4000,5000,6000,7000,8000,9000,10000;10,20,22.5,23,24,26,27,27.5,28,30,30})% 書式としては =A1*LOOKUP(A1,{値1,値2,・・・,値n;返値1,返値2,・・・,返値n}) 値部分は ○○以上~××未満 の ○○ の値を昇順に記載 返値部分は、それに対応した結果(今回の場合~%の数値部分) 値配列と返値配列との区切りは「;」セミコロン 例記のように区切り桁が 000円単位であれば 検索値A1を1000で割ることで =A1*LOOKUP(A1/1000,{0,1,2,3,4,5,6,7,8,9,10;10,20,22.5,23,24,26,27,27.5,28,30,30})% 多少短くなります 完全に1000円単位(一定増値)であれば CHOOSE() 関数も使えます。
その他の回答 (3)
- arata
- ベストアンサー率49% (139/279)
同じ回答ではつまらないので、マクロを使った方法を紹介します。 1.メニューの[ツール]-[マクロ]-[マクロ...]を選択 (または、ALT+F8) 2.マクロ名に適当な名前をつける。 ここでは、Keisanとします。 3.マクロの保存先を「作業中のブック」にします。 4.作成ボタンを押します。 5.Microsoft Visual Basic と言うウィンドウが開きますので、右側のウィンドウ内の Sub Keisan() End Sub となっているのを Function Keisan( vRange As Variant ) As Variant End Function に修正します。 6.あとは、下記のように、Function ~ End Function の間を修正してください。(コピー&ペーストでOKです。) Function Keisan(vRange As Variant) As Variant If IsNumeric(vRange) = False Or IsNull(vRange) Or IsEmpty(vRange) Then Keisan = "" Exit Function End If Select Case vRange Case Is >= 10000 Keisan = vRange * 0.3 Case Is >= 9000 Keisan = vRange * 0.3 Case Is >= 8000 Keisan = vRange * 0.28 Case Is >= 7000 Keisan = vRange * 0.275 Case Is >= 6000 Keisan = vRange * 0.27 Case Is >= 5000 Keisan = vRange * 0.26 Case Is >= 4000 Keisan = vRange * 0.24 Case Is >= 3000 Keisan = vRange * 0.23 Case Is >= 2000 Keisan = vRange * 0.225 Case Is >= 1000 Keisan = vRange * 0.2 Case Else Keisan = vRange * 0.1 End Select End Function 使い方は、Excelの関数と同じです。 =Keisan(A1) のようにセルに入力すれば、OKです。
お礼
アドバイスありがとうございました。 他の方からのアドバイスをすべて試してみました。 その中で、今の自分でも理解できる数式を選択しました。 マクロを触るのは初めてで、コピペしてみましたが ちょっとうまくいきませんでした(^^; うまくパーセンテージが反映されなかったり。 自分の力が至りませんでした。すみません。 でも、マクロを触る機会ができて本当によかったです。おもしろそうですよね。 大変感謝しています。 ありがとうございました。
- ARC
- ベストアンサー率46% (643/1383)
VLookupを使うのがいいかな。 まず、適当な位置に金額とパーセンテージの表を作ります。 例えば、C列,D列に以下のような表を作成します 0 10% 1000 20% 3000 22.5% : : 10000 30% で、B1のセルに =A1 * VLOOKUP(A1,$C$1:$D$12,2,TRUE) などと記述すればOKだと思います。 尚、「2」はデータ範囲(C列,D列)の2列目(つまりD列)の値を取ってくる事を示します。 Trueは今回のように、検索する値がデータ範囲の値に厳密に一致しない場合に使います。
お礼
アドバイスありがとうございました。 他の方からのアドバイスをすべて試してみました。 その中で、今の自分でも理解できる数式を選択しました(ちょっとこの方法は自分には難しかったです^^;)。 それにしてもいろんな方法があるんですね~。 今回、いくつかの関数を知るきっかけとなり、 大変感謝しています。 ありがとうございました。
- kbonb
- ベストアンサー率51% (254/492)
こんにちは 以下の手順でいかがでしょうか? 1.A10:B19に以下を入力 0 10.0% 1000 20.0% 2000 22.5% 3000 23.0% 4000 24.0% 5000 26.0% 6000 27.0% 7000 27.5% 8000 28.0% 9000 30.0% 2.セルB2に =A1*VLOOKUP(A1,A10:B19,2) と入力
- 参考URL:
- http://www2.odn.ne.jp/excel/
お礼
アドバイスありがとうございました。 他の方からのアドバイスをすべて試してみました。 その中で、今の自分でも理解できる数式を選択しました。 それにしてもいろんな方法があるんですね~。 今回、いくつかの関数を知るきっかけとなり、 大変感謝しています。 ありがとうございました。
お礼
こんばんは! アドバイスありがとうございました。 他の方からのアドバイスをすべて試してみました。 その中で、今の自分でも理解できるこちらの数式を選択させていただきました。 めちゃめちゃわかりやすい!(笑) それにしてもいろんな方法があるんですね~。 今回、いくつかの関数を知るきっかけとなり、 大変感謝しています。 ありがとうございました。 また何かありましたらよろしくお願い致します。