Formeln in Tabelle vervollständigen
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 |
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 |
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 Nutzungsbedingungen.