Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeile einfügen u.Formel v.Zelle darüber übernehmen

Forumthread: Zeile einfügen u.Formel v.Zelle darüber übernehmen

Zeile einfügen u.Formel v.Zelle darüber übernehmen
23.03.2008 20:24:26
Karsten

Hallo...
Ich möchte, dass, wenn ich eine Zeile einfüge, automatisch die Formel von der Zelle unmittelbar darüber übernommen wird. Allerdings nur in Spalte A und C.
Wenn mir da jemand helfen könnte - besten Dank.
MfG
Karsten

Anzeige
AW: Zeile einfügen u.Formel v.Zelle darüber überne
23.03.2008 22:08:16
fcs
Hallo Karsten,
wenn du deine Daten einschliesslich der Zeile mit den Spaltentiteln via Menü Daten als Liste festlegts, dann fügt Excel in den Spalten mit Formeln die Formeln automatisch ein, wenn man eine neue Datenzeile ausfüllt.
Alternative: Makro, das bei Eingaben in Spalte B oder auch andere Spalte prüft ob eine neue Zeile angelegt werden soll und dann die Formeln in die Neue Zeile kopiert.
Gruß
Franz

Anzeige
AW: Zeile einfügen u.Formel v.Zelle darüber überne
24.03.2008 10:26:56
Karsten
Hallo Franz,
wo kann man die Daten bei "Daten" als Liste festlegen? Ich finde da irgendwie nichts.
Gruß
Karsten

AW: Zeile einfügen u.Formel v.Zelle darüber überne
24.03.2008 11:28:00
Nepumuk
Hallo Karsten,
Menüleiste - Daten - Liste - Liste erstellen.
Gruß
Nepumuk

AW: Zeile einfügen u.Formel v.Zelle darüber überne
24.03.2008 12:22:45
Karsten
Hallo Nepumuk,
Du, ich finde da wirklich nichts. Unter Daten finde ich nur "Sortieren,Filter,Maske, usw." . Nichts mit Liste.
Meine Version ist 2002. Ist da etwas anders?
Gruß
Karsten

Anzeige
AW: Zeile einfügen u.Formel v.Zelle darüber überne
24.03.2008 13:20:06
Nepumuk
Hallo Karsten,
kann ich nicht sagen, hab hier nur 2000 2003 und 2007 intalliert.
Gruß
Nepumuk

AW: Zeile einfügen u.Formel v.Zelle darüber überne
24.03.2008 13:23:00
Original
Hi,
das gibt es erst ab E 2003, du hast aber angegeben, dass du E 2003 verwendest.
mfg Kurt

AW: Zeile einfügen u.Formel v.Zelle darüber überne
24.03.2008 14:58:00
Karsten
Hallo Kurt,
Stimmt. 202 lässt sich nicht eingeben deshalb 2003. Naja, danke.
Gruß
Karsten

Anzeige
AW: Zeile einfügen u.Formel v.Zelle darüber überne
24.03.2008 20:54:00
fcs
Hallo Karsten,
da deine Excelversion die Listen-Funktion noch nicht unterstützt muss du als Ersatzlösung mit einem Makro arbeiten, dass Eingaben in einer neuen Zeile erkennt und ggf. Formeln nach unten auffüllt.
Nachfolgend meine Lösung. Das Makro muss du im VBA-Editor unter der Tabelle mit der Liste einfügen.
Die Spalten, Zeilen für den Listenbereich muss du im Code ggf. noch anpassen.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Listeneingabe
'bei Eingabe in neuer Zeile werden Formeln kopiert
Dim objZelle As Range, arrFormelSpalten
Dim lngSpalte As Long, intJ As Integer, bolFormel, lngOffset As Long
Const lngSpalte1 As Long = 1 'Erste Spalte der Liste
Const lngSpalteL As Long = 7 'Letzte Spalte der Liste
Const lngZeile1 As Long = 2 '1. Zeile mit Formel
arrFormelSpalten = Array(1, 3) 'Spalten mit Formeln
With Me
For Each objZelle In Target
'Prüfen ob geänderte Zelle(n) unterhalb der letzten Zeile mit Formel
If objZelle.Row > .Cells(.Rows.Count, arrFormelSpalten(0)).End(xlUp).Row _
And objZelle.Row > lngZeile1 _
And objZelle.Column = lngSpalte1 Then
Application.EnableEvents = False
'Formel in Spalten nach unten kopieren
For lngSpalte = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
.Range(.Cells(.Rows.Count, arrFormelSpalten(lngSpalte)).End(xlUp), _
.Cells(objZelle.Row, arrFormelSpalten(lngSpalte))).FillDown
Next
Application.EnableEvents = True
End If
Next objZelle
'Bei Eingaben in letzter Zeile nach rechts nächste Eingabezelle selektieren
If Target.Row = .Cells(.Rows.Count, arrFormelSpalten(0)).End(xlUp).Row _
And Target.Column >= lngSpalte1 _
And Target.Column  lngSpalteL Then
lngSpalte = lngSpalte1 'ab 1. Spalte prüfen
lngOffset = 1 'Nächste Zeile selektieren wenn Eingabe in Letzter Spalte
End If
'Prüfen, ob Spalte Formel enhält
bolFormel = False
For intJ = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
If lngSpalte = arrFormelSpalten(intJ) Then bolFormel = True: Exit For
Next
If bolFormel = False Then
'Zelle selektieren
.Cells(Target.Row + lngOffset, lngSpalte).Select
Exit Do
End If
lngSpalte = lngSpalte + 1
Loop
End If
End With
End Sub


