我试图在自动填充列的VBA宏中使用WORKDAY函数。我环顾四周,尝试了一些变化,结果喜忧参半,没有一个完全符合我的需要。
我需要代码来确定单元格(第I列)是否为空,如果是,则根据单元格中的日期(列H)确定上一个工作日。我到目前为止的代码是:
Dim rng As range
Set rng = range("I3", Cells(Rows.Count, "I").End(xlUp))
For Each cell In rng
'
If cell.Value = "" Then
cell.Value = "=WORKDAY(""H3"",-1)"
End If
Next
End Sub
感谢您的帮助!
答案 0 :(得分:1)
为了将来参考,宏录制器非常擅长为这类东西提供参考代码。你可能想要这样的东西:
Dim rng As range
Set rng = range("I3", Cells(Rows.Count, "I").End(xlUp))
rng.cells(1,1).Formula = "=IF(H3="""","""",WORKDAY(H3,-1))"
rng.cells(1,1).AutoFill Destination:=Range("J2:J6"), Type:=xlFillDefault
这样做就像你将公式(在常规Excel中)拖到rng中的所有单元格一样
答案 1 :(得分:0)
您将cell.Value = "=WORKDAY(""H3"",-1)"
更改为cell.Formula= "=WORKDAY(""H3"",-1)"
或使用:cell.Value = WorksheetFunction.WorkDay(Range("H3").Value, -1)
答案 2 :(得分:0)
如果您只需要值而不是单元格中的公式,则可以使用:
cell.Value = Application.WorksheetFunction.Workday(Range("H3"),-1)
...并循环遍历您需要放置值的单元格。
如果你想要公式:
cell.Formula = "=WORKDAY(""H3"",-1)"
...再次,遍历您需要的单元格。
这些假设您的函数在工作表上正常工作。