vba - 使用VBA将公式插入具有可变行号的单元格

标签 vba excel excel-formula

我已设置电子表格,以便在 Z 列中输入文本时,调用 AutoFill 宏。

我需要用公式自动填充 AAAB 列,直到 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/

相关文章:

Excel,在一整列中将一个完整范围附加到另一个范围的末尾

excel - 如何根据第一行和第一列中的值对一系列矩阵求和 - Excel VBA

excel - 将公式应用于excel中的所有其他列

vba - 无法将同一项目两次添加到 CustomProperties 中吗?

vba - 我应该在退出子过程之前重新打开.CutCopyMode吗?

excel - 在 VBA 中输入公式数组的问题

excel - 使用 AGGREGATE 函数提取数组中的最大值会引发错误

Excel VBA 在 Firefox/Chrome 的新选项卡中打开网站

vba - Excel:使用 VBA 获取单元格的背景颜色

excel - VBA - 选择方法失败