[英]Using VBA to insert formula into cell with variable row numbers
我已經設置好電子表格,以便在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)"
沒有$
的行號將自動遞增。
所有帶有空格""
引用均更改為""""
。 報價內的報價。 這修復了運行時錯誤,以允許公式起作用。
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.