Startseite Inhaltsverzeichnis Nutzungsbedingungen Datenschutz Impressum Weitere Informationen

CODE-SCHNIPSEL

Formeln automatisch in Tabelle vervollständigen

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

Ausgangslage ... Was tut der Codeschnipsel?

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.

VBAVBA Codeschnipsel
XLSQuelltext zur Verwendung mit Microsoft® Excel®

Der Quelltext ...

Option Explicit
' ****************************************************************
' Autor/en und Original-Quelltext unter:
' https://www.online-vba.de/vba_formelnvervoll.php
' Verwendung der Quelltexte auf eigene Gefahr!
' Es gelten die Nutzungsbedingungen von https://www.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.
Es gelten die Nutzungsbedingungen von Online-VBA.de.
TOTOP
ANZEIGE