Autofill in VBA
Dieser Artikel zeigt, wie Sie AutoFill in VBA verwenden.
AutoFill ist ein großartiges Werkzeug in Excel, wenn Daten sich wiederholen oder sequenziell sind (wie Wochentage, Daten, Monate des Jahres usw.). Normalerweise füllen wir die ersten paar Zellen mit den erforderlichen Daten und verwenden dann AutoFill, um die erforderlichen Daten in einen ausgewählten Bereich zu kopieren.
Dies alles kann mit einem VBA-Makro erfolgen.
AutoFill mit aufsteigenden Zahlen
Erstens können wir in unserem Code zwei Range-Variablen deklarieren.
Selection1 ist der Bereich mit den automatisch auszufüllenden Daten - zum Beispiel 1 und 2.
Auswahl2 ist die gesamte Bereich, der automatisch ausgefüllt werden soll, umfasst den ersten Bereich sowie die Leerzeichen, die automatisch ausgefüllt werden sollen.
Anschließend verwenden wir die AutoFill-Methode, um den zweiten Auswahlbereich zu füllen.
123456789101112131415 | Öffentlicher Unterordner MyAutoFill()'von easyexcel.net'Bereichsvariablen deklarierenDim-Auswahl1 Als BereichDim-Auswahl2 als Bereich'Bereichsvariablen setzen = ihre jeweiligen BereicheSet selection1 = Sheet1.Range("A1:A2")Set selection2 = Sheet1.Range("A1:A12")'AutoFillselection1.AutoFill-Ziel:=selection2End Sub |
Wir können dann das Makro zum Autofill-Bereich (A1: A12) ausführen.
Wenn wir die AutoFill-Methode verwenden, können wir den gewünschten Autofill-Typ auswählen. Im obigen Beispiel haben wir den Autofill-Typ nicht angegeben, was bedeutet, dass der Standardtyp verwendet wurde - in diesem Fall werden die Zahlen in jeder Zeile um 1 erhöht.
AutoFill mit Monaten
Das Makro zum automatischen Ausfüllen von Monaten ist mit einer wichtigen Ausnahme fast identisch mit dem Makro, das zum Erhöhen von Zahlen verwendet wird.
1234567891011 | Öffentliche Unter AutoFillMonths()'von easyexcel.net'Bereichsvariablen deklarierenDim-Auswahl1 Als BereichDim-Auswahl2 als Bereich'Bereichsvariablen setzen = ihre jeweiligen BereicheSet selection1 = Sheet1.Range("A1:A2")Set selection2 = Sheet1.Range("A1:A12")'Monate automatisch ausfüllenAutoFill-Ziel:=selection2, Typ:=xlFillMonthsEnd Sub |
Wenn wir den Autofill-Typ eingeben, erhalten wir eine Reihe von Excel-Konstanten zur Auswahl. Wenn wir dies weglassen, bestimmt Excel die Art der auszufüllenden Daten aus den angegebenen Originaldaten.
Excel kann jedoch Standardreihen wie Monate, Wochentage und inkrementelle Zahlen erfassen, ohne das Type-Argument verwenden zu müssen.
AutoFill mit xlFillCopy
Wenn wir ein AutoFill-Makro verwenden möchten, um die Informationen in neue Zellen zu kopieren, können wir die xlFillCopy-Konstante verwenden.
1234567 | Öffentliche Unter AutoFillCopy()Dim Selection1 As RangeDim Selection2 As RangeSet Selection1 = Sheet1.Range("A1:A1")Set Selection2 = Sheet1.Range("A1:A12")Selection1.AutoFill Destination:=Selection2, Type:=xlFillCopyEnd Sub |
Das Ausführen dieses Makros würde die Daten in Range("A1") nach unten in Range("A1:A12") kopieren, anstatt die Zellen automatisch mit nachfolgenden Monaten ab "Jan" zu füllen.
AutoFill mit xlFlashFill
Wenn wir in Excel Text in Spalten konvertieren müssen, können wir entweder die Option Text in Spalten oder eine Option namens Flash Fill verwenden. Dies ist in VBA äußerst nützlich.
Nehmen Sie zum Beispiel folgende Daten:
Wir können den Nachnamen „Tolley“ in Zelle B2 eingeben und dann ein Makro verwenden, um den Rest der Daten zu flashen.
1234567 | Sub FlashFill()Dim Selection1 As RangeDim Selection2 As RangeSet Selection1 = Range("B2:B2")Set Selection2 = Range("B2:B15")Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFillEnd Sub |
Wir können dies dann in den Spalten C, D und E wiederholen, um die restlichen Daten zu erhalten.
1234567891011 | Set Selection1 = Range("C2:C2")Set Selection2 = Range("C2:C15")Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFillSet Selection1 = Range("D2:D2")Set Selection2 = Range("D2:D15")Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFillSet Selection1 = Range("E2:E2")Set Selection2 = Range("E2:E15")Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFill |
Jede Spalte wird dann basierend auf dem Wert in Zeile 2 mit den entsprechenden Daten gefüllt.