下面是我开发的代码。目标是从数据中减去"1“或"2”,这取决于分别是星期六还是星期日。列3包含短日期格式的日期,第5列包含相同的日期,但转换为"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发布于 2016-02-09 10:51:27
代之以:
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
NextWeekday()方法根据所提供的开始日期返回一个整数,表示一周中的某一天。Weekday(.Value, vbSaturday)周六将返回1,周日将返回2。结合即时If IIf(),我们可以检查返回的值是否小于3(例如1或2),如果是,则从C列的日期减去该值。
https://stackoverflow.com/questions/35289945
复制相似问题