[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一定期間内の計算方法』(tada)
お世話になります。
6/1から8/31までと、9/1から翌年5/31までの掛け率違いを完了日で判断して自動で計算してほしいのです。
現在は期間に関係なく一律での計算で処理しています。
Private Sub TextBox9_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Val(TextBox10.Text) = 0 Then
TextBox10.Text = Round(Val(TextBox9.Text) * 0.7, 0)
End If
End Sub
この掛け率 "0.7"が 期間内は"0.8"に変更されます。
"完了日"は、TextBox3に入力されますので、その日付で判断してほしいです。
よろしくお願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
どっちが「期間内」なのか分からないですけど、
こんな感じじゃないですか?
>TextBox10.Text = Round(Val(TextBox9.Text) * 0.7, 0) ↓ TextBox10.Text = Round(Val(TextBox9.Text) * IIf(Abs(Month(CDate(TextBox3.Text)) - 7) <= 1, 0.7, 0.8), 0)
(半平太) 2018/06/05(火) 11:57
期間内の表記がわかりづらく申し訳ないです。期間内 ⇒ 6/1から8/31 です。
教えていただいた表記で試しました、期間が逆になってはいますが、ちゃんと計算してくれます。
期間の反映はどこを変更したらよいのかと、期間の途中から掛け率を変更する場合 〇月〇日から△月×日までとなった場合(例えば、6/10〜8/20までとなった場合)、日付で期間を設定する方法はないでしょうか。TextBox9の入力は "m/d"で入力しております。
よろしくお願いいたします。
(tada) 2018/06/05(火) 13:28
>〇月〇日から△月×日までとなった場合(例えば、6/10〜8/20までとなった場合)、 >日付で期間を設定する方法はないでしょうか。 >TextBox9の入力は "m/d"で入力しております。
年の情報が含まれてないのですけど、 「6/10〜8/20」が 「12/10〜2/20」と言った"年度またぎ" になる事もあるんですか?
(半平太) 2018/06/05(火) 13:56
(tada) 2018/06/05(火) 14:26
Private Sub TextBox9_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Const term As String = "6/10〜8/20" '期間を文字で指定
Dim DTs Dim DTd(1 To 2) As Date Dim DTx3 As Date
DTs = Split(term, "〜") '2つの日付文字に分解 DTd(1) = CDate(DTs(0)) '日付に変換 DTd(2) = CDate(DTs(1)) '日付に変換’
If DTd(2) < DTd(1) Then '年越しアジャスト DTd(2) = DateAdd("yyyy", 1, DTd(2)) End If
DTx3 = CDate(TextBox3.Text) '日付に変換
If DTd(1) <= DTx3 And DTx3 <= DTd(2) Then TextBox10.Text = Round(Val(TextBox9.Text) * 0.8, 0) Else TextBox10.Text = Round(Val(TextBox9.Text) * 0.7, 0) End If
End Sub
(半平太) 2018/06/05(火) 14:59
期間指定が「年末またぎ」になるとトラブル可能性が大です。
(半平太) 2018/06/05(火) 15:01
大変助かりました。
これからもよろしくお願いします。
(tada) 2018/06/05(火) 15:16
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.