Power Query:将字符添加到多个 columns/rows 的设定限制
Power Query: Adding characters to a set limit across several columns/rows
对 PQ 很陌生,我很确定它可以满足我在这种情况下的需要,但我需要帮助弄清楚如何到达那里。
我有一份时间表报告,其中包含 20 列,涵盖 50 行,需要将其格式化为 word 文档以上传到单独的系统。单元格中的原始数据范围从 0 到任何负 2 位数字(例如:“-20”),但它们需要格式化为以“.00”结尾的七个字符集。
例子:
0 需要变成“0000.00”
-4 需要变成“-004.00”
-25 需要变成“-025.00”
我想我应该可以使用text.insert函数,但我对M语言还不够熟悉,无法让它做我想做的事。
任何solutions/suggestions?
您可以在 PQ 中使用此公式 = Text.PadStart(Text.From([Column1]),4,"0")&".00")
添加看起来与您的需求相似的新列。
这是公认的 "busy" 公式:
= 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 中开始。它创建一个新列...自定义...带有格式化的结果。
要进行尝试,请从已填充并加载到 Power Query 中的 Column1 开始;然后单击“添加列”选项卡,然后单击“自定义列”按钮,并像这样填充弹出窗口 window:
...然后单击“确定”。
随着时间的推移,重复的部分可以用变量来缩短一点。给定一些时间,这也可以变成一个函数。但我现在没时间,所以我想我至少给你 "something."
这是我之前的答案重温...设置使用函数。您只需为要重新格式化的每一列调用一次该函数。每次调用函数时,只需将要重新格式化的列的名称传递给函数即可。
创建一个新的空白查询:
在高级编辑器中打开新查询并突出显示其中的所有内容:
将其粘贴到高级编辑器中突出显示的文本上:
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 不同的新列名称。
- Function Query 是您正在调用的查询的名称(粘贴代码时刚刚创建的那个)...对我来说,它称为 Query1。
- 源列是包含您要设置格式的数字的列。
...然后单击“确定”。
您可以为每一列调用一次此函数。它将为每个创建一个新的格式化列。
对 PQ 很陌生,我很确定它可以满足我在这种情况下的需要,但我需要帮助弄清楚如何到达那里。
我有一份时间表报告,其中包含 20 列,涵盖 50 行,需要将其格式化为 word 文档以上传到单独的系统。单元格中的原始数据范围从 0 到任何负 2 位数字(例如:“-20”),但它们需要格式化为以“.00”结尾的七个字符集。
例子: 0 需要变成“0000.00” -4 需要变成“-004.00” -25 需要变成“-025.00”
我想我应该可以使用text.insert函数,但我对M语言还不够熟悉,无法让它做我想做的事。
任何solutions/suggestions?
您可以在 PQ 中使用此公式 = Text.PadStart(Text.From([Column1]),4,"0")&".00")
添加看起来与您的需求相似的新列。
这是公认的 "busy" 公式:
= 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 中开始。它创建一个新列...自定义...带有格式化的结果。
要进行尝试,请从已填充并加载到 Power Query 中的 Column1 开始;然后单击“添加列”选项卡,然后单击“自定义列”按钮,并像这样填充弹出窗口 window:
...然后单击“确定”。
随着时间的推移,重复的部分可以用变量来缩短一点。给定一些时间,这也可以变成一个函数。但我现在没时间,所以我想我至少给你 "something."
这是我之前的答案重温...设置使用函数。您只需为要重新格式化的每一列调用一次该函数。每次调用函数时,只需将要重新格式化的列的名称传递给函数即可。
创建一个新的空白查询:
在高级编辑器中打开新查询并突出显示其中的所有内容:
将其粘贴到高级编辑器中突出显示的文本上:
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 不同的新列名称。
- Function Query 是您正在调用的查询的名称(粘贴代码时刚刚创建的那个)...对我来说,它称为 Query1。
- 源列是包含您要设置格式的数字的列。
...然后单击“确定”。
您可以为每一列调用一次此函数。它将为每个创建一个新的格式化列。