excel 超过24小时:无法解析作为时间值提供的输入

uqjltbpv  于 2023-02-05  发布在  其他
关注(0)|答案(3)|浏览(340)

我有一列的时间数据是文本格式的,超过24小时,我需要将其转换为时间格式。但是,时间〉24小时会导致错误:"无法分析作为时间值提供的输入。"
样本数据:
| 时间|
| - ------|
| 00点00分|
| 00时00分01秒|
| 00时01分|
| 01时00分|
| 24时00分|
| 168时00分|

3wabscal

3wabscal1#

在powerquery中,如果数据在列时间中,则使用公式添加列..自定义列...

= #duration(0,Number.From(Text.Split([Time],":"){0}), Number.From(Text.Split([Time],":"){1}),Number.From( Text.Split([Time],":"){2}))

然后将类型转换为持续时间

let  Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom1" = Table.AddColumn(Source, "Custom", each #duration(0,Number.From(Text.Split([Time],":"){0}), Number.From(Text.Split([Time],":"){1}),Number.From( Text.Split([Time],":"){2})),type duration)
in  #"Added Custom1"
a0zr77ik

a0zr77ik2#

Time数据类型限制为24小时,但可以使用Duration数据类型。下面是实现转换的M代码:

let
    Source = Table.FromList(
        {
            "00:00:00", 
            "00:00:01", 
            "00:01:00", 
            "01:00:00", 
            "24:00:00", 
            "168:00:00"
        }, 
        null, 
        {"Duration String"}
    ),
    #"Added Custom" = Table.AddColumn(
        Source, "Duration", each 
        let
            AllHours = Number.FromText(Text.BeforeDelimiter([Duration String], ":")),
            Days = Number.IntegerDivide(AllHours, 24),
            Hours = Number.Mod(AllHours, 24),
            Minutes = Number.FromText(Text.BetweenDelimiters([Duration String], ":", ":")),
            Seconds = Number.FromText(Text.AfterDelimiter([Duration String], ":", 1)),
            Duration = #duration(Days, Hours, Minutes, Seconds)
        in
            Duration,
        type duration
    )
in
    #"Added Custom"

camsedfj

camsedfj3#

如果文本持续时间在A2:A7范围内,那么在B2中使用下面的简单公式就足以将其转换为表示天数的数值(它在O365下工作,我还没有在旧版本下测试过):

1*A2:A7

要理解它的作用,基本上是对每个单元格进行以下计算:

=SUM(TEXTSPLIT(A2,":") * {3600,60,1})/86400

它将每个元素转换为秒,求和,然后除以一天中的秒数:要以正确的格式显示结果,只需使用下面的d.hh:mm:ss

如您所见,它能够返回1s1min1h1day7days,将其转换为适当的时间单位。
对于B2:B7范围内的数值,如果希望格式与以文本格式输入的输入完全相同,请改用:[hh]:mm:ss

    • 注**:我已将输入数据作为文本输入,并在文本前加上撇号('),格式如下:hh:mm:ss。例如:'168:00:00.

相关问题