Anzeige
AW: Zeile einfügen u.Formel v.Zelle darüber überne
25.03.2008 02:10:00
Karsten
Hallo Franz,
Danke, das ist ja 'ne ganz schöne lange Lösung. Es gibt trotzdem ein Problem. Wenn ich mittendrin eine neue Zeile einfüge, dann wird obige Formel nicht übertragen. Oben und unten sind aber schon die Formeln.
Vielleicht kannst du da nochmal nachgucken.
Gruß
Karsten

Anzeige
AW: Zeile einfügen u.Formel v.Zelle darüber überne
25.03.2008 08:30:24
fcs
Hallo Karsten,
das Problem erfordert nun mal dass verschiedenen Eventualitäten geprüft werden müssen.
Hier die angepasste Version, die auch beim Einfügen von Leerzeilen die Formeln einfügt wenn Werte eingegeben werden - natürtlich wieder ein bischen länger.
Außerdem eine "Sparversion", die nur auf Eingaben in Spalte B reagiert und in der letzten Zeile nicht die nächste Eingabezelle selektiert.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Listeneingabe bei Eingabe in neuer Zeile werden Formeln kopiert
Dim objZelle As Range, arrFormelSpalten
Dim lngSpalte As Long, intJ As Integer, bolFormel, lngOffset As Long
Const lngSpalte1 As Long = 1 'Erste Spalte der Liste
Const lngSpalteL As Long = 7 'Letzte Spalte der Liste
Const lngZeile1 As Long = 2 '1. Zeile mit Formel
arrFormelSpalten = Array(1, 3) 'Spalten mit Formeln
With Me
For Each objZelle In Target
'Prüfen ob geänderte Zeile(n) Formel enthält
If Not .Cells(objZelle.Row, arrFormelSpalten(0)).HasFormula _
And objZelle.Row >= lngZeile1 _
And objZelle.Column = lngSpalte1 Then
bolFormel = True
Application.EnableEvents = False
'Formel in Spalten kopieren
For lngSpalte = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
Select Case objZelle.Row
Case lngZeile1
'Zeile direkt unter Spaltentitel eingefügt
.Range(.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)), _
.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)).End(xlDown)).FillUp
Case Is = lngSpalte1 _
And Target.Column  lngSpalteL Then
lngSpalte = lngSpalte1 'ab 1. Spalte prüfen
lngOffset = 1 'Nächste Zeile selektieren wenn Eingabe in Letzter Spalte
End If
'Prüfen, ob Spalte Formel enhält
bolFormel = False
For intJ = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
If lngSpalte = arrFormelSpalten(intJ) Then bolFormel = True: Exit For
Next
If bolFormel = False Then
'Zelle selektieren
.Cells(Target.Row + lngOffset, lngSpalte).Select
Exit Do
End If
lngSpalte = lngSpalte + 1
Loop
End If
End With
End Sub
'#### Sparversion #####
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Sparversion, Formeln werden ggf. bei Werteingabe in Spalte B eingefügt
'Listeneingabe bei Eingabe in neuer Zeile werden Formeln kopiert
Dim objZelle As Range, arrFormelSpalten
Dim lngSpalte As Long
Const lngZeile1 As Long = 2 '1. Zeile mit Formel
Const lngSpalteE As Long = 2 'Spalte bei deren Eingabe ggf. Formel kopiert wird
arrFormelSpalten = Array(1, 3) 'Spalten mit Formeln
With Me
For Each objZelle In Target
'Prüfen ob geänderte Zeile(n) Formel enthält
If Not .Cells(objZelle.Row, arrFormelSpalten(0)).HasFormula _
And objZelle.Row >= lngZeile1 _
And objZelle.Column = lngSpalteE Then
Application.EnableEvents = False
'Formel in Spalten kopieren
For lngSpalte = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
Select Case objZelle.Row
Case lngZeile1
'Zeile direkt unter Spaltentitel eingefügt
.Range(.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)), _
.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)).End(xlDown)).FillUp
Case Is 


