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

Excel 将包含日期的文本拆分为列,excel,office365,powerquery,conditional-formatting,Excel,Office365,Powerquery,Conditional Formatting,问题:Excel具有识别日期的功能,例如,如果您编写2021年1月1日,Excel会将其转换为2021年1月1日。是否可以使用power query以某种方式将其用作分隔符,从单元格中分割日期 到目前为止:目前,我使用冒号作为分隔符,效果很好,但如果意外漏掉,则日期与其余数据保持不变 如果没有此功能,是否可以从单元格中包含的其他数据中自动拆分日期和时间等 替代方案?不确定这是否可行,但替代方案是否可以应用一些条件格式,以便所有日期后面都带有冒号?问题是,由于单元格中包含其他文本,因此无法将其识别

问题:Excel具有识别日期的功能,例如,如果您编写2021年1月1日,Excel会将其转换为2021年1月1日。是否可以使用power query以某种方式将其用作分隔符,从单元格中分割日期

到目前为止:目前,我使用冒号作为分隔符,效果很好,但如果意外漏掉,则日期与其余数据保持不变

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

替代方案?不确定这是否可行,但替代方案是否可以应用一些条件格式,以便所有日期后面都带有冒号?问题是,由于单元格中包含其他文本,因此无法将其识别为日期。这通常也可能是一个问题,但如果有必要,我可以使用power query根据需要分割数据

图中显示了我正在努力实现的目标


省略任何自定义代码,您可以通过界面非常简单地执行此操作

按换行方式拆分为行

重复列

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

复制第二列,右键单击并填充;现在有3列

过滤第二列=空,如果需要,原始列为空

拆下第2列

这是一个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"
let Source=Excel.CurrentWorkbook(){[Name=“Table1”]}[Content],
#“按分隔符拆分列”=Table.ExpandListColumn(Table.TransformColumns(源代码,{{“Column1”,Splitter.SplitTextByDelimiter(“#(lf)”,QuoteStyle.None),让itemType=(type nullable text)meta[Serialized.text=true],在类型{itemType}}中,“Column1”),
#“Changed Type1”=Table.TransformColumnTypes(#“按分隔符拆分列”,{{{“Column1”,键入text}}),
#“复制列”=表.DuplicateColumn(#“已更改类型1”、“Column1”、“Column1-副本”),
#“Changed Type2”=Table.TransformColumnTypes(#“Duplicated Column”,{{{“Column1-Copy”,type date}),
#“替换错误”=Table.ReplaceErrorValues(#“Changed Type2”,{{“Column1-Copy”,null}),
#“Duplicated Column1”=表.Duplicated Column(#“替换错误”、“Column1-Copy”、“Column1-Copy-Copy”),
#“Filled Down”=Table.filledown(#“Duplicated Column1”,{“Column1-Copy-Copy”}),
#“筛选行”=表格。选择行(#“已填充”,每个([#“Column1-Copy”]=null)和([Column1]“”),
#“已删除的列”=Table.RemoveColumns(#“筛选行”,{“Column1-Copy”})
在#“已删除列”中

为什么不在换行符上拆分?[x] 在底部的特殊字符框中选择option@horseyride在换行符上拆分只会创建一列?我需要一些方法将日期分隔成独立的列,我明白了,实际上这是一种通过更改类型然后删除错误来区分日期的非常聪明的方法。