gpt4 book ai didi

vba - Excel VBA : AutoFill Multiple Cells with Formulas

转载 作者:行者123 更新时间:2023-12-01 17:37:27 24 4
gpt4 key购买 nike

我有从不同文件中收集的大量数据。在本主要工作簿中,我为每个单元格设置了不同类型的公式。范围 A 到 F 是收集其他文件的数据的位置。在 H 到 AC 范围内,我有一个公式,每次输入新数据时,我都会通过手动向下拖动来自动填充公式。下面的代码是我使用的,它只有 6 个我想要自动填充的不同公式。

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

我把代码弄乱了很多。我什至不知道事情是否应该是这样的。谢谢您的帮助!

最佳答案

您正在寻找的方法是FillDown。另一种不必每次都费尽心思的方法是将公式存储在字符串数组中。将它们结合起来为您提供了一种强大的方法来输入大量公式。代码如下:

Sub FillDown()

Dim strFormulas(1 To 3) As Variant

With ThisWorkbook.Sheets("Sheet1")
strFormulas(1) = "=SUM(A2:B2)"
strFormulas(2) = "=PRODUCT(A2:B2)"
strFormulas(3) = "=A2/B2"

.Range("C2:E2").Formula = strFormulas
.Range("C2:E11").FillDown
End With

End Sub

屏幕截图:

行结果:.Range("C2:E2").Formula = strFormulas:

enter image description here

截至行的结果:.Range("C2:E11").FillDown:

enter image description here

当然,您可以通过将最后一行存储到变量中并将其转换为诸如 .Range("C2:E"& LRow).FillDown 之类的内容来使其动态化,就像您所做的那样做到了。

希望这有帮助!

关于vba - Excel VBA : AutoFill Multiple Cells with Formulas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com