Anzeige
AW: Zeile einfügen u.Formel v.Zelle darüber überne
25.03.2008 16:14:00
Karsten
Hallo Franz,
Klappt jetzt. Hochachtung vor deinen Excelkentnissen. Geht es auch noch in einem bestimmten Bereich: von z.B. A10-A20. Allerdings haben die Zellen Beschriftungen (A10 als erste_Zelle u. A20 als letzte_Zelle), weil, die sind etwas variabel.
Gruß
Karsten

AW: Zeile einfügen u.Formel v.Zelle darüber überne
25.03.2008 23:33:32
fcs
Hallo Karsten,
hier die Variante, die Formeln in einem bestimmten Zeilenbereich (definiert durch 2 Zellen mit Bereichsnamen) ergänzen.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Listeneingabe bei Eingabe in neuer Zeile werden Formeln kopiert
Dim objZelle As Range, arrFormelSpalten
Dim lngSpalte As Long, intJ As Integer, bolFormel, lngOffset As Long
Const lngSpalte1 As Long = 1 'Erste Spalte der Liste
Const lngSpalteL As Long = 7 'Letzte Spalte der Liste
Dim lngZeile1 As Long '1. Zeile des Formelbereiches
Dim lngZeileL As Long 'letzte Zeile des Formelbereiches
arrFormelSpalten = Array(1, 3) 'Spalten mit Formeln
With Me
lngZeile1 = .Range("erste_Zelle").Row
lngZeileL = .Range("letzte_Zelle").Row
For Each objZelle In Target
'Prüfen ob geänderte Zeile(n) Formel enthält
If Not .Cells(objZelle.Row, arrFormelSpalten(0)).HasFormula _
And objZelle.Row >= lngZeile1 _
And objZelle.Row = lngSpalte1 Then
bolFormel = True
Application.EnableEvents = False
'Formel in Spalten kopieren
For lngSpalte = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
Select Case objZelle.Row
Case lngZeile1
'Zeile direkt unter Spaltentitel eingefügt
.Range(.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)), _
.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)).End(xlDown)).FillUp
Case Is  lngSpalteL Then
lngSpalte = lngSpalte1 'ab 1. Spalte prüfen
lngOffset = 1 'Nächste Zeile selektieren wenn Eingabe in Letzter Spalte
End If
'Prüfen, ob Spalte Formel enhält
bolFormel = False
For intJ = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
If lngSpalte = arrFormelSpalten(intJ) Then bolFormel = True: Exit For
Next
If bolFormel = False Then
'Zelle selektieren
.Cells(Target.Row + lngOffset, lngSpalte).Select
Exit Do
End If
lngSpalte = lngSpalte + 1
Loop
End If
End With
End Sub


Anzeige
AW: Zeile einfügen u.Formel v.Zelle darüber überne
26.03.2008 14:45:46
Karsten
Hallo Franz,
Besten Dank, ich denke mal es wird klappen, hab aber im Moment etwas wenig Zeit für diese Sache.
Gruß
Karsten

AW: Zeile einfügen u.Formel v.Zelle darüber überne
29.03.2008 09:23:00
Karsten
Hallo Franz,
Es gibt doch noch ein Problem. Läßt sich der Befehl auch nur ausführen, wenn ich eine Zeile einfüge? Wenn ich meine Makros starte, läuft er auch mit ab und bringt dann alles durcheinander.
Gruß
Karsten
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeile einfügen und Formeln übernehmen in Excel


