2016-07-07 78 views
0

很少介紹。PowerQuery:添加多列

近期任務:添加15個具有相同值的列。

解決方案:我沒有連續使用Table.AddColumn,而是應用了以下方法。

= Table.RemoveColumns(
    Table.SplitColumn(
     Table.AddColumn(TableFromPreviousStep, "q", each "1") 
     , "q" 
     , Splitter.SplitTextByDelimiter(" ") 
    , {"temp","q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9", "q10", "q11", "q12", "qY+1", "qY+2", "qY+3"} 
    , 1) 
, {"temp"}) 

說明:首先,我添加一個名爲「Q」與任何默認文本值表中臨時列。然後這個列被分隔爲空格作爲分隔符(這就是爲什麼它需要文本),但是由於沒有空格,它會返回儘可能多的列,因爲名稱會計入它們。第一列保留原始值,並應在後面的步驟中刪除。所有其他新列的默認值爲1.

問題: 我目前的任務是創建數個列,其值由相同的公式計算。我嘗試了與上面相同的方法,但是我沒有使用任何公式作爲默認值。我得到的最好結果是包含一個公式的列。

任何幫助表示讚賞。

回答

2

您可以使用List.Accumulate向表中添加儘可能多的列。如果你有一個表Source與列q,你可以用這個公式相同的值創建15列:

List.Accumulate({1..15}, Source, (state, current) => Table.AddColumn(state, "q" & Number.ToText(current), each [q]))

厚積薄發將通過列表中的每個數字迴路,添加一列「Q 「到它已經與Table.AddColumn建立起來的表中。這將適用於任何值和任意數量的行。

+0

謝謝亞歷杭德羅!據我所知,公式(每個例子中的[q])對於所有新列都是一樣的? – Eugene

+0

我該如何將整個列表轉換爲文本(我想將它與另一個帶有非數字列名稱的列表聯合起來)? – Eugene

+0

[q]是該列中的值,因此每一行中的每列將具有相同的值,但行之間的值可能不同。爲了將列表轉換爲文本,是否要將列表中的每個值都設置爲文本值,還是要將列表表示爲文本值?如果它是前者,則使用'Text.From'。 –