将包含日期的文本拆分为列

时间:2021-04-09 10:56:17

标签: excel office365 powerquery conditional-formatting

问题:Excel 能够识别日期,例如,如果您编写 01-Jan-2021,excel 会将其转换为 01/01/2021。是否可以使用电源查询以某种方式使用它作为一种分隔符来从单元格中分割日期?

到目前为止:目前我使用冒号作为分隔符,效果很好,但当然如果不小心遗漏了,那么日期将不会与其余数据分开。

如果没有这个,是否可以从单元格中包含的其他数据中自动分割日期和时间等?

替代解决方案? 不确定这是否可行,但替代方案是否可以应用一些条件格式,以便所有日期后跟一个冒号?问题在于,由于单元格包含其他文本,因此不会被识别为日期。这通常也可能是一个问题,但如果需要使用电源查询,我可以根据需要拆分数据

图片显示了我想要实现的目标

enter image description here

1 个答案:

答案 0 :(得分:1)

省略任何自定义代码,您可以相当简单地从界面执行此操作

通过换行符拆分成行

重复列

将新列上的数据类型转换为日期,然后右键单击列并将错误替换为 null

复制第二列并右键单击它并向下填充;您现在有 3 列

过滤第二列=空,如果需要,原始列<>空白

删除第二列

这是一个 2 分钟的操作,但生成的代码是:

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Column1", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.None), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column1"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1", type text}}),
#"Duplicated Column" = Table.DuplicateColumn(#"Changed Type1", "Column1", "Column1 - Copy"),
#"Changed Type2" = Table.TransformColumnTypes(#"Duplicated Column",{{"Column1 - Copy", type date}}),
#"Replaced Errors" = Table.ReplaceErrorValues(#"Changed Type2", {{"Column1 - Copy", null}}),
#"Duplicated Column1" = Table.DuplicateColumn(#"Replaced Errors", "Column1 - Copy", "Column1 - Copy - Copy"),
#"Filled Down" = Table.FillDown(#"Duplicated Column1",{"Column1 - Copy - Copy"}),
#"Filtered Rows" = Table.SelectRows(#"Filled Down", each ([#"Column1 - Copy"] = null) and ([Column1] <> "")),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Column1 - Copy"})
in #"Removed Columns"