PQ非常新,我很确定在这种情况下它可以做我需要的东西,但我需要帮助弄清楚如何到达那里。
我有一个时间表报告,其中有20列,涵盖50行,需要格式化为word doc才能上传到单独的系统。单元格中的原始数据范围从0到任何负2位数字(例如:“ - 20”),但它们需要格式化为以“.00”结尾的七字符集。
实施例: 0将需要变为“0000.00” -4将需要变成“-004.00” -25需要变成“-025.00”
我想我应该可以使用text.insert函数,但我对M语言不够熟悉,无法让它按照我的意愿去做。
任何解决方案/建议?
答案 0 :(得分:0)
答案 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))
它假设您要格式化的数字在Column1中开始。它创建了一个新列...自定义...带有格式化结果。
要试用它,请先填充Column1并将其加载到Power Query中;然后单击“添加列”选项卡,再单击“自定义列”按钮,并填充弹出窗口,如下所示:
...然后点击OK。
有了更多的时间,重复的部分可以用变量来缩短这一点。一段时间后,这也可以变成一个函数。但我现在没有时间,所以我想我至少会给你一些“东西。”
答案 2 :(得分:0)
这里重新回顾了我之前的回答...设置使用功能。您只需为要重新格式化的每列调用一次该函数。在每次调用函数时,您只需将要重新格式化的列的名称传递给函数。
创建一个新的空白查询:
在高级编辑器中打开新查询并突出显示其中的所有内容:
将其粘贴到高级编辑器中突出显示的文本上:
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
...然后点击完成。
您将看到新功能已创建并列在屏幕左侧的查询列表中。
然后使用要重新格式化的列转到您的查询(单击屏幕左侧显示要在其中更改数字的查询名称)和...
单击“调用自定义函数”
并填写如下弹出窗口:
- 您可以组成与Custom.1不同的新列名。
- 函数查询是您正在调用的查询的名称(您粘贴代码时刚创建的查询的名称)...对我而言,它被称为Query1。
- 源列是包含您要格式化的数字的列。
...然后点击OK。
您可以为每列调用此函数一次。它将为每个创建一个新的格式化列。