簡體   English   中英

Excel VBA:使用公式自動填充多個單元格

[英]Excel VBA: AutoFill Multiple Cells with Formulas

我從不同的文件中收集了大量數據。 在這個主要工作簿中,我為每個單元格提供了不同類型的公式。 在范圍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

在此輸入圖像描述

行結果: .Range("C2:E11").FillDown

在此輸入圖像描述

當然,你可以通過將最后一行存儲到一個變量並將其轉換為類似.Range("C2:E" & LRow).FillDown ,就像你所做的那樣,使它變得動態。

希望這可以幫助!

根據我的評論,這是獲得你想要的東西的一種方法:

首先選擇您范圍內的任何單元格,然后按Ctrl + T.

這會彈出這個:

在此輸入圖像描述

確保你的表格文本在哪里是正確的,然后點擊確定你現在將擁有:

在此輸入圖像描述

現在,如果在D中添加列標題,它將自動添加到表中一直到最后一行:

在此輸入圖像描述

現在如果您在此列中輸入公式:

在此輸入圖像描述

輸入后,公式將自動填充到最后一行:

在此輸入圖像描述

現在,如果您在表格下的下一行添加新行:

在此輸入圖像描述

輸入后,它將調整為表格的寬度,所有帶公式的列也將被添加:

在此輸入圖像描述

希望這能解決你的問題!

暫無
暫無

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

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