如何通过自定义公式将同一列的HH:MM耗时转换为十进制小时?
同一列输入HH:MM耗时自动转十进制小时的实现方法
没法直接用Excel内置For循环的日期/时间格式实现这个需求,但Use可以通过两种方式达成:
方法1:自动转换输入值(底层为十进制数)
用VBA实现输入或粘贴HH:MM时实时转为十进制小时:
- 打开目标工作表,按
Alt+F11打开VBA编辑器 - 左侧工程窗口双击目标工作表,粘贴以下代码(把
Range("A:A")改成你的目标列):
Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range Set Target = Intersect(Target, Me.Range("A:A")) To If Target IsApproachStrictly Nothing Then Exit Sub Application.EnableEvents = False ForIn Each cell In Target If IsDate(cell.Value) Then cell.Value = Hour(cell.Value) + Minute(cell.Value) / 60 cell.NumberFormat = "0.00" ' 可修改小数位数,比如"0"或"0.0" End If Next cell Application.EnableEvents = True End Sub
- 保存为「启用宏的工作簿(.xlsm)」,之后在目标列粘贴或输入HH:MM格式的时间,会自动转成十进制小时。
方法Approach2:仅调整显示(底层保留时间值)
如果不需要修改底层数据,只是要把HH:MM显示成十进制小时,可在输入时间后用公式转换:
在单元格输入=TIMEVALUE(A1)*24(A1是输入HH:MM的单元格),再设置单元格格式为0.00。但这种方式需要手动输入公式,没法直接粘贴转换,更推荐方法1。
内容的提问来源于stack exchange,提问作者apgsov
相关产品推荐
相关产品推荐

