Hier ist ein einfaches Makro ist zu erreichen, was Sie zu tun suchen. Ich nahm an, dass Sie von militärischer Zeit zu AM/PM konvertieren wollten. Sie müssen die Speicherorte der Zellen an Ihre Tabelle anpassen. Dies wird nur durch alle Werte in Spalte A gehen und sie in nur AM/PM-Zeit umwandeln und sie in Coulmn B ausspucken. Anstatt alle Zeilen zu durchlaufen, könnten Sie auch Ihre eigene einzelne Eingabefunktion mit derselben Logik definieren .
Sub test()
Dim dt As String
Dim tm As String
Dim hr As String
Dim row_ct As Integer
row_ct = Range("A1").End(xlDown).Row
For i = 1 To row_ct
dt = Cells(i, 1)
tm = Right(Cells(i, 1), 8)
hr = Left(tm, 2)
If hr < 12 Then
tm = tm & " AM"
ElseIf hr = 12 Then tm = tm & " PM"
ElseIf hr > 12 and hr - 12 < 10 then tm = 0 & (Left(tm, 2) - 12) & Right(tm, 6) & " PM"
Else: tm = left(tm, 2) - 12 & right(tm, 6) & " PM"
End If
Cells(i, 2) = tm
Next i
End Sub
Hier ist, wie Sie eine benutzerdefinierte Funktion vornehmen können, die diese Griffe:
Function tm(date_time)
If Left(Right(date_time, 8), 2) < 12 Then
tm = Right(date_time, 8) & " AM"
ElseIf Left(Right(date_time, 8), 2) = 12 Then tm = Right(date_time, 8) & " PM"
ElseIf Left(Right(date_time, 8), 2) > 12 Then tm = Left(Right(date_time, 8), 2)- 12 & Right(date_time, 6) & " PM"`
End If
End Function
Abhängig von der Anwendung, wird man wahrscheinlich besser funktionieren als die andere.
Warum nicht nur die Zelle formatieren, um nur die Zeit anzuzeigen? Benutzerdefiniertes Format 'h: mm: ss AM/PM' – tigeravatar
Es funktionierte nicht, wenn ich nur die Zeit hereinbrachte (die AMPM tat nicht) –
Sie können immer nur die richtige Funktion verwenden. Zum Beispiel = rechts (a1,8). Dies setzt voraus, dass nach der Zeit keine Leerzeichen mehr vorhanden sind und die Zeit immer 8 Zeichen umfasst. Wenn diese Annahmen nicht erfüllt werden, können Sie immer noch bekommen, was Sie wollen, es ist nur ein wenig mehr integer. Möchten Sie es von der Militärzeit in AM/PM umwandeln? Wenn ja, müssen Sie einen anderen Ansatz wählen. – Jarom