Power Query - 替换新列中的文本

Posted

技术标签:

【中文标题】Power Query - 替换新列中的文本【英文标题】:Power Query - replacing text in a new column 【发布时间】:2018-12-12 11:11:23 【问题描述】:

我是 Excel 中 Power Query 的新手,我的问题是:

我有一个日期格式为“09-Feb-17 A”的文本列。要删除文本“A”并在新列(自定义列?)中填充日期信息,我使用了以下代码:

= Table.AddColumn(#"Changed Type", "Start Date", each Replacer.ReplaceText([Start], " A",""))

问题是某些日期格式正确,即没有“A”。对于那些日期,我得到一个错误:

Expression.Error: 我们无法将值 #date(2019, 1, 11) 转换为 键入文本。细节: 价值=11/01/2019 类型=类型

有没有办法在电源查询中解决这个问题?

提前致谢。

【问题讨论】:

【参考方案1】:

你可以使用tryotherwise来处理这两种数据类型:

= Table.AddColumn(#"Changed Type", "Start Date", each try Date.FromText(Replacer.ReplaceText([Start], " A","")) otherwise DateTime.Date([Start]), type date)

或者这个,它将提取第一个空格之前的日期,而不管后面是哪个(或多少)字符:

= Table.AddColumn(#"Changed Type", "Start Date", each try Date.FromText(Text.BeforeDelimiter([Start], " ")) otherwise DateTime.Date([Start]), type date)

【讨论】:

【参考方案2】:

也许

将列数据类型更改为Text(日期 --> 日期时间) 提取space之前的字符串部分 可选将列数据类型更改为Date
let
    Source = Excel.CurrentWorkbook()[Name="Table1"][Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,"Dates", type text),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Text.BeforeDelimiter([Dates]," ")),
    #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom","Custom", type date),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1","Dates")
in
    #"Removed Columns"

【讨论】:

感谢 Ron,但无法让它工作 - 显然是由于我的知识有限。

以上是关于Power Query - 替换新列中的文本的主要内容,如果未能解决你的问题,请参考以下文章

从 Power Query 中的单元格值中提取数据类型?

Power Query 根据另一列转换一列

在自定义列中编辑简单运算公式(Power Query 之 M 语言)

Power Query - 用零替换负数

Power Query - 在组函数中计算列中的非空白

如何从 Power Query 的不同表中的 2 列中获取数据以汇总为 1 列?