
Ich habe in jeder Zelle eine Spalte mit folgender Formel, die den Kilometerunterschied zwischen den beiden Zellen links von jeder Zelle berechnet:
=IF(AND(INDIRECT(ADDRESS(ROW(),COLUMN()-2))<>"", INDIRECT(ADDRESS(ROW(), COLUMN()-1))<>""), INDIRECT(ADDRESS(ROW(),COLUMN()-1))-INDIRECT(ADDRESS(ROW(),COLUMN()-2)), "")
Mein Problem besteht darin, dass jedes Mal, wenn ich eine neue Zeile zwischen vorhandenen Daten einfüge, alle Zellen in dieser Zeile leer sind und ich diesen Code manuell in die leere Zelle einfügen muss.
Ist es mir möglich, jede Zelle einer Spalte (außer der Kopfzeile) auf eine bestimmte Formel einzustellen?selbst wenn ich eine neue Zeile einfüge?
Ich habe versucht, die Spalte als Tabelle festzulegen, und die Zellen wurden erfolgreich automatisch vervollständigt, wenn ich eine neue Zeile eingefügt habe. Ich habe jedoch noch andere Spalten, die ich ebenfalls automatisch vervollständigen möchte, und Excel lässt mich keine neue Zeile einfügen, wenn ich mehr als eine Spalte zu einer Tabelle mache.
Antwort1
Hier ist eine kleine Demo, die Sie an Ihr tatsächliches Schema anpassen können. In der Demo:
- Die Spalte von Interesse ist die SpalteB
- wenn mehr als eine Zeile eingefügt wird, passiert nichts
- wenn eine Zeile unterhalb des Datenbereichs eingefügt wird, passiert nichts
- wenn eine Zeile gelöscht wird, passiert nichts
- Wenn eine Zeile in der Mitte der Daten eingefügt wird, wird die Zelle in SpalteBwird entweder mit der obigen oder der folgenden Formel gefüllt
- Wenn sich über oder unter der neuen Zelle keine Formel befindet, passiert nichts
Fügen Sie das folgende Sub in den Codebereich des Arbeitsblatts ein:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, r1 As Range, r2 As Range
Set r = Target
If r.Rows.Count > 1 Then Exit Sub
If r.Columns.Count <> Cells.Columns.Count Then Exit Sub
If r.Row = 1 Then Exit Sub
Set r1 = Intersect(r, Columns(2))
If r1.Value <> "" Then Exit Sub
If r1.Offset(-1, 0).HasFormula Then
Application.EnableEvents = False
r1.Offset(-1, 0).Copy r1
Application.EnableEvents = True
Exit Sub
End If
If r1.Offset(1, 0).HasFormula Then
Application.EnableEvents = False
r1.Offset(1, 0).Copy r1
Application.EnableEvents = True
Exit Sub
End If
End Sub
Antwort2
Ich wollte nur dieses Video posten, aber offensichtlich muss ich mindestens 30 Zeichen eintippen.
Wie wäre es mit „So geht das ganz einfach.“ Mist, das sind erst 29.
Für alle, die es interessiert: Das Symbol "Bild einfügen" akzeptiert keine MOV-Dateien, aber es gibt eineganz nette Webseitedas Videodateien in animierte GIFs umwandelt.