我已设置电子表格,以便在 Z
列中输入文本时,调用 AutoFill
宏。
我需要用公式自动填充 AA
和 AB
列,直到 Z
列中的最后一行文本。我正在使用 .AutoFill
:
'Range("AA3:AB3").AutoFill Destination:=Range("AA3:AB" & lastRow), Type:=xlFillValues
AA3
起始公式为:=IF(AC3="",IF(Y3="","",AB2),AC3)
AB3
起始公式为:=IF(AD3="",IF(AA3="","",WORKDAY(AA3,(Y3/8))),AD3)
这工作正常,但有时手动输入单元格值会带走原始公式,然后弄乱其余单元格的自动填充。因此,我取消了自动填充功能,并使用 ActiveCell.Row
添加了具有可变行号的设置公式。
这就是我现在拥有的:
Sub AutoFill()
Application.EnableEvents = False
lastRow = Range("Z900").End(xlUp).Row
Range("AA" & (ActiveCell.Row)).Formula = "=IF(AC" & ActiveCell.Row & "="", IF(Y" & ActiveCell.Row & "="","",AB" & ActiveCell.Row - 1 & "),AC" & ActiveCell.Row & ")"
Range("AB" & (ActiveCell.Row)).Formula = "=IF(AD" & ActiveCell.Row & "="",IF(AA" & ActiveCell.Row & "="","",WORKDAY(AA" & ActiveCell.Row & ", (Y" & ActiveCell.Row & "/8))),AD" & ActiveCell.Row & ")"
Application.EnableEvents = True
End Sub
现在我收到运行时错误,并且第一个 "Range("AA"..."
突出显示。我做错了什么?
我使用的是 Excel 2010。
最佳答案
您可以将其简化为
Range("AA3:AA" & lastRow).Formula = "=IF(AC3="""",IF(Y3="""","""",AB2),AC3)"
Range("AB3:AB" & lastRow).Formula = "=IF(AD3="""",IF(AA3="""","""",WORKDAY(AA3,(Y3/8))),AD3)"
没有$
的行号将自动递增。
关于vba - 使用VBA将公式插入具有可变行号的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419014/