Aufzeichnen einer Dateneingabezeit (Microsoft Excel)
Vinay verwendet ein Excel-Arbeitsblatt zur Dateneingabe. Informationen werden in Spalte A eingegeben, und Vinay möchte die Möglichkeit haben, automatisch eine Zeit in Spalte B neben dem in Spalte A eingegebenen Wert einzufügen, die angibt, wann der Wert eingegeben wurde.
Es gibt verschiedene Möglichkeiten, wie Sie diese Aufgabe ausführen können. Die erste besteht darin, eine Zeit manuell einzugeben, indem Sie die benachbarte Zelle in Spalte B auswählen und Strg + Umschalt + drücken. (das ist das Semikolon). Diese Verknüpfung gibt die aktuelle Zeit in der Zelle ein. Das Problem bei diesem Ansatz ist natürlich, dass er nicht automatisch ist und einige zusätzliche Bewegungen und Tastenanschläge erforderlich sind, um ihn zu implementieren.
Ein besserer Ansatz wäre die Verwendung einer Formel zur Eingabe der Zeit. Die NOW-Funktion gibt das aktuelle Datum und die aktuelle Uhrzeit zurück und Sie können sie in einer Zelle folgendermaßen verwenden:
=NOW()
Natürlich wird diese einfache Formel jedes Mal aktualisiert, wenn das Arbeitsblatt neu berechnet wird. Das bedeutet, dass die Funktion jedes Mal die aktuelle Zeit zurückgibt, wenn Sie einen Wert in Spalte A eingeben. Dies ist unerwünscht, da Sie nicht möchten, dass frühere Zeiten aktualisiert werden. Sie können versuchen, mithilfe einer Formel zu überprüfen, ob sich in Spalte A etwas befindet, wie folgt:
=IF(A3="","",IF(B3="",NOW(),B3))
Das Problem ist, dass eine Formel wie diese einen Zirkelverweis in das Arbeitsblatt einführt, der eine ganze Reihe von Herausforderungen darstellt, mit denen gearbeitet werden muss. Ein besserer Ansatz besteht darin, ein Makro zu erstellen, das bei jeder Eingabe in Spalte A automatisch ausgeführt wird. Klicken Sie mit der rechten Maustaste auf die Registerkarte des Arbeitsblatts, das für die Dateneingabe verwendet wird, und wählen Sie im Kontextmenü die Option Code anzeigen. Das Codefenster für das Arbeitsblatt wird im Visual Basic-Editor angezeigt und anschließend in das Fenster eingegeben:
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim rCell As Range Dim rChange As Range On Error GoTo ErrHandler Set rChange = Intersect(Target, Range("A:A")) If Not rChange Is Nothing Then Application.EnableEvents = False For Each rCell In rChange If rCell > "" Then With rCell.Offset(0, 1) .Value = Now .NumberFormat = "hh:mm:ss" End With Else rCell.Offset(0, 1).Clear End If Next End If ExitHandler: Set rCell = Nothing Set rChange = Nothing Application.EnableEvents = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
Wenn das Makro aktiviert ist, enthält die benachbarte Zelle in Spalte B jedes Mal, wenn Sie etwas in eine Zelle in Spalte A eingeben, Datum und Uhrzeit (so formatiert, dass nur die Uhrzeit angezeigt wird). Wenn Sie etwas in Spalte A löschen, wird auch die benachbarte Zelle in Spalte B gelöscht.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (12811) gilt für Microsoft Excel 2007, 2010 und 2013. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: