Formeln in Tabelle vervollständigen

VBA und Makros
Codeschnipsel
Arbeitsblatt
Formeln
Vervollständigung
Zeilen und Spalten
Excel

Ausgangslage - Was tut dieser Code-Schnipsel?

Vielleicht kennen Sie diese Situation auch: Sie haben eine Tabelle und erweitern diese stetig. Nun möchten Sie auch die Formeln automatisch erweitern lassen. Hier ein visualisiertes Beispiel:

  A B C D
 1  Formelspalte Wertespalten Weitere Spalten           
 2  =ZS2*2 1    
 3  =ZS2*2 2    
 4    3    
 5    4    
 6         

Und das Ergebnis nach dem Vervollständigungsmakro sollte so aussehen:

  A B C D
 1  Formelspalte Wertespalten Weitere Spalten           
 2  =ZS2*2 1    
 3  =ZS2*2 2    
 4  =ZS2*2 3    
 5  =ZS2*2 4    
 6         

Für diese Vervollständigungsarbeit finden Sie folgend ein Beispielmakro.

Der Quelltext

Option Explicit
' Original-Quelltext unter: https://www.online-vba.de/formeln-in-tabelle-vervollstaendigen
' Express-Hilfe für VBA unter https://www.online-vba.de/vba-expresshilfe
' Es gelten die Nutzungsbedingungen von Online-VBA.de

Public Sub OVBAde_FormelnInTabelleAutomatischVervollstaendigen()
  Dim z As Long
  Dim s As Long
  Dim lPruefSpalte As Long
    
    lPruefSpalte = 1 'Wenn in dieser Spalte etwas steht wird die Formel vervollständigt
    With ActiveSheet
        For z = .UsedRange.Row To .UsedRange.Row + .UsedRange.Rows.Count - 1
            
            'Die erste Zeile wird als Vorlage verwendet,
            'bei vorhandenen Überschriften in der Tabelle die Zweite (+1)!
            If z > .UsedRange.Row + 1 And Trim(CStr(.Cells(z, lPruefSpalte).Value)) <> "" Then
                For s = .UsedRange.Column To .UsedRange.Column + .UsedRange.Columns.Count - 1
                    
                    'Wenn eine Formel in der Zelle drüber steht und in der aktuellen Zelle nicht,
                    'wird die Formel kopiert
                    If .Cells(z - 1, s).HasFormula = True And .Cells(z, s).HasFormula = False Then
                        .Cells(z, s).FormulaR1C1 = .Cells(z - 1, s).FormulaR1C1
                    End If
                    
                Next s
            End If
            
        Next z
    End With
    
    MsgBox "Fertig!"
End Sub

Anmerkungen und Hinweise

Dieser Codeschnipsel wurde geschrieben von Marc Wershoven im Jahr 2014.
Die Nutzung erfolgt auf eigene Gefahr. Bitte denken Sie immer zuerst an eine ausreichende Datensicherung. Wir können keinen kostenlosen Support anbieten. Es gelten unsere Nutzungs­bedingungen.


So einfach läuft unsere VBA-Expresshilfe ab

1
Senden Sie uns Ihre Office-Datei oder Ihren VBA-Code (gerne anonymisiert) mit einer kurzen Problembeschreibung oder Ihrem Erweiterungswunsch per E-Mail.
2
Wir analysieren Ihr Anliegen schnell und schicken Ihnen umgehend (tagsüber meist innerhalb von 1-2 Stunden) ein Festpreis-Angebot.
3
Nach Ihrer Zustimmung lösen wir Ihr Problem (meist noch am gleichen Tag) oder setzen Ihre Erweiterung zuverlässig um – inklusive verständlicher Dokumentation der durchgeführten Maßnahmen.

Jetzt kontaktieren!







Mit einem * gekennzeichnete Eingabefelder sind Pflichtfelder.
Datenschutzhinweise zum Kontaktformular: Die von Ihnen im Kontaktformular bereitgestellten Daten werden ausschließlich zur Bearbeitung Ihrer Anfrage verwendet und nicht ohne Ihre Zustimmung an Dritte weitergegeben. Ihre Daten werden nur für den Zeitraum gespeichert, der zur Bearbeitung Ihrer Anfrage erforderlich ist. Weitere Hinweise zum Datenschutz finden Sie in unserer Datenschutzerklärung.
Hinweis: Für die vollständige Funktion dieser Website ist JavaScript erforderlich.
Bitte aktivieren Sie JavaScript in Ihrem Browser, um alle Inhalte und interaktiven Funktionen nutzen zu können.