这里的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
我得到的错误是“无法获取工作表函数类的工作日属性”
答案 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执行的结果。