2016-07-07 727 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'。 –