Schritt-für-Schritt-Anleitung

  1. Daten als Liste festlegen:

    • In Excel 2003 und neuer kannst du deine Daten als Liste festlegen, indem du auf Daten > Liste > Liste erstellen gehst. Bei Excel 2002 ist diese Funktion nicht verfügbar.
  2. Zeile einfügen:

    • Um eine neue Zeile einzufügen, klicke mit der rechten Maustaste auf die Zeilennummer, unter der du eine neue Zeile einfügen möchtest, und wähle Zeile einfügen.
  3. Formeln übernehmen:

    • Wenn du die Funktion "Formel automatisch fortführen" nutzen möchtest, stelle sicher, dass die Zellen, die die Formeln enthalten, in den Spalten A und C vorhanden sind. Excel wird die Formeln automatisch in die neuen Zeilen übernehmen, falls sie in der Liste definiert sind.
  4. VBA-Makro verwenden:

    • Wenn du eine Excel-Version hast, die die Listenfunktion nicht unterstützt, kannst du ein VBA-Makro verwenden, um die Formeln automatisch zu übernehmen. Füge den folgenden Code in den VBA-Editor unter der entsprechenden Tabelle ein:
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    'Listeneingabe bei Eingabe in neuer Zeile werden Formeln kopiert
    Dim objZelle As Range, arrFormelSpalten
    Dim lngSpalte As Long, lngOffset As Long
    Const lngSpalte1 As Long = 1 'Erste Spalte der Liste
    arrFormelSpalten = Array(1, 3) 'Spalten mit Formeln
    
    With Me
       For Each objZelle In Target
           If objZelle.Row > 2 And objZelle.Column = lngSpalte1 Then
               Application.EnableEvents = False
               For lngSpalte = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
                   .Cells(objZelle.Row, arrFormelSpalten(lngSpalte)).Formula = .Cells(objZelle.Row - 1, arrFormelSpalten(lngSpalte)).Formula
               Next
               Application.EnableEvents = True
           End If
       Next objZelle
    End With
    End Sub

Häufige Fehler und Lösungen

  • Problem: Die Formel wird nicht automatisch übernommen.
    Lösung: Stelle sicher, dass du die Zeile unterhalb der letzten Zeile mit einer Formel einfügst und dass die Liste korrekt definiert ist.

  • Problem: Das Makro funktioniert nicht wie gewünscht.
    Lösung: Überprüfe, ob das Makro korrekt im VBA-Editor eingefügt wurde und dass alle Zellreferenzen stimmen. Achte darauf, dass Application.EnableEvents = True am Ende des Makros steht, um die Ereignisse wieder zu aktivieren.


Alternative Methoden

  • Manuelles Kopieren: Wenn es nur wenige Zeilen sind, kannst du auch die Formel manuell kopieren und in die neue Zeile einfügen.
  • Verwendung von Excel-Formeln: Nutze die Funktion =OBEN() oder =WENNFEHLER() in den neuen Zellen, um auf die Werte in den Zellen darüber zuzugreifen.

Praktische Beispiele

  • Beispiel 1: Wenn du eine neue Zeile zwischen A10 und A20 einfügst, stelle sicher, dass die Formeln in A10 und A20 korrekt sind, damit Excel die Formeln automatisch in der neuen Zeile einfügt.

  • Beispiel 2: Verwende das oben gezeigte Makro, um Formeln in den Spalten A und C zu übernehmen, unabhängig davon, wo du die neue Zeile einfügst.


Tipps für Profis

  • VBA-Optimierung: Achte darauf, dass du dein Makro so optimierst, dass es nur auf spezifische Spalten und Zeilen reagiert, um die Leistung zu verbessern.
  • Verwendung von Bereichsnamen: Definiere Bereichsnamen für kritische Zellen, um deinen Code klarer und leichter wartbar zu machen.

FAQ: Häufige Fragen

1. Kann ich die Formel nur für bestimmte Spalten übernehmen?
Ja, du kannst im VBA-Makro nur die gewünschten Spalten angeben, indem du das arrFormelSpalten-Array anpasst.

2. Funktioniert das auch in Excel 2016?
Ja, die beschriebenen Methoden und die VBA-Lösungen funktionieren auch in Excel 2016 und neueren Versionen. Stelle sicher, dass du die Funktionen und den Code korrekt anwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige