各位大大 好
先請教如下撰寫code較好,卡關很久...也想不到好的解法
if is weekend then (下面該寫什麼code才可以滿足我的需求)
==>目前已判斷12/30為周末、5/14為周末
==>需要在12/30、5/14下方插入一列 預設為同日期,另一欄預設值為MS
現有數值
12月30日 NS
12月30日 DS
5月9日 DS
5月9日 MS
5月9日 NS
5月10日 DS
5月10日 MS
5月10日 NS
5月11日 DS
5月11日 MS
5月11日 NS
5月12日 DS
5月12日 MS
5月12日 NS
5月13日 DS
5月13日 MS
5月13日 NS
5月14日 DS
5月14日 NS
變更後數值
12月30日 NS
12月30日 DS
12月30日 MS
5月9日 DS
5月9日 MS
5月9日 NS
5月10日 DS
5月10日 MS
5月10日 NS
5月11日 DS
5月11日 MS
5月11日 NS
5月12日 DS
5月12日 MS
5月12日 NS
5月13日 DS
5月13日 MS
5月13日 NS
5月14日 DS
5月14日 NS
5月14日 MS
目前卡在這邊code不知道要寫什麼
v = Application.CountIf(Range("P:P"), "<>")
For zz = 2 To v
checkDate = Cells(zz, 16).Value
Dim isWeekend As Boolean
Set currentRow = Cells(zz, 16)
isWeekend = (Weekday(checkDate) = 1 Or Weekday(checkDate) = 7) ' 判?日期是否?星期日或星期六
If isWeekend Then
Else
MsgBox "日期 " & checkDate & " 不是周末。"
End If
Range("R" & zz) = Format(Range("P" & zz).Value, "mm/dd") & " " & Range("Q" & zz).Value
Next zz
十分感謝!!!
小揮 wrote:
各位大大 好先請教如...(恕刪)
Try it.
Sub test()
Dim isWeekend As Boolean
Dim zz As Integer
zz = 2
While Cells(zz, 16).Value <> ""
checkDate = Cells(zz, 16).Value
isWeekend = (Weekday(checkDate) = 1 Or Weekday(checkDate) = 7)
If isWeekend Then
If checkDate <> Cells(zz + 1, 16).Value Or Cells(zz + 1, 16).Value = "" Then
Rows(zz + 1 & ":" & zz + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(zz + 1, 16).Value = Cells(zz, 16).Value
Cells(zz + 1, 17).Value = "MS"
Range("R" & zz) = Format(Range("P" & zz).Value, "mm/dd") & " " & Range("Q" & zz).Value
zz = zz + 1
End If
Else
MsgBox "日期 " & checkDate & " 不是周末。"
End If
Range("R" & zz) = Format(Range("P" & zz).Value, "mm/dd") & " " & Range("Q" & zz).Value
zz = zz + 1
Wend
End Sub
小小尉 wrote:
Try it.Sub...(恕刪)
謝謝大大提供code
我自己也是用錄製巨集插入下一列+for迴圈
後來也是有達成目的
只是code比較不同 (當初就是沒有zz=zz+1,回傳的全部變成範例上的12/30)
我是先去判定特定欄位有幾筆資料(P欄)
全部弄完後發現會有幾天日期重複,我再刪除重複項得到我要的
v = Application.CountIf(Range("P:P"), "<>")
For zz = 1 To v + 3
checkDate = Cells(zz, 16).Value
Dim isWeekend As Boolean
isWeekend = (Weekday(checkDate) = 1 Or Weekday(checkDate) = 7) ' 判?日期是否?星期日或星期六
If isWeekend Then
Cells(zz + 1, 16).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(zz + 1, 17).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(zz + 1, 16) = Cells(zz, 16)
Cells(zz + 1, 17) = "MS"
zz = zz + 1
Else
MsgBox checkDate & "不是周末"
End If
Next zz
XX = Application.CountIf(Range("P:P"), "<>")
For zz = 1 To XX
Range("R" & zz) = Format(Range("P" & zz).Value, "m/dd") & " " & Range("Q" & zz).Value
Next zz