Power Query:将字符添加到多个列/行的设置限制中

时间:2017-09-15 15:35:42

标签: excel powerbi powerquery

PQ非常新,我很确定在这种情况下它可以做我需要的东西,但我需要帮助弄清楚如何到达那里。

我有一个时间表报告,其中有20列,涵盖50行,需要格式化为word doc才能上传到单独的系统。单元格中的原始数据范围从0到任何负2位数字(例如:“ - 20”),但它们需要格式化为以“.00”结尾的七字符集。

实施例: 0将需要变为“0000.00” -4将需要变成“-004.00” -25需要变成“-025.00”

我想我应该可以使用text.insert函数,但我对M语言不够熟悉,无法让它按照我的意愿去做。

任何解决方案/建议?

3 个答案:

答案 0 :(得分:0)

您可以在PQ中使用此公式= Text.PadStart(Text.From([Column1]),4,"0")&".00")添加与您的需求类似的新列。

enter image description here

答案 1 :(得分:0)

这是一个公认的“繁忙”公式:

= Table.AddColumn(#"Changed Type", "Custom", each Text.Start(Text.Range(if Number.Round([Column1],2)*.01 < 7 then Text.From(Number.Round([Column1],2)*.01) & "001" else Text.From(Number.Round([Column1],2)*.01),0,7),2) & Text.Range(Text.Range(if Number.Round([Column1],2)*.01 < 7 then Text.From(Number.Round([Column1],2)*.01) & "001" else Text.From(Number.Round([Column1],2)*.01),0,7),3,2) & "." & Text.End(Text.Range(if Number.Round([Column1],2)*.01 < 7 then Text.From(Number.Round([Column1],2)*.01) & "001" else Text.From(Number.Round([Column1],2)*.01),0,7),2))

enter image description here

它假设您要格式化的数字在Column1中开始。它创建了一个新列...自定义...带有格式化结果。

要试用它,请先填充Column1并将其加载到Power Query中;然后单击“添加列”选项卡,再单击“自定义列”按钮,并填充弹出窗口,如下所示:

enter image description here

...然后点击OK。

有了更多的时间,重复的部分可以用变量来缩短这一点。一段时间后,这也可以变成一个函数。但我现在没有时间,所以我想我至少会给你一些“东西。”

答案 2 :(得分:0)

这里重新回顾了我之前的回答...设置使用功能。您只需为要重新格式化的每列调用一次该函数。在每次调用函数时,您只需将要重新格式化的列的名称传递给函数。

创建一个新的空白查询:

enter image description here

在高级编辑器中打开新查询并突出显示其中的所有内容:

enter image description here

将其粘贴到高级编辑器中突出显示的文本上:

let 

    FormatIt = (SourceColumn) => 

let

    Base = Number.Round(SourceColumn,2)*.01,
    Source = try Text.Start(Text.Range(
                if Base < 7 then Text.From(Base) & "001" else 
                Text.From(Base),0,7),2) & Text.Range(Text.Range(
                    if Base < 7 then Text.From(Base) & "001" else 
                    Text.From(Base),0,7),3,2) & "." & Text.End(Text.Range(
                        if Base < 7 then Text.From(Base) & "001" else 
                        Text.From(Base),0,7),2)
             otherwise "0000.00"

in
    Source

in 

    FormatIt

...然后点击完成。

您将看到新功能已创建并列在屏幕左侧的查询列表中。

然后使用要重新格式化的列转到您的查询(单击屏幕左侧显示要在其中更改数字的查询名称)和...

单击“调用自定义函数”

enter image description here

并填写如下弹出窗口:

enter image description here

- 您可以组成与Custom.1不同的新列名。

- 函数查询是您正在调用的查询的名称(您粘贴代码时刚创建的查询的名称)...对我而言,它被称为Query1。

- 源列是包含您要格式化的数字的列。

...然后点击OK。

您可以为每列调用此函数一次。它将为每个创建一个新的格式化列。