从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 ....