Wie erhält man immer den Wert aus der Zelle darüber, wenn man eine Zeile in Excel einfügt oder löscht?
In Excel ist das Referenzieren des Werts der direkt darüberliegenden Zelle eine häufige Anforderung, um laufende Summen zu erstellen, monatliche Vergleiche durchzuführen oder einfach die Datenkonsistenz aufrechtzuerhalten, während sich Ihr Arbeitsblatt weiterentwickelt. Normalerweise können Sie die Zelle darüber mit einer einfachen Formel wie =D5
referenzieren, aber diese Lösung hat ihre Grenzen: Wenn Sie Zeilen einfügen oder löschen, wird Ihre Formel möglicherweise nicht weiterhin die neue „darüberliegende“ Zelle referenzieren, wie Sie es erwarten. Wie unten veranschaulicht, kann das Einfügen einer neuen Zeile darüber die Kontinuität brechen oder die Referenz mit der ursprünglichen Zelle verknüpft bleiben, anstatt sich auf die neue Position anzupassen.
Um dieses Problem zu lösen und sicherzustellen, dass Ihre Formel immer den Wert aus der unmittelbar darüberliegenden Zelle abruft, selbst nachdem Sie Zeilen eingefügt oder gelöscht haben, gibt es mehrere Ansätze, die Sie verwenden können. Jede Methode bringt unterschiedliche Kompromisse mit sich, abhängig von der Komplexität Ihres Arbeitsblatts, ob Sie ein automatisches Update oder eine manuelle Formel wünschen und ob Sie sich mit der Verwendung von VBA/Makros wohl fühlen.
Inhaltsverzeichnis:
- Den Wert aus der Zelle darüber immer erhalten, wenn Zeilen mit einer Formel eingefügt oder gelöscht werden
- Zellwert automatisch aus der Zelle darüber aktualisieren mit einem ereignisgesteuerten VBA-Makro (immer dynamisch)
Den Wert aus der Zelle darüber immer erhalten, wenn Zeilen mit einer Formel eingefügt oder gelöscht werden
Um dieses Problem auf einfache Weise zu lösen, die keine Makros oder komplexe Einrichtung erfordert, können Sie eine Formel verwenden, die dynamisch auf die Zelle darüber verweist, egal wie sich Ihre Zeilen ändern. Die Formel verwendet die Funktionen INDIREKT und ADRESSE von Excel, sodass die Referenzierung immer die Zelle „überwacht“, auch wenn die Zeilen aufgrund von Einfügungen oder Löschungen verschoben werden. Dies macht sie besonders geeignet für Arbeitsblätter, in denen Sie die Zeilenstruktur häufig ändern, wie zum Beispiel das Hinzufügen neuer Daten am Anfang oder in der Mitte einer Liste.
Geben Sie die folgende Formel direkt in die Zelle ein, in der Sie immer den Wert aus der Zelle darüber erhalten möchten (zum Beispiel in Zelle B6, wenn Sie B5 referenzieren möchten):
=INDIRECT(ADDRESS(ROW()-1,COLUMN()))
Drücken Sie die Eingabetaste, nachdem Sie die Formel eingegeben haben. Die aktuelle Zelle zeigt sofort den Wert der unmittelbar darüberliegenden Zelle an, wie unten gezeigt:
Wenn Sie nun eine neue Zeile über der Zelle mit der Referenzformel einfügen, wird die Formel neu berechnet und zeigt immer den Wert aus der neuen Zelle darüber an. Auf diese Weise sind Ihre Formeln immer auf dem neuesten Stand, unabhängig von Zeileneinfügungen oder -löschungen. Sehen Sie sich den folgenden Screenshot zur Referenz an:
Parametererklärung und Tipps:
- Diese Formel zieht den Wert der direkt darüber liegenden Zelle – so wird bei Verwendung in B6 immer B5 widergespiegelt, auch wenn Zeilen darüber eingefügt oder gelöscht werden.
- Wenn Sie diese Formel in der ersten Zeile Ihrer Daten verwenden (z. B. A1), versucht sie möglicherweise, Daten aus einer nicht vorhandenen Zeile zu ziehen und gibt einen
#BEZUG!
-Fehler zurück. Sie können dies vermeiden, indem Sie Fehlerbehandlung hinzufügen, zum Beispiel mit=WENN(ZEILE()=1;"";INDIREKT(ADRESSE(ZEILE()-1;SPALTE())))
um in der ersten Zeile eine leere Zelle anzuzeigen. - Beachten Sie, dass INDIREKT eine volatile Funktion ist, daher kann übermäßige Verwendung in extrem großen Arbeitsblättern die Berechnungen verlangsamen.
- Die Verwendung dieser Formel funktioniert gut, wenn Sie eine strikte Beziehung zum Zeilenort beibehalten möchten, egal wie sich Ihre Blattstruktur ändert.
Problemlösung und Zusammenfassungsvorschläge:
Wenn Ihre Formel nach dem Einfügen oder Löschen von Zeilen nicht wie erwartet aktualisiert wird, überprüfen Sie, ob sie in der vorgesehenen Zelle eingegeben wurde. Stellen Sie außerdem sicher, dass Sie keine absoluten Zellreferenzen (wie $A$1) verwenden, die statisch sind. Wenn Sie #REF!
Fehler in der ersten Zeile feststellen, sollten Sie eine bedingte Formel wie zuvor erwähnt verwenden. Für fortgeschrittene Automatisierung oder wenn Sie den Wert kopieren und nicht nur referenzieren möchten, sehen Sie die Lösung mit dem ereignisgesteuerten VBA-Makro unten für einen dynamischen, codebasierten Ansatz.
Zellwert automatisch aus der Zelle darüber aktualisieren mit einem ereignisgesteuerten VBA-Makro (immer dynamisch)
Wenn Sie eine Lösung benötigen, bei der der Zellenwert immer automatisch auf den Wert der Zelle darüber aktualisiert wird, unabhängig davon, ob Zeilen eingefügt oder gelöscht werden – und Sie möchten dieses Verhalten ohne das Kopieren von Formeln verwalten – dann ist die Verwendung eines ereignisgesteuerten VBA-Makros effektiv. Diese Methode ist ideal für Benutzer, die sich mit dem Aktivieren von Makros auskennen, und ermöglicht eine dynamische Aktualisierung: Wann immer Sie eine bestimmte Zelle oder einen bestimmten Bereich auswählen oder einen Wert ändern, kann das Makro die Zielzelle sofort so setzen, dass sie immer gleich dem Wert darüber ist, was die Dateneingabe konsistent macht, egal wie sich Ihr Arbeitsblatt ändert. Dies ist besonders nützlich in Vorlagen, wo Sie ein festes Muster oder eine Standardwertkonfiguration in jeder neuen Zeile wünschen.
So richten Sie dies mit dem Worksheet_Change-Ereignis ein:
1. Klicken Sie mit der rechten Maustaste auf den Arbeitsblatt-Reiter, wo Sie diese Funktionalität möchten, und wählen Sie Code anzeigen. Der Microsoft Visual Basic for Applications-Editor öffnet sich im richtigen Arbeitsblattmodul.
2. Kopieren und fügen Sie den folgenden VBA-Code in das Fenster des Arbeitsblattmoduls ein:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WatchRange As Range
On Error Resume Next
' Set the range you want to monitor (for example, B2:B100)
Set WatchRange = Intersect(Target, Me.Range("B2:B100"))
If Not WatchRange Is Nothing Then
Application.EnableEvents = False
Dim cell As Range
For Each cell In WatchRange
' Avoid the first row, or adjust as needed
If cell.Row > 1 Then
cell.Value = Me.Cells(cell.Row - 1, cell.Column).Value
End If
Next cell
Application.EnableEvents = True
End If
End Sub
Parameterhinweise: Ersetzen Sie "B2:B100"
in Me.Range("B2:B100")
durch den tatsächlichen Bereich, in dem Sie dieses Verhalten wünschen (Sie können es auf eine gesamte Spalte setzen, z. B. "B:B"
, aber das Einschränken des Bereichs verbessert die Leistung und vermeidet unbeabsichtigte Überschreibungen).
3. Schließen Sie den VBA-Editor. Nun wird Excel jedes Mal, wenn eine Zelle geändert, eingefügt oder das Arbeitsblatt innerhalb Ihres angegebenen Bereichs aktualisiert wird, automatisch die Zellen aktualisieren, um den Wert darüber widerzuspiegeln. Zum Beispiel, wenn Sie eine Zeile in Zeile 5 einfügen, werden alle überwachten Zellen in Spalte B ab diesem Punkt den Wert aus der Zelle direkt über ihrer neuen Position übernehmen.
- Seien Sie vorsichtig: Dieser Code überschreibt manuell eingegebene Werte innerhalb des überwachten Bereichs. Verwenden Sie ihn mit Bedacht, wenn Sie Formelzellen haben oder ursprüngliche Einträge erhalten möchten.
- Wenn Sie dieses VBA-Makro in Zukunft in der Arbeitsmappe weiterhin verwenden möchten, müssen Sie die Datei als makrofähige Arbeitsmappe (.xlsm) speichern.
- Das Ereigniscode funktioniert nur im Arbeitsblattmodul, in das das Makro eingefügt wurde (nicht über alle Blätter, es sei denn, Code wird in jedes Blattmodul eingefügt).
- Wenn Sie möchten, dass das Update beim Auswählen einer Zelle stattfindet, anstatt beim Ändern eines Werts, können Sie Worksheet_SelectionChange und eine ähnliche Logik verwenden.
Problemlösung und Zusammenfassungsvorschläge:
Wenn das VBA-Skript nach dem Kopieren nicht zu funktionieren scheint, stellen Sie sicher, dass Makros in Ihrer Arbeitsmappe aktiviert sind und dass Sie den Code in das richtige Blattmodul (nicht in ein Standardmodul) eingefügt haben. Wenn Sie Fehler erhalten oder Excel einfriert, überprüfen Sie, dass Application.EnableEvents vor Ihren automatisierten Zellenänderungen auf False gesetzt ist und danach wieder auf True zurückgesetzt wird, um rekursive Schleifen zu vermeiden. Für andere fortgeschrittene Verhaltensweisen oder feinere Kontrolle sollten Sie benutzerdefinierte Skripte basierend auf Ihrer Datenstruktur in Betracht ziehen.
Die besten Produktivitätstools für das Büro
Stärken Sie Ihre Excel-Fähigkeiten mit Kutools für Excel und genießen Sie Effizienz wie nie zuvor. Kutools für Excel bietet mehr als300 erweiterte Funktionen, um die Produktivität zu steigern und Zeit zu sparen. Klicken Sie hier, um die Funktion zu erhalten, die Sie am meisten benötigen...
Office Tab bringt die Tab-Oberfläche in Office und macht Ihre Arbeit wesentlich einfacher
- Aktivieren Sie die Tabulator-Bearbeitung und das Lesen in Word, Excel, PowerPoint, Publisher, Access, Visio und Project.
- Öffnen und erstellen Sie mehrere Dokumente in neuen Tabs innerhalb desselben Fensters, statt in neuen Einzelfenstern.
- Steigert Ihre Produktivität um50 % und reduziert hunderte Mausklicks täglich!
Alle Kutools-Add-Ins. Ein Installationspaket
Das Kutools for Office-Paket bündelt Add-Ins für Excel, Word, Outlook & PowerPoint sowie Office Tab Pro und ist ideal für Teams, die mit mehreren Office-Anwendungen arbeiten.





- All-in-One-Paket — Add-Ins für Excel, Word, Outlook & PowerPoint + Office Tab Pro
- Ein Installationspaket, eine Lizenz — in wenigen Minuten einsatzbereit (MSI-kompatibel)
- Besser gemeinsam — optimierte Produktivität in allen Office-Anwendungen
- 30 Tage kostenlos testen — keine Registrierung, keine Kreditkarte erforderlich
- Bestes Preis-Leistungs-Verhältnis — günstiger als Einzelkauf der Add-Ins