从date格式VBA减去整数
以下是我开发的代码。 目标是从数据中减去“1”或“2”,这取决于是星期六还是星期天。 列3包含短date格式的date,列5包含相同的date,但转换为“dddd”格式。
错误发生在该行的for循环中
if cells(i,5).Value = "Sat" Then
这里有趣的是,代码运行没有“错误”说,它只是跳过if语句完成,在该行。
Sub DataChange() Dim i Dim n n = Cells(Rows.Count, 3).End(xlUp).Row For i = 4 to n If Cells(i,5).Value = "Sat" Then Cells(i,3).Value = Cells(i,3).Value - 1 End If If Cells(i,5).Value = "Sun" Then Cells(i,3).Value = Cells(i,3).Value - 2 End If Next i End Sub
只需将其全部replace为:
For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row With Cells(i, 3) .Value = .Value - IIf(Weekday(.Value, vbSaturday) < 3, Weekday(.Value, vbSaturday), 0) End With Next
Weekday()
方法根据您提供的开始date返回一个表示星期几的整数。 Weekday(.Value, vbSaturday)
周六将返回1
,周日则返回2
。 结合立即If IIf()
我们可以检查返回的值是否小于3(如1或2),如果是,从列C中的date减去
第5列包含相同的date,但转换为“dddd”格式
“dddd”暴露“ddd”暴露的“星期六”而不是“星期六”。
仍然尝试更改单元格(i,5)。值单元格(i,5).Text:
If Cells(i,5).Text = "Sat" Then ....
要么
If Cells(i,5).Text = "Saturday" Then ....