【问题标题】:FIxing MS Excel date time format修复 MS Excel 日期时间格式
【发布时间】:2012-10-18 19:27:29
【问题描述】:

报告服务生成一个 csv 文件,并且某些列(奇怪的是)具有混合的日期/时间格式,一些行包含表示为 m/d/y 的日期时间,另一些则为 d.m.y

当应用 =TYPE() 时,它将返回 1 或 2(Excel 将识别文本或数字(Excel 时间戳))

如何将任何类型的错误日期时间格式转换为可以使用的“正常”格式并确保数据的一致性?

我现在正在考虑两种解决方案:

  • 我应该使用现有的 excel 函数以某种方式处理奇数数据
  • 我应该从一开始就要求正确生成报告,并首先避免这种麻烦

谢谢

【问题讨论】:

  • 你在正确的轨道上!首先尝试要点 2。如果失败,请编写一个公式来转换不需要的日期格式! Excel 对此有很多选择。
  • 如果您在记事本中打开 CSV 文件,日期是否不一致,还是在 Excel 中打开文件时会发生这种情况?可能是 Excel 预计日期为(例如)m/d/y,但您的文件的日期为 d/m/y。 Excel 将转换它可以转换的内容(当 "d"
  • Tim,我用记事本检查了 csv,它包含不同格式的行,m/d/y 和 d.m.y,这让我很担心

标签: excel csv


【解决方案1】:

当然,您的第二个选择是中长期的选择。但是,如果您现在需要解决方案,并且您可以使用支持 Perl 兼容正则表达式的文本编辑器(如 Notepad++、UltraEdit、EditPad Pro 等),则可以使用以下正则表达式:

(^|,)([0-9]+)/([0-9]+)/([0-9]+)(?=,|$)

m/d/y 格式搜索所有日期,用逗号括起来(或在行首/行尾)。

替换为

\1\3.\2.\4

你会得到d.m.y格式的日期。

【讨论】:

  • 你的两个解决方案都可以
【解决方案2】:

如果您无法更改数据,那么您可能不得不求助于翻译日期的另一列:(假设您要更改的日期在 A1 中)

=IF(ISERR(DATEVALUE(A1)),DATE(VALUE(RIGHT(A1,LEN(A1)-FIND(".",A1,4))),VALUE(MID(A1,FIND(".",A1)+1,2)),VALUE(LEFT(A1,FIND(".",A1)-1))),DATEVALUE(A1))

它测试它是否可以将文本读取为日期,如果失败,则将字符串截断,并将其转换为日期,否则它将尝试直接读取日期。无论哪种方式,它都应该将其转换为您可以使用的日期

【讨论】:

  • 你的两个解决方案都可以,但很遗憾我不能接受两个答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 2013-02-05
  • 2015-10-25
  • 1970-01-01
  • 2020-05-12
  • 2017-12-23
相关资源
最近更新 更多