2016-08-11 344 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 –

相關問題