我有大量從不同文件收集的數據。在這本主要工作手冊中,我爲每個單元格提供了不同類型的公式。範圍A到F是收集其他文件的數據的地方。在範圍H到AC中,我有每次輸入新數據時都會手動將其自動填充的公式。下面的代碼是我使用的,它只有6個不同的公式,我想自動填充。Excel VBA:使用公式自動填充多個單元格
Application.ScreenUpdating = False
lastRow = Range("B" & Rows.Count).End(xlUp).Row
Range("D2").Formula = "=$L$1/$L$2"
Range("D2").AutoFill Destination:=Range("D2:D" & lastRow)
Range("E2").Formula = "=$B2/2116"
Range("E2").AutoFill Destination:=Range("E2:E" & lastRow)
Range("F2").Formula = "=$D$2+(3*SQRT(($D$2*(1-$D$2))/2116))"
Range("F2").AutoFill Destination:=Range("F2:F" & lastRow)
Range("G2").Formula = "=$D$2-(3*SQRT(($D$2*(1-$D$2))/2116))"
Range("G2").AutoFill Destination:=Range("G2:G" & lastRow)
Range("H2").Formula = "=IF($E2>=$F2,$E2,NA())"
Range("H2").AutoFill Destination:=Range("H2:H" & lastRow)
Range("I2").Formula = "=IF($E2<=$G2,$E2,NA())"
Range("I2").AutoFill Destination:=Range("I2:I" & lastRow)
ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True
然而,在主簿沒有像我希望它自動填充每一個新的數據輸入時間15個不同的公式。我有多個主要工作簿,並且公式不是恆定的。爲每個公式插入上面的代碼是一件痛苦的事情。有沒有一種方法可以讓程序自動拖拽它?在主要的工作簿中,我已經寫出了公式。我嘗試了許多不同的代碼來使它自動填充,但到目前爲止,上面的代碼是唯一沒有給我錯誤的工作。我試圖用這樣的或類似的版本,這一個,但沒有工作:
With wbList.Sheets("Attribute - 10 mil stop")
lastRow = Worksheets(ActiveSheet.Name).Range("B2").Rows.Count
'Worksheets(ActiveSheet.Name).Range(Selection, Selection.End(xlDown)).Select
Worksheets(ActiveSheet.Name).Range("D2:I2").Select
Selection.AutoFill Destination:=Range("D2:I" & Range("B2" & Rows.Count).End(xlDown).Row)
End With
我的代碼混亂周圍這麼多。我甚至不知道是否應該這樣。感謝您的幫助!
+1:*非常好的問題,比這個標籤最近問的問題要好。 :)寫一個簡短的答案。 – Manhattan
我建議將您的數據範圍轉換爲表或listobject,然後它會自動爲您做這個。如果您添加了另一列,您不必更新代碼,那麼在添加行時,excel將爲您填寫所有內容,在添加新計算列時填充,無需VBA。這也爲您提供了使用公式的巨大優勢,而不是說'= B2',您可以使用'= @ ColumnHeader',它將使用該行中該列的值,使更新公式變得更加容易,尤其是當您有這麼多公式維護 – user2140261