如何在自定义单元格格式的末尾添加 AM/PM 选项



为了允许快速输入,我有一个自定义格式

0":"00

因此,输入 516 将导致 5:16。这工作正常,但我想添加它是在上午还是下午。

我尝试将AM/PM添加到此自定义格式的末尾

0":00 上午/下午

因此,理想情况下,如果在 PM 中填充单元格,它将显示为下午 5:16。 不幸的是,无论输入什么时间,它都只显示 AM。

有谁知道我如何获得此功能?也许自定义格式不是我正在寻找的选项?

假设我们在 A 列中输入值。 如果我们输入:

516

A1 中,当我们输入时是早上,我们希望 Excel 将值转换为:

5:16 AM

如果输入时是下午,我们希望该值转换为5:16 PM

将以下事件宏放在工作表代码区域中:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim trail As String, v As String
    With Target
        If Intersect(Range("A:A"), Target) Is Nothing Then Exit Sub
        If .Value = "" Then
            Application.EnableEvents = False
                .Clear
            Application.EnableEvents = True
            Exit Sub
        End If
        trail = Right(CStr(Now()), 2)
        v = .Text
        mins = Right(v, 2)
        hrs = Mid(v, 1, Len(v) - 2)
        If trail = "PM" Then hrs = hrs + 12
        Application.EnableEvents = False
            .Clear
            .Value = TimeSerial(hrs, mins, 0)
            .NumberFormat = "[$-en-US]h:mm AM/PM;@"
        Application.EnableEvents = True
    End With
End Sub

这将生成具有正确格式的真实 Excel 时间值。

最新更新