Datumsstempel beim Bearbeiten von Zeilen in der Tabelle

Datumsstempel beim Bearbeiten von Zeilen in der Tabelle

Ich habe eine Tabelle, die für jede Zeile einen Datumsstempel benötigt, sobald in den Zellen dieser Zeile Änderungen vorgenommen werden. Wenn ich beispielsweise etwas in Zelle B14 oder E14 oder G14 ändere, erscheint das heutige Datum in Zelle K14. Natürlich muss ich in der Lage sein, den Zeilen- und Spaltenbereich auszuwählen, der davon betroffen sein soll.

Das Komplizierte in meinem Fall ist jedoch, dass das heutige Datum angezeigt werden mussNURwenn ichhinzufügenoderändernInformationen in der Zelle. Wenn ich nurlöschenInformationen aus der Zelle. Ich brauche, dass das Datum gleich bleibt wie vor dem Löschen der Informationen.

PS: Bei der Datei handelt es sich um eine Excel-Tabelle, die jedoch auf Google Drive verwendet wird.

Antwort1

Diese Antwort gilt, wenn Sie direkt zu einem Google Sheet gehen.

Ich denke, das wird Ihnen helfen, in die richtige Richtung zu gehen. Mir ist nicht klar, ob Sie meinen, dass die Felder, die Sie überwachen werden, über das Blatt verteilt sind, oder ob die nicht benachbarten Zellen, auf die Sie sich bezogen haben, nur Beispiele innerhalb eines Bereichs waren. Wenn Sie Zellen verstreut haben, müssen Sie wahrscheinlich mehrere „Überwachungsbereiche“ erstellen, wie ich im Code angemerkt habe, und prüfen, ob die bearbeitete Zelle innerhalb von mindestens einem Bereich liegt, andernfalls kehren Sie aus der Funktion zurück.

Ich möchte darauf hinweisen, dass ich mir nicht besonders viel Mühe gegeben habe, damit dies funktioniert und das Löschen aller Werte aus einem Bereich mit mehreren Zellen unterstützt wird.

Beachten Sie auch, dass Sie im Google Sheet zu Tools -> Skript-Editor und dann zu Ressourcen -> Trigger gehen müssen (das Menü kann je nachdem, was Sie dort zuvor getan haben, unterschiedlich sein) und dem Sheet einen Trigger „onEdit()“ hinzufügen müssen.

Dann wird Ihre Funktion ungefähr so ​​aussehen

function onEdit(e){
  var DateCol = "K";
  var DeletedColNote = "L";
  var curDate = Utilities.formatDate(new Date(), "GMT-5", "MM/dd/yyyy") 
  var editRange = e.range;
  var rowIndex = editRange.getRowIndex();
  var colIndex = editRange.getColumnIndex();

  // May need to set up multiple ranges like this and check all ranges if
  // checked fields are not in adjacent cells
  var watchRange = { // B2:G20
    top : 2,         // start row
    bottom : 20,     // end row
    left : 2,        // start col
    right : 7        // end col
  };
  // Exit if we're out of range
  if (rowIndex < watchRange.top || rowIndex > watchRange.bottom) return;
  if (colIndex < watchRange.left || colIndex > watchRange.right) return;

  var currentValue = editRange.getValue();
  currentValue = currentValue.replace(/^\s+|\s+$/g,""); //"trim" kludge

  if (currentValue.length == 0)
  {
    // Set a column to show when data was deleted
    SpreadsheetApp.getActiveSheet().getRange(DeletedColNote + rowIndex).setValue("Deleted: " + curDate);
  }
  else
  {
    // Set a column to show last edit date
    SpreadsheetApp.getActiveSheet().getRange(DateCol + rowIndex).setValue("Edited: " + curDate);
    SpreadsheetApp.getActiveSheet().getRange(DeletedColNote + rowIndex).setValue("");
  }
}

Antwort2

Leider lässt sich VBA nicht auf Google Sheets portieren, wenn jedoch auf die Google Sheets-Anforderung verzichtet wird, ist dies mit VBA ganz einfach möglich.

Fügen Sie diesen Code an das WorkSheet_Change-Ereignis für das betreffende Arbeitsblatt an ...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RngToMark As Range
' define the range you want to track changes for
    Set RngToMark = ActiveSheet.Range("A1:G30")
' make sure the change occurred inside the range
    If Intersect(Target, RngToMark) Is Nothing Then Exit Sub
' ignore deleting the contents
    If Target.Value = "" Then Exit Sub
' mark the row as changed
    ActiveSheet.Range("K" & Target.Row).Value = Format(Now(), "MMM-DD-YYYY")

End Sub

Um an die richtige Stelle zum Einfügen zu gelangen ...

  1. Doppelklicken Sie im VBEditor auf den Arbeitsblattnamen unter „Microsoft Excel-Objekte“.
  2. Wählen Sie dann „Arbeitsblatt“ aus dem Dropdown-Menü auf der linken Seite aus.
  3. Wählen Sie dann „Ändern“ aus dem Dropdown-Menü auf der rechten Seite.

verwandte Informationen