2016-08-11 486 views
1

我试图从Excel中的另一个数据源查询数据,并且在大于24:00:00的任何持续时间内收到解析错误。Power Query:分析大于24小时的HH:MM:SS持续时间

Expression.Error: We couldn't parse the Duration literal. Details: 51:33:08

如何正确地让Excel分析持续时间如128:22:13的时间?

编辑:

的数据是目前在HH:MM:SS格式的文本。我正在使用Excel查询工具从外部源导入数据。没有代码,我不想在工作表中转换单元格。这些转换是查询工具的一部分:

enter image description here

+0

你能发表产生错误的解析代码吗? – xidgel

+0

对于拥有1K +声誉的人来说,即使你很着急,我也希望你能知道如何在现在提出一个比现在更好的问题。您可以通过在前面添加'''将其转换为文本,或将其转换为查询中的数字。 – Slai

+0

@xidgel没有解析代码,如果有的话我会发布它。它使用Excel查询工具进行“自动”解析。 –

回答

2

的,我们有一个Duration.FromText库函数但是这证明只有0和23小时允许。当你将文本类型从文本改变为持续时间时,这个函数就是在引擎盖下应用的。

幸运的是,#duration构造函数没有这样的限制,所以这里有一个简单的小解析函数可以使用。

let 
    DurationFromYourText = (text as text) as duration => let 
     Split = Text.Split(text, ":"), 
     AsNumbers = List.Transform(Split, Number.FromText), 
     Duration = #duration(0, AsNumbers{0}, AsNumbers{1}, AsNumbers{2}) 
    in 
     Duration, 
    Invoked = DurationFromYourText("128:22:13") 
in 
    Invoked 
+0

谢谢卡尔。我是新来的Excel,但不是编码,我真的会把这段代码放在Excel中,以便能够在Power Query中使用它?或者我会在哪里添加一个新的“类型”到Power查询。 –

+0

@DouglasGaskell你可以将这个函数粘贴到高级编辑器中(注意逗号,因为我们有一个严格的语法)。然后你可以用'= DurationFromYourText([总持续时间])'点击添加自定义列。如果谷歌如何创建自定义的Power Query/M功能,那么有很多博客文章比我更详细地介绍。也许http://www.mattmasson.com/2014/11/iterating-over-multiple-pages-of-web-data-using-power-query/是一个很好的开始? –

+0

@DouglasGaskell这里是M的快速入门,它可能比以Excel为重点的博客文章更有助于学习“M”查询语言:https://msdn.microsoft.com/en-us/library/mt270235.aspx –