明けましておめでとうございます。
新年早々質問なのですが(^^;、次の場合の式はどのようにすればよろしいでしょうか。
セル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つまでですので、どうしてもすべてを満たす数式を作ることができません。
上記の例題につきまして、詳しい方にアドバイスいただければ幸いです。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんばんは!
本来のデータや以上未満の境が、不規則であれば
=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() 関数も使えます。
こんばんは!
アドバイスありがとうございました。
他の方からのアドバイスをすべて試してみました。
その中で、今の自分でも理解できるこちらの数式を選択させていただきました。
めちゃめちゃわかりやすい!(笑)
それにしてもいろんな方法があるんですね~。
今回、いくつかの関数を知るきっかけとなり、
大変感謝しています。
ありがとうございました。
また何かありましたらよろしくお願い致します。
No.4
- 回答日時:
同じ回答ではつまらないので、マクロを使った方法を紹介します。
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です。
アドバイスありがとうございました。
他の方からのアドバイスをすべて試してみました。
その中で、今の自分でも理解できる数式を選択しました。
マクロを触るのは初めてで、コピペしてみましたが
ちょっとうまくいきませんでした(^^;
うまくパーセンテージが反映されなかったり。
自分の力が至りませんでした。すみません。
でも、マクロを触る機会ができて本当によかったです。おもしろそうですよね。
大変感謝しています。
ありがとうございました。
No.3
- 回答日時:
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は今回のように、検索する値がデータ範囲の値に厳密に一致しない場合に使います。
アドバイスありがとうございました。
他の方からのアドバイスをすべて試してみました。
その中で、今の自分でも理解できる数式を選択しました(ちょっとこの方法は自分には難しかったです^^;)。
それにしてもいろんな方法があるんですね~。
今回、いくつかの関数を知るきっかけとなり、
大変感謝しています。
ありがとうございました。
No.1
- 回答日時:
こんにちは
以下の手順でいかがでしょうか?
1.A10:B19に以下を入力
010.0%
100020.0%
200022.5%
300023.0%
400024.0%
500026.0%
600027.0%
700027.5%
800028.0%
900030.0%
2.セルB2に
=A1*VLOOKUP(A1,A10:B19,2)
と入力
参考URL:http://www2.odn.ne.jp/excel/
アドバイスありがとうございました。
他の方からのアドバイスをすべて試してみました。
その中で、今の自分でも理解できる数式を選択しました。
それにしてもいろんな方法があるんですね~。
今回、いくつかの関数を知るきっかけとなり、
大変感謝しています。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/10/25 17:10
- Excel(エクセル) 一つのセルに複数の関数を入力する方法 4 2022/09/30 13:42
- Visual Basic(VBA) if関数とifs関数は組み合わせることはできますか。 セルA1が「A」のとき「向日葵」と表示。 セル 4 2023/02/02 20:48
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 17:07
- Excel(エクセル) エクセルの昇順での数値入力のミスの見つけ方を教えてください。 4 2022/06/26 20:41
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) エクセルのことで教えてください。 A1セルに、 別シートのA1セルが1のときは「A」、2のときは「B 4 2023/02/24 23:08
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
- Excel(エクセル) IFERROR、SMALL関数について 2 2022/08/22 23:40
- Excel(エクセル) xlDownの使い分けについての質問です vbaでxlDownを使って一覧近い空白までのセルをコピー 3 2022/08/04 12:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報