Excel 声明单元格中的数值为小时

Excel 声明单元格中的数值为小时,excel,Excel,我想声明一个单元格中的特定值是一小时。例如,我在一个牢房里有24个,我想把它看作24小时 这样,我可以使用公式来计算新的日期和时间 我有一个数小时内需要直接使用的数字列表 24 - Need to represent as 24 hours 13 - Need to represent as 13 hours 14 - Need to represent as 14 hours 6 - Need to represent as 6 hours 8 - Need to represent as 8

我想声明一个单元格中的特定值是一小时。例如,我在一个牢房里有24个,我想把它看作24小时

这样,我可以使用公式来计算新的日期和时间

我有一个数小时内需要直接使用的数字列表

24 - Need to represent as 24 hours
13 - Need to represent as 13 hours
14 - Need to represent as 14 hours
6 - Need to represent as 6 hours
8 - Need to represent as 8 hours

选择要处理并运行此短宏的单元格:

Sub HourByHour()
    Dim r As Range

    For Each r In Selection
        If r.Value <> "" And IsNumeric(r) Then
            r.Value = TimeSerial(r.Value, 0, 0)
            r.NumberFormat = "h"
        End If
    Next r
End Sub
Sub HourByHour()
调光范围
对于选择中的每个r
如果r.值“”是数字(r),则
r、 值=时间序列(r.Value,0,0)
r、 NumberFormat=“h”
如果结束
下一个r
端接头
编辑#1:

要使24显示为24,请改用此宏:

Sub HourByHour()
    Dim r As Range

    For Each r In Selection
        If r.Value <> "" And IsNumeric(r) Then
            r.Value = TimeSerial(r.Value, 0, 0)
            r.NumberFormat = "[h]"
        End If
    Next r
End Sub
Sub HourByHour()
调光范围
对于选择中的每个r
如果r.值“”是数字(r),则
r、 值=时间序列(r.Value,0,0)
r、 NumberFormat=“[h]”
如果结束
下一个r
端接头

选择要处理的单元格并运行此短宏:

Sub HourByHour()
    Dim r As Range

    For Each r In Selection
        If r.Value <> "" And IsNumeric(r) Then
            r.Value = TimeSerial(r.Value, 0, 0)
            r.NumberFormat = "h"
        End If
    Next r
End Sub
Sub HourByHour()
调光范围
对于选择中的每个r
如果r.值“”是数字(r),则
r、 值=时间序列(r.Value,0,0)
r、 NumberFormat=“h”
如果结束
下一个r
端接头
编辑#1:

要使24显示为24,请改用此宏:

Sub HourByHour()
    Dim r As Range

    For Each r In Selection
        If r.Value <> "" And IsNumeric(r) Then
            r.Value = TimeSerial(r.Value, 0, 0)
            r.NumberFormat = "[h]"
        End If
    Next r
End Sub
Sub HourByHour()
调光范围
对于选择中的每个r
如果r.值“”是数字(r),则
r、 值=时间序列(r.Value,0,0)
r、 NumberFormat=“[h]”
如果结束
下一个r
端接头

试试这个vba。选择组并运行:

Sub hr()
Selection.NumberFormat = "[hh]:mm:ss"
Selection.Value = ActiveSheet.Evaluate("INDEX(INT(" & Selection.Address(0, 0) & "/24)+TIME(" & Selection.Address(0, 0) & ", 0, 0),)")

End Sub
对于公式版本:

在空列中:

=INT(A1/24)+Time(A1,,)

然后抄下来。然后将值复制并粘贴到所需的列上,并格式化该列
[hh]:mm:ss

尝试此vba。选择组并运行:

Sub hr()
Selection.NumberFormat = "[hh]:mm:ss"
Selection.Value = ActiveSheet.Evaluate("INDEX(INT(" & Selection.Address(0, 0) & "/24)+TIME(" & Selection.Address(0, 0) & ", 0, 0),)")

End Sub
对于公式版本:

在空列中:

=INT(A1/24)+Time(A1,,)

然后抄下来。然后将值复制并粘贴到所需的列上,并格式化该列
[hh]:mm:ss

如果要将其视为时间值,为什么不将其设置为时间值? 如果是一次性操作,可以使用Paste Special将整个单元格除以24,也可以使用
=RC[-1]/24
创建附加列

以天为单位存储值的优点是,当您使用数字格式
[h]
时,它将正确格式化,此外,您可以简单地将值添加到一起或将它们添加到日期字段中


如果您想将其视为时间值,为什么不将其视为时间值? 如果是一次性操作,可以使用Paste Special将整个单元格除以24,也可以使用
=RC[-1]/24
创建附加列

以天为单位存储值的优点是,当您使用数字格式
[h]
时,它将正确格式化,此外,您可以简单地将值添加到一起或将它们添加到日期字段中



在空白列中使用此
=Time(A1,,)
然后复制并粘贴这些值。不起作用:(在显示24的我的列中,它给我00:00:00(当列的格式为hh:mm:ss时,为什么不将整个单元格除以24(通过“特殊粘贴”或使用
=RC[-1]/24创建附加列)
)使用这个?当你使用数字格式
[h]
时,它的格式会正确,你可以简单地将它们加在一起或添加到一个日期字段中。现在我们仔细考虑了一下,good catch@compuchip是的,从技术上讲,这不是问题的答案,但可能是实际问题的答案。我想我会抓住机会,把它贴出来:)在空白列中使用此
=Time(A1,,)
然后复制并粘贴回值。不起作用:(在显示24的我的列中,它给我00:00:00(当列的格式为hh:mm:ss时,为什么不将整个单元格除以24(通过“特殊粘贴”或使用
=RC[-1]/24创建一个附加列)
)使用这个?当你使用数字格式
[h]
时,它的格式会正确,你可以简单地将它们加在一起或添加到一个日期字段中。现在我们仔细考虑了一下,good catch@compuchip是的,从技术上讲,这不是问题的答案,但可能是实际问题的答案。我想我会抓住机会,把它贴出来:)确定-当我运行此程序时,如果列中有24个,则当以hh:mm:ss@Yogwhatup你想在24小时内使用什么数字格式?我希望该列中的每个数字都等于小时。因此该列中的6等于6小时。我感谢大家在这方面的帮助:)@Yogwhatup查看我的编辑#1Ok-当我运行此操作时,如果列中有24个,则当以hh:mm格式格式化时,将返回00:00:00:ss@Yogwhatup你想在24小时内使用什么数字格式?我希望该列中的每个数字都等于小时。因此该列中的6等于6小时。我感谢大家在这方面的帮助:)@Yoghatup看看我的编辑#1很好地使用了Evaluate(),这是圆滑的Scott Craner!我知道你是怎么做到的,我不可能自己解决这个问题。很好。使用@CompuChip所说的,您可以将求值公式简化为
Selection.Value=ActiveSheet.evaluate(“INDEX”(&Selection.Address(0,0)&)/24,)”)
,并得到正确的答案。evaluate()的使用很好,这是斯考特·克兰纳的杰作!我知道你是怎么做到的,我不可能自己解决这个问题。很好。使用@CompuChip所说的,您可以将求值公式简化为
Selection.Value=ActiveSheet.evaluate(“INDEX”(&Selection.Address(0,0)&)/24,”)
,并得到正确的答案。