
はじめまして。
エクセル2016(Mac)環境で関数を作ることを考えているのですが教えてください。
例えば、ある数Aがありまして15000で割り算をした数△(小数点切り捨て)に15000をかけた数値をAから引き算をします。(この計算を以下★と記載致します)
この数字をBとします。
その後、Bが15000以上であれば★を繰り返し、15000未満であるならば、Bに0.5をかけた数値を計算します(この数字をCとします)
こういった計算をした結果、最終的に
6000*△の総数+C
という数値を算出するシートを作りたいのですが、ループを用いた場合どのように組み立てるべきか教えてください。
★を一度だけ行うという計算までは、エクセルで作ることができましたが、
繰り返し行うという動作ができない状況です。
ちなみに、一度だけ行うという計算式は以下の通り作ってみました。これすら根本的に違ったらすみません。。。
=IF(Aが記載されているセル(以下♪)>=15000, ♪-15000*INT(♪/15000)+5000*INT(♪/15000), ♪*0.5)
動きとして期待しているのは以下のような計算結果です。
<<例>>
A=55000である場合、
55000は15000以上であるため、
55000-15000*3+5000*3=25000
25000は15000以上であるため、
25000-15000*1+5000*1=15000
15000は15000以上であるため、
15000-15000*1+5000*1=5000
5000は15000未満のため、
5000*0.5=2500
以上から
5000*(3+1+1)+5000*0.5=25000+2500=30000
ご回答の程をよろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
「関数を作る」とのことですが、「ユーザ定義関数を作る」という理解で良いですか?
であれば、こんな感じでしょうか。
ただ、最初の質問文では、「55000→3000」になっているのに対して、No.2さんへのお礼には「55000→32500」となっています。下記のユーザ定義関数はNo.2さんへのお礼に沿って実装しています。
Function myFuntion(ByVal a As Variant) As Variant
Dim 商の総和 As Long
Dim 商 As Long
Dim 余り As Long
Do
商 = Int(a / 15000)
余り = a Mod 15000
a = 余り + 5000 * 商
商の総和 = 商の総和 + 商
Loop Until a < 15000
myFuntion = 6000 * 商の総和 + a * 0.5
End Function
No.2
- 回答日時:
疑問1
>例えば、ある数Aがありまして15000で割り算をした数△(小数点切り捨て)に15000をかけた数値をAから引き算をします。(この計算を以下★と記載致します)
は<<例>>のどの部分に当たるのでしょうか?
疑問2
>55000-15000*3+5000*3=25000
が一番近いとは思うのですが 5000*3はどこから出てきたのでしょうか?
疑問3
>25000+2500=30000
??
推察1
=INT(55000/(15000-5000))*5000+MOD(55000,(15000-5000))*0.5
でしょうか?
疑問4
>=MOD(Aのあるセル, 15000)+5000*INT(Aのあるセル/12000)
AのあるセルがA1セルとして
B1セルに
=IF(OR(A1="",A1<12000),"",MOD(A1,15000)+5000*INT(A1/12000))
右へオートフィル
それからが意味不明です
ご返信ありがとうございます。
色々説明不足で申し訳ございません。
>疑問2
>55000-15000*3+5000*3=25000
>が一番近いとは思うのですが 5000*3はどこから出てきたのでしょうか?
→15000で割り算をした商を5000でかけるという意味でした。
剰余+5000*商の値(Bとここでは呼びます)が15000を超えなくなるまで、
5000*INT(B/15000)+MOD(B, 15000)*5000
という計算を行い、15000未満になったら
その数値に0.5をかけるという意味でした。
なので、例えば55000を例に出しますと、、、
-----
55000=15000*3+10000
→10000+5000*3=10000+15000=25000
→25000>15000なので、
→25000=15000*1+10000となるので、
→10000+5000*1=15000
→15000>=15000なので、
→15000*1+5000*1=5000
→5000<15000なので、
→5000*0.5=2500・・・(**)
最終的に割り切れた数(商)の総和x6000+(**)を行いたいです。
つまり、、、
6000x(3+1+1)+2500=30000+2500=32500
という数値を求められる計算をエクセルで行いたいと思っております。
わかりにくい質問で申し訳ございません。
ご教示の程をよろしくお願いいたします。
No.1
- 回答日時:
説明が、な~~~~~んかおかしいんだけど…。
まあいいか。
・・・本題・・・
要点だけ。
Aを15000で割ったときの商の小数点以下を切り捨てる
INT(A/15000)
Aを15000で割ったときの余りを求める
MOD(A,15000)
あとは好きにしてください。
(多分、MOD関数の存在を知らないだけなんだろうと思うんだ)
ご返信ありがとうございます。
おっしゃる通りMOD関数とINT関数ですね。
MOD関数がわからなかったので勉強になります。
このMOD関数とINT関数を使った数式、
=MOD(Aのあるセル, 15000)+5000*INT(Aのあるセル/12000)
これが12000未満になるまで繰り返し、
最終的に12000未満になった数値に0.52をかけた値と、
上記の関数で今まで計算した結果の総和を
足し算した結果を返すという処理を行いたいです。
こちらについてご教示いただけたらありがたいです。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数式の計算結果により表示され...
-
AかBに入力があった時Cに反映、...
-
TEXTCALCの使い方
-
エクセルで、時間の計算をした...
-
ヘッダー
-
エクセルでの時間計算(2時間30...
-
関数が“揮発性”か“不揮発性”か...
-
エクセルで同じ計算式を入れて...
-
IF関数で、時間を条件にしたい...
-
Excelの文字入力にタイムラグが...
-
エクセルの使い方 1日=7時間45...
-
Excel 関数? 文字列に...
-
多項式の計算
-
エクセルでDeleteキーを...
-
Calculateイベントでセルを指定...
-
EXCELの関数に関する質問です
-
小数点第1位が0のときROUNDUP...
-
エクセルの表の左下に再計算と...
-
excelで時間の引き算でマイナス...
-
エクセル・計算式をテキストデ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
AかBに入力があった時Cに反映、...
-
ヘッダー
-
数式の計算結果により表示され...
-
Excel 関数? 文字列に...
-
エクセルの使い方 1日=7時間45...
-
エクセルで、時間の計算をした...
-
エクセル 1万時間を越える際の...
-
IF関数で、時間を条件にしたい...
-
EXCELの関数に関する質問です
-
エクセル・計算式をテキストデ...
-
Excelの文字入力にタイムラグが...
-
エクセルでDeleteキーを...
-
IF関数で出した数値をSUM関数で...
-
エクセルでの時間計算(2時間30...
-
TEXTCALCの使い方
-
エクセル 月数を0.5ヶ月単位で...
-
エクセルで数値を50単位で切...
-
【エクセル】あるセルのみ自動...
-
Excelの計算式内の文字列の一括...
-
Excel(エクセル)でフィルター...
おすすめ情報