在 Excel 中的同一单元格中将数字转换为时间

在 Excel 中的同一单元格中将数字转换为时间

我正在创建计划管理器,但遇到了以下情况:

当用户想要开始执行某项任务时,系统会提示用户输入一个数字,例如数字“13”应该代表 13:00。但是在他输入这个数字后,我需要它显示为 13:00。

图像]

为了做到这一点,我需要将数字除以 24,然后该数字才能转换为我想要的格式 (13:00)。但我不知道如何将该数字重新插入到同一个单元格中。

有可能吗,或者还有其他方法可以做到这一点?如果我输入半小时(13:30),它也应该有效。

答案1

重大编辑

根据反馈,这是对原始帖子的重大重写。

您可以在计算过程中转换数字,而不是在同一个单元格中转换数字。使用这种方法,用户认为他们输入的是 24 小时格式的时间,但实际上它是一个转换为时间的整数。以下是一个示例。

时间表示例

H 列包含该行 G 列内容的描述。

用户的关键是输入不带冒号的 24 小时格式的时间,这在工作表顶部的横幅中有所说明。如果您使用自定义格式格式化时间单元格(第 3、4 和 6 行),它们看起来##":"00就像显示标准时间格式一样。

以下是单元格内容和公式:

G3级:在此处输入结束时间(24 小时格式,不带冒号)
示例中输入的值是1645,但将显示为16:45

G4:在此处输入开始时间(24 小时格式,不带冒号)
示例中输入的值820将显示为8:20

G5: =TIME(INT(G3/100),MOD(G3,100),0)-TIME(INT(G4/100),MOD(G4,100),0)+IF(G3<=G4,1,0)(8:25)

这将减去两个时间并纠正负时间误差(+IF(G3<=G4,1,0))。

TIME 函数接受小时、分钟、秒作为输入TIME(h,m,s)。由于 G3 和 G4 是整数,因此小时数除以 100(INT(G3/100)或 左侧显示的数字:)即可得出,分钟数取除法的余数(MOD(G4,100)或 右侧显示的数字:)即可得出,秒数为零,因为我们处理的是整分钟。

结果将是实际时间值,并且单元格应格式化为时间或自定义(h:mm)。

G6:在此处输入休息/午餐时间(24 小时格式,不带冒号)
示例中输入的值30将显示为:30

G7: =(G5-TIME(INT(G6/100),MOD(G6,100),0))*24(7.92)

这会将 G6 转换为时间格式,如上文对单元格 G5 所述,然后减去两个时间。

将差值乘以 X24 以得出以十进制小时为单位的答案,因为我的系统要求输入此类内容。如果您需要,则将单元格格式化为带有 2 位小数的数字。

如果您不需要小数小时,那么只需保留公式*24并将单元格格式化为时间。

在我的完整表格中,G 列重复显示一周中的每一天。希望这对您有所帮助。

答案2

此宏将根据所选单元格中的 24 小时制时钟时间将数字转换为时间。

Sub NumberToTime()
    Dim rCell As Range
    Dim iHours As Integer
    Dim iMins As Integer

    For Each rCell In Selection
        If IsNumeric(rCell.Value) And Len(rCell.Value) > 0 Then
            iHours = rCell.Value \ 100
            iMins = rCell.Value Mod 100
            rCell.Value = (iHours + iMins / 60) / 24
            rCell.NumberFormat = "h:mm AM/PM"
        End If
    Next
End Sub

在此处输入图片描述

怎么运行的:

  • 将此宏作为模块与工作表一起输入。
  • 输入屏幕截图中显示的时间数字。
  • 选择数据范围并运行宏。

您将获得如屏幕截图所示的期望结果。

相关内容