发布网友 发布时间:2022-05-02 18:50
共5个回答
热心网友 时间:2022-06-26 01:14
用powerquery【Excel2016及以上版本自带,即“数据”选项卡的相关命令】:
上面截图只是把原始数据加载到powerquery然后把日期列格式改为【日期】格式,就识别出了绝大部分日期模式,只有【25 8 2018】这样的格式需要用powerquery做进一步处理。
最后处理的代码如下:
let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
复制的列 = Table.DuplicateColumn(源, "日期", "原始数据"),
按分隔符拆分列 = Table.SplitColumn(Table.TransformColumnTypes(复制的列, {{"日期", type text}}, "zh-CN"), "日期", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"日期.1", "日期.2", "日期.3"}),
更改的类型 = Table.TransformColumnTypes(按分隔符拆分列,{{"日期.2", Int64.Type}}),
已添加自定义 = Table.AddColumn(更改的类型, "自定义", each if [日期.2]<=12 then Text.From([日期.3])&"/"&Text.From([日期.2])&"/"&Text.From([日期.1]) else [日期.1]),
已替换的错误 = Table.ReplaceErrorValues(已添加自定义, {{"自定义", "error"}}),
已添加自定义1 = Table.AddColumn(已替换的错误, "结果", each if [自定义]="error" then [日期.1] else [自定义]),
更改的类型1 = Table.TransformColumnTypes(已添加自定义1,{{"结果", type date}}),
删除的其他列 = Table.SelectColumns(更改的类型1,{"结果"})
in
删除的其他列
如果还有其他日期模式,得再根据这些模式调整powerquery代码。
注意,对于没有年的日期,默认是今年。
追问谢谢!也谢谢Stcxj老师!采纳不了那么多人,谢谢大家的意见!感谢!谢谢!也谢谢Stcxj老师!采纳不了那么多人,谢谢大家的意见!感谢!
热心网友 时间:2022-06-26 01:15
如果日期是全而且每个人的规律是固定的话,是可以处理的。可以把每种习惯都判断一下,然后进行判断。热心网友 时间:2022-06-26 01:15
你的日期格式也太乱了!
看我的设置操作吧:
B1公式为:
=IF(ISNUMBER(A1),TEXT(A1,"yyyy-m-d"),SUBSTITUTE(A1," ","-"))
就因为“25 8 2018”的格式问题才用那么费事。要不然用低版本两步就可以搞定。
我用2003版本演示给你看:
你已经采纳答案结束提问。算了!当我没说。
热心网友 时间:2022-06-26 01:16
通过筛选,把同类的日期一起处理,根据具体情况可以手动添加缺少的年或日,可以用替换法将点换成斜扛等。热心网友 时间:2022-06-26 01:17
很难处理,有些只描述了年月。只能补上日期如“1日”。这样日期精度也不统一,对后期数据处理的实际效果产生影响。只有去除只含年月的数据才有意义。