如何在 Excel 中从 1234:00:00 中提取精确数字 1234

如何在 Excel 中从 1234:00:00 中提取精确数字 1234

我有一系列 ID,它们在 excel 中以 [h]:mm:ss 格式表示在一列中。我想提取冒号前面的 [h] 部分并将其存储为数字。我遇到的问题是它将数字转换为新数字,而不是显示的数字。

示例:1234:00:00 格式为 [h]:mm:ss 新列中所需文本:1234

我希望使用直接公式来解决。

答案1

这里您有两个选择。

如果你想简单地展示小时,您只需复制并粘贴单元格(或简单=B5公式)并赋予其自定义显示格式即可[h]

如果您需要使用该数字进行其他计算,则可以使用以下公式:

=TRUNC(B5*24,0)

如果您想要更高级的功能,使用 Excel 日期/时间方法,您可以使用:

=DATEDIF(0, B5,"D") * 24 + HOUR(B5)

答案2

诸如此类的事情=HOUR()不会奏效,因为它不会包括溢出到一天中的时间段。同上=TEXT(A1, "hh") * 1。1234 小时溢出到几天中。

你需要这样做:

=ROUNDDOWN(VALUE(D5)*24,0)

总小时数将包括整天。四舍五入会去掉分钟数等。

这是因为 Excel 将时间表示为每天增加 1 的数字。

VALUE 调用可避免 Excel 在编辑未触及的单元格时传播时间格式的不良习惯。在更高版本的 Excel 中,您可能不需要它。

答案3

如果您正在使用工作表公式,请使用hour功能:

在此处输入图片描述

如果您使用VBA,类似的解决方案:

MsgBox Hour(sheet.Cells(1, 1))

答案4

如果您的数字存储为文本而不是时间,则可以使用这个简单的数组公式从文本中提取第一个连续的数字序列:

=MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$14),1)),0),MATCH(FALSE,ISNUMBER(1*MID(A1,ROW(OFFSET($1:$14,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$14),1)),0)-1,)),1)),0)-1)

注意:输入时请按 CTRl+SHIFT+ENTER,因为这是一个数组公式

相关内容