我在 K 列下有日期和时间,在 M 列下有与这些天相对应的某些值(数字)。
我有一个代码,如果这些值大于 1 并且它们在 P 列中有文本“等待”,则可以更改这些值的颜色。
我不知道要做的是,将以下条件添加到此代码中:
1.我想确定这些天是否属于星期日。
2.如果是,那么我想检查星期日的时间(假设日期/时间格式是“15/1/2016 17:00”,那么星期日结束的剩余时间是 0.3 天)从 M 列中的数字中减去,如果数字仍然 >1,则应以“红色”突出显示。
3.减法不应影响或出现在当前工作表中。
我尝试了下面的代码,但我不确定我在哪里犯了错误,因为没有结果。
Sub Datefilter()
Dim r As Long
Dim m As Long
On Error GoTo ExitHere:
m = Range("M:P").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Application.ScreenUpdating = False
For r = 1 To m
remainingDay = 0
If Weekday(Range("K" & r)) = 1 Then
remainingDay = Round((24 - Format(TimeValue(Range("K" & r)), "h")) / 24, 1)
End If
If Range("P" & r) = "*waiting*" Then
If Range("M" & r) - remainingDay >= 1 Then
Range("M" & r).Cells.Font.ColorIndex = 3
Else
Range("M" & r).Cells.Font.ColorIndex = 0
End If
End If
Next r
ExitHere:
Application.ScreenUpdating = True
End Sub
最佳答案
我觉得使用 Excel 的内置函数和一些辅助列会更容易。
(1) 使用WEEKDAY()
函数获取星期几。然后使用简单的比较来检查是否是星期日。
(2) 日期存储为自 1900 年 1 月 0 日以来过期的时间量,部分日期作为分数。因此,要返回时间,只需从日期中取出日期的舍入位即可:=A1-ROUNDDOWN(A1,0)
(3) 使用条件格式检查单元格是否< 1,然后将其变为红色。
如果您想要示例的屏幕截图,请告诉我。
关于vba - 根据 VBA 中的日期值识别日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41757406/