我有大量从不同文件收集的数据。在这本主要工作手册中,我为每个单元格提供了不同类型的公式。范围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