从日期格式VBA中减去整数

时间:2016-02-09 10:44:19

标签: excel vba function date subtraction

以下是我开发的代码。目标是减去" 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

2 个答案:

答案 0 :(得分:1)

只需将其全部替换为:

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()方法根据您提供的开始日期返回表示星期几的整数。 Weekday(.Value, vbSaturday)将在星期六返回1,并在星期日返回2。结合立即If IIf(),我们可以检查返回的值是否小于3(例如1或2),如果是,则从C列中的日期中减去该值

答案 1 :(得分:0)

  

第5列包含相同的日期,但转换为“dddd”格式

“dddd”暴露“星期六”而不是“星期六”暴露于“ddd”。

仍然尝试更改Cell(i,5).Value with Cells(i,5).Text:

defaultToken

If Cells(i,5).Text = "Sat" Then ....