修正MS Excel日期时间格式

修正MS Excel日期时间格式,excel,csv,Excel,Csv,报表服务生成一个csv文件,某些列(奇怪的是)具有混合的日期/时间格式,一些行包含以m/d/y表示的日期时间,其他行包含以d.m.y表示的日期时间 当apply=TYPE()时,它将返回1或2(Excel将识别文本或数字(Excel时间戳)) 如何将任何错误的日期时间格式转换为可以使用的“正常”格式,并确保数据的一致性 目前我正在考虑两种解决方案: 我应该用现有的excel函数处理这些奇怪的数据 我应该要求从一开始就正确生成报告,并从一开始就避免这种麻烦 谢谢当然,从中长期来看,你的第二个选

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

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

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

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

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

谢谢

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

(^|,)([0-9]+)/([0-9]+)/([0-9]+)(?=,|$)
m/d/y
格式搜索所有日期,并用逗号包围(或在行首/行尾)

换成

\1\3.\2.\4

您将获得格式为
d.m.y

的日期。如果您无法更改数据,则可能需要使用另一列来转换日期:(假设您要更改的日期为A1)


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

您走在正确的轨道上!先试试要点2。如果失败,请编写一个公式来转换不需要的日期格式!Excel对此有很多选项。如果在记事本中打开CSV文件,日期是否不一致,或者在Excel中打开文件时是否会发生这种情况?Excel可能希望日期为(例如)m/d/y,但您的文件的日期为d/m/y。Excel将转换它所能转换的内容(当“d”Tim时,我使用记事本检查csv,它包含不同格式的行,m/d/y和d.m.y,这让我担心,您的两个解决方案都可以,您的两个解决方案都可以,但不幸的是,我不能接受两个答案
=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))