如果当前日期是假日,如何获得上一个日期

时间:2016-04-13 08:57:44

标签: excel excel-vba vba

这里的VB新手,我陷入了这种情况。

我有一个列中有日期。

A
1/31/2016
1/31/2016
1/31/2016
1/31/2016

现在在B栏中,如果A栏中提到的日期是周末,或者如果A栏中提到的日期是工作日,那么我希望获得上一个工作日期。所以输出就像。

A          B
1/31/2016  1/29/2016
1/31/2016  1/29/2016
1/31/2016  1/29/2016
1/31/2016  1/29/2016

我目前正在使用此代码。但我得到错误。请让我知道如何达到所需的输出。

Sub Work_day()

Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction

For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
Sheets("Sheet1").Cells(i, "B").Value = wf.WorkDay(Range("A:A"), -1)
Next i

End Sub

我得到的错误是“无法获取工作表函数类的工作日属性”

1 个答案:

答案 0 :(得分:1)

左侧只能捕获一个值,而表达式的右侧试图给出 A:A

的整个范围的结果

代码中的小修正给出了Datevalue整数值中函数返回的前一个/当前工作日:
    Sheets("Sheet1").Cells(i, "B").Value = wf.WorkDay(Range("A" & i), -1)

可以使用excel单元格中的以下公式将其进一步转换为日期格式化值。

=TEXT(MONTH(B2)&"/"&DAY(B2)&"/"&YEAR(B2),"mm/dd/yyyy")
其中范围 B:B 是VB执行的结果。