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】:你可以使用try
otherwise
来处理这两种数据类型:
= 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 - 替换新列中的文本的主要内容,如果未能解决你的问题,请参考以下文章