Excel: Legen Sie die Standardformel für jede Zelle in der Spalte fest

692
thomas152374

Ich habe in jeder Zelle eine Spalte mit der folgenden Formel, die die Differenz in Kilometern 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)), "") 

leere Zelle ohne Formel, wenn eine neue Zeile eingefügt wird

Mein Problem ist, 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.

Kann ich jede Zelle in einer Spalte (mit Ausnahme der Kopfzeile) auf eine bestimmte Formel setzen, auch wenn ich eine neue Zeile einfüge ?

Ich habe versucht, die Spalte als Tabelle festzulegen, und es war erfolgreich, die Zellen automatisch zu vervollständigen, wenn ich eine neue Zeile einfügte. Ich habe jedoch andere Spalten, die ich auch automatisch vervollständigen möchte, und Excel lässt mich keine neue Zeile einfügen, wenn Ich mache mehr als eine Spalte eine Tabelle.

0
Dies kann leicht mit einem Ereignismakro durchgeführt werden. Ist diese Vorgehensweise in Ordnung? Gary's Student vor 6 Jahren 0
Ihre Frage sieht kompliziert aus, da Sie nur eine Spalte angezeigt haben. Bearbeiten Sie den Screenshot und fügen Sie links von der vorhandenen Spalte Spalten ein. Möglicherweise erhalten Sie auch eine Nicht-VBA-Lösung. Rajesh S vor 6 Jahren 0
Thomas, wenn Sie Zeile / Zeilen dazwischen einfügen, finden Sie definitiv leere Zellen / Zeilen / Zeilen, da die Formel der Teil der Zeile ist, so dass Sie auch leere Zellen für die Formel erhalten haben. Wenn Sie Daten aus allen Quellzellen / -zeilen / -spalten löschen, hat die Formel nichts mehr zu berechnen. Rajesh S vor 6 Jahren 0

2 Antworten auf die Frage

2
Bandersnatch

Ich wollte gerade dieses Video posten, aber offensichtlich muss ich mindestens 30 Zeichen eingeben.

Wie wäre es mit "Hier ist ein einfacher Weg, es zu tun." Verdammt, das sind nur 29.

Für alle, die daran interessiert sind, akzeptiert das Symbol "Bild einfügen" keine .mov- Dateien, aber es gibt eine hübsche Website, auf der Videodateien in animierte GIFs konvertiert werden.

enter image description here

Ich habe diese einfache aber praktische Lösung gewählt. Rajesh S vor 6 Jahren 0
Wie haben Sie die ** .mov ** -Datei erstellt? Gary's Student vor 6 Jahren 0
Hallo @ Gary. Bildschirmaufzeichnung ist eine (wenig bekannte) Funktion in Quicktime (https://support.apple.com/guide/quicktime-player/record-your-screen-qtp97b08e666/mac). Ich hatte sie vorher noch nicht verwendet. aber wollte herausfinden, wie es geht. Es war ziemlich einfach zu benutzen. Bandersnatch vor 6 Jahren 0
@Bandersnatch Danke! ...................... sehr cool! Gary's Student vor 6 Jahren 0
Vielen Dank! Das einzige Problem, das ich hatte, war beim Starten der Aufnahme. Sie befinden sich in QuickTime. Die QT-Menüleiste wird angezeigt. Ich navigierte zu Excel und bearbeitete die ersten Sekunden danach. Trim verwenden ... In QT. :-) Bandersnatch vor 6 Jahren 0
0
Gary's Student

Hier ist eine kleine Demo, die Sie an Ihr aktuelles Schema anpassen können. In der Demo:

  1. Die interessierende Spalte ist Spalte B
  2. Wenn mehr als eine Zeile eingefügt wird, passiert nichts
  3. Wenn eine Zeile unterhalb des Datenbereichs eingefügt wird, passiert nichts
  4. Wenn eine Zeile gelöscht wird, passiert nichts
  5. Wenn eine Zeile in der Mitte der Daten eingefügt wird, wird die Zelle in Spalte B entweder mit der obigen Formel oder mit der folgenden Formel gefüllt
  6. Wenn sich keine Formel oberhalb oder unterhalb der neuen Zelle befindet, passiert nichts

Fügen Sie das folgende Unter in den Arbeitsblatt-Codebereich 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