在excel中将数字转换为时间-可变位数

ikfrs5lh  于 2023-01-10  发布在  其他
关注(0)|答案(3)|浏览(157)

我有一份从仓库管理系统下载的报告。
在这个报告中,有一个时间列,不幸的是,它将时间放入了一串数字中,长度可以是5-8位数。

22434900 = 22:43:49:00 with 22 being the hour, 43 the minutes, 49 the seconds.
2480000 = 02:48:00:00 with 2 being the hour, 48 the minutes etc.
54300 = 00:05:43:00

末尾的00(毫秒)在每个数字中不会改变,所以是完全不相关的。
有没有一种简单的方法来格式化这些单元格中的文本,使其显示为时间而不是数字?
先谢了。

lstz6jyr

lstz6jyr1#

我知道我迟到了,但我有个办法:

=TIMEVALUE(TEXT(A1/100,"00\:00\:00.00"))

同样,正如Jerry的回答中提到的,您需要使用hh:mm:ss.00的单元格格式

flvlnr44

flvlnr442#

您可以将TIME与一些数学函数一起使用:

=TIME(INT(A1/1000000),MOD(INT(A1/10000),100),MOD(A1/100,100))

TIME采用3个参数:小时、分钟和秒。
为了得到小时数,我除以1000000,然后INT将其四舍五入到最接近的整数。
为了得到分钟数,我先除以10000,但结果中仍然有小时数,所以我使用MOD(它给出一个数除以另一个数的余数)。在第一个例子中,除法得到2243,除以100的余数是43,这就是我要查找的分钟数。
为了得到秒数,我将这个数字除以100,类似于分钟数,我使用MOD去掉分钟和小时部分,这里我没有使用INT,因为如果有毫秒数,将使用这个公式保留毫秒数。
还要注意,我使用的是格式hh:mm:ss.00,因为如果我尝试使用hh:mm:ss:00,excel会抱怨。

6g8kf2rb

6g8kf2rb3#

对于您的仓库管理系统查询,您可能需要尝试类似以下的操作:
·获取6位数字时间并将其转换为time函数可以处理的字符串
·使用digits函数来避免数据长度变化的问题(例如64512与1113012)
·在该字符串上使用函数Time返回值(这样我们可以添加小时或分钟,如下例所示)
下面是一个示例,可以对此进行试验:

select MyTimeField
, time(int(MyTimeField/10000) || ':' || 
substring(digits(MyTimeField),3,2) || ':' || 
substring(digits(MyTimeField),5,2)) 
from MyTable where MyCompany = 1 and MyInvoiceDate = Current_date

相关问题