Excel-VBA: AutoFill-Funktion Mehrere Zellen mit Formeln

Ich habe große Menge an Daten, die ich gesammelt aus verschiedenen Dateien. In diesem Haupt-Arbeitsmappe habe ich verschiedene Arten von Formeln für alle Zellen. Im Bereich von A bis F ist, wo die Daten aus anderen Dateien gesammelt. Im Bereich H zu AC, ich habe die Formel, die ich automatisch füllen, indem Sie Sie nach unten manuell jedes mal, wenn neue Daten eingegeben werden. Der code unten ist, was ich benutzt habe und es nur 6 verschiedene Formeln, die möchte ich automatisch füllen.

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

Jedoch in der Haupt-Arbeitsmappe vorhanden ist, wie 15 verschiedene Formeln, die ich will, dass es automatisch füllen jedes mal, wenn neue Daten eingibt. Ich habe mehrere main-Arbeitsmappe, und die Formel ist nicht konstant. Einfügen der code oben für jede Formel ist ein Schmerz. Gibt es eine Möglichkeit, dass kann das Programm, ziehen Sie es automatisch runter? In der main-Arbeitsmappe, ich habe die Formeln geschrieben schon. Ich habe versucht, viele verschiedene codes, um es automatisch füllen, aber so weit oben ist die einzige, die arbeiten, ohne mir Fehler. Ich habe versucht, über so etwas wie dieses oder ähnliche version, aber keiner funktioniert:

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

Ich Durcheinander herum mit dem code so viel. Ich weiß gar nicht, ob es wohl so zu sein. Danke für die Hilfe!

+1: Sehr schöne Frage, besser als die meisten gestellten Fragen vor kurzem in diesem tag. 🙂 Schreiben Sie eine kurze Antwort.
Ich würde empfehlen, drehen Sie Ihre Reihe von Daten in eine Tabelle oder listobject, dann wird es automatisch tun dies für Sie. Wenn Sie jemals eine weitere Spalte hinzufügen, die Sie nicht haben, um update-code in excel mache alles für Sie aus einer Füllung nach unten, wenn das hinzufügen von Zeilen, nach unten ausfüllen beim hinzufügen einer neuen berechneten Spalten, keine Notwendigkeit für VBA. Dies gibt Ihnen auch der große Vorteil der Verwendung von Formeln anstatt zu sagen: =B2 können Sie =@ColumnHeader und es wird mit dem Wert in dieser Spalte in dieser Zeile, macht Update-Formeln viel einfacher, vor allem, wenn Sie so viele Formeln zur Instandhaltung

InformationsquelleAutor user3233328 | 2014-02-28

Schreibe einen Kommentar