|
いつもお世話になっております。 集計をしていまして、翌月1日まで集計したいのですが、1日が無い場合は月末まででよく、 うまくいきません。 愚直に1日があるなしで分岐でしょうか? ご教授頂けましたら、幸いです。
dim 1日のある場合[]="17/11/29","17/11/30","17/11/31","17/12/01","17/12/02" dim 1日のない場合[]="17/11/29","17/11/30","17/11/31","17/12/02","17/12/03"
GETTIME() GETTIME(-1, val(G_TIME_YY4 + G_TIME_MM2 + "01") + 100 + (G_TIME_MM = 12) * 8800) 今月 = "/" + G_TIME_MM2 + "/"
i = 0 WHILE pos(今月,1日のある場合[i]) > 0 i=i+1 wend msgbox(1日のある場合[i])
i = 0 WHILE pos(今月,1日のない場合[i]) > 0 i=i+1 wend msgbox(1日のない場合[i])
|
No.4687 2017/11/09(Thu) 22:23:47
|
☆ Re: 翌月1日まで集計したい / しゅん |
|
|
// こんな感じでしょうか dim 1日のある場合[]="17/10/29","17/11/29","17/11/30","17/12/01","17/12/02" dim 1日のない場合[]="17/10/29","17/11/29","17/11/30","17/12/02","17/12/03"
GETTIME() 翌月1日 = GETTIME(0, val(G_TIME_YY4 + G_TIME_MM2 + "01") + 100 + (G_TIME_MM = 12) * 8800)
i = 0 WHILE GETTIME(0, "20"+1日のある場合[i]) <= 翌月1日 i=i+1 wend msgbox(1日のある場合[i])
i = 0 WHILE GETTIME(0, "20"+1日のない場合[i]) <= 翌月1日 i=i+1 wend msgbox(1日のない場合[i])
// 当月も見るなら GETTIME() 当月1日 = GETTIME(0, G_TIME_YY4 + G_TIME_MM2 + "01")
FOR i = 0 TO RESIZE(1日のある場合) 対象日 = GETTIME(0, "20"+1日のある場合[i]) IFB 対象日 < 当月1日 THEN MSGBOX("skip " + 1日のある場合[i]) ELSEIF 対象日 > 翌月1日 THEN MSGBOX("処理終了 " + 1日のある場合[i]) BREAK ELSE MSGBOX("処理対象 " + 1日のある場合[i]) ENDIF NEXT
|
No.4690 2017/11/10(Fri) 12:08:02
|
|
☆ Re: 翌月1日まで集計したい / しろまさ |
|
|
// 正規表現にて(集計の意味を取り違えてるかもしれない。。) dim ar1[]="17/11/29","17/11/30","17/11/31","17/12/01","17/12/02" dim ar0[]="17/11/29","17/11/30","17/11/31","17/12/02","17/12/03"
GETTIME(); Dim YMto = G_TIME_YY2+"\/"+G_TIME_MM2+"\/" GETTIME(31,G_TIME_YY4+G_TIME_MM2+"01"); Dim YMnx = G_TIME_YY2+"\/"+G_TIME_MM2+"\/"
Dim ptn = "(" + YMto + ".*?(" + YMnx + "01 )?)" + YMnx + ".*" Dim sa1, st1 = Join(ar1); st1 = regReplace(st1, ptn, "$1"); sa1 = Split(st1," ",TRUE) Dim sa0, st0 = Join(ar0); st0 = regReplace(st0, ptn, "$1"); sa0 = Split(st0," ",TRUE)
MsgBox("ar1=" + Length(sa1) + " " + st1 + "<#CR>ar0=" + Length(sa0) + " " + st0)
Function regReplace(a_text, a_ptn, a_after) Dim reg = CreateOLEObj("VBScript.Regexp"); reg.Global = TRUE; reg.Multiline = TRUE; reg.pattern = a_ptn; Result = reg.Replace(a_text, a_after) FEnd
|
No.4692 2017/11/10(Fri) 13:31:54
|
|
☆ Re: 翌月1日まで集計したい / sen |
|
|
うまくできました。
しゅん様、バッチリです。 GETTIMEは、何度教えて頂いても、こんがらがります。
しろまさ様、 これはこれで、貴重なものをおしえて頂いたようです。 なにか、仕事に使えそうなのを探してみます。
ありがとうございました。
|
No.4697 2017/11/12(Sun) 23:03:03
|
|