首页 > 解决方案 > 将包含日期的文本拆分为列

问题描述

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

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

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

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

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

在此处输入图像描述

标签: exceloffice365powerqueryconditional-formatting

解决方案


省略任何自定义代码,您可以从界面相当简单地做到这一点

按换行符拆分成行

重复列

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

复制第二列并右键单击它并填写;你现在有 3 列

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

删除第二列

这是一个 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"

推荐阅读