簡體   English   中英

使用VBA將公式插入具有可變行號的單元格中

[英]Using VBA to insert formula into cell with variable row numbers

我已經設置好電子表格,以便在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)"

沒有$的行號將自動遞增。

所有帶有空格""引用均更改為"""" 報價內的報價。 這修復了運行時錯誤,以允許公式起作用。

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 & ")"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM