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 |
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.
Ergebnisse statt Aufwand & Arbeit?
Wir liefern Ergebnisse - Schicken Sie uns kurz Ihre Datei und Ihre Wünsche; wir integrieren den notwendigen Code professionell, beheben ggf. vorhandene Fehler, machen optional ein Code-Review, liefern bei Bedarf Performance-Optimierungen & setzen gewünschte Erweiterungen effizient für Sie um (und das zum Festpreis nach kurzer Sichtung).
Express-Service beauftragen
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
Das könnte Sie auch interessieren:
Kleine Änderungen erledigt die VBA-Expresshilfe zügig – ohne Großprojekt. Wir unterstützen Sie mit einem VBA-Entwickler für Düsseldorf – Festpreise und direkter Ansprechpartner.
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.
