【问题标题】:Raw Excel Data contains different Date formats原始 Excel 数据包含不同的日期格式
【发布时间】:2014-10-24 11:37:17
【问题描述】:

我有大量按列分隔的原始数据。当我将这些导入到 Matlab 时,一切都很好,除了我刚刚看到 excel 文件包含不同格式的日期。

一个系列(即 3 天,1 行或每小时获得 3x24 行)的日期格式为“mm/dd/yyyy”,excel 或 matlab 都不能识别为正确的日期。

我尝试过以不同的方式解决这个问题。首先,我尝试仅突出显示单元格并使用函数format cells,但这不起作用,因为 excel 不会将它们视为“单元格”而是“文本”。

然后我尝试了Text to columns 函数,它也不起作用(定界或固定宽度)。

我真的被卡住了,希望能得到一些帮助。

【问题讨论】:

  • 您能否在问题中添加一些您拥有的每个案例的示例,以便我们提供帮助?
  • 你在使用text-to-columns时,是否也选择了日期格式为MDY?您是否确保没有任何部分被拆分为单独的列?这应该是处理问题的最简单方法,除非“/”不是真正的“/”,或者字符串中还有其他一些非 ASCII 字符。信息的来源是什么?
  • 是的,抱歉,这是一个示例表:filedropper.com/testheat97 目前我关心的是要将其导入 matlab,然后转换日期,以便它们都相关且相同,以便以后进行比较。

标签: matlab vba date excel


【解决方案1】:

在 Excel 中:

如果单元格A1 有一个类似mm/dd/yyyy 的字符串,那么试试这个:

=DATE(RIGHT(A1,4), LEFT(A1,2), MID(A1,4,2))

在 Matlab 中:

=datenum(yourDateString, 'mm/dd/yyyy')

【讨论】:

  • 有趣。我的专栏看起来像这个 atm; 10/21/2014 10/21/2014 10/21/2014 10/20/14 10/20/14 10/20/14 10/19/14 如您所见,其中一些变成了奇怪的格式。我希望它们都采用“dd/mm/yy”格式,但是当我使用 datenum 命令时,matlab 会将其转换为数字,我想这也不错。
  • @Emil call datestr 然后将其转换回您喜欢的格式的字符串
【解决方案2】:

选择需要修复的范围并使用此脚本:

Sub bulk_Date_fix()
    on error resume next
    Set d_ranged = Selection
    For Each a In d_ranged
        a.Value = Split(a.Value, "/")(0) & "/" & Split(a.Value, "/")(1) & "/" & Split(a.Value, "/")(2)
    Next
    on error goto 0
End Sub

工作原理:上述脚本循环遍历选定区域中的所有单元格,并根据“/”符号拆分出日期的各种属性。

【讨论】:

  • 谢谢迈克!我用你的脚本创建了一个按钮,我第一次按下它时似乎可以工作,但后来我再次按下它,它又恢复为原始格式。之后它也不起作用。我现在意识到,我坐在这里,用 excel 处理所有这些数据会很困难,所以我想我会尝试专注于 matlab 解决方案。非常感谢您的意见!
  • 欢迎您。奇怪的是它恢复了......我在同一个选定区域上运行了这个脚本几次并且修复保持不变。如果你想把你的电子表格发给我,我可以看看它为什么在第一次运行后会改变。
【解决方案3】:

我检查了您的文件,您需要返回源数据来解决这个问题。您需要导入文件,而不是在 Excel 中“打开”文件。当您这样做时,文本导入向导将打开,然后您可以将日期列指定为 DMY 格式(或源生成的任何格式)。

问题是文件格式与您的 Windows 区域短日期格式不匹配。如果您查看第 229 行,您会发现实际日期存在,但与其余日期不连续。

Excel 根据 Windows 区域短日期设置解析输入的日期。如果日期没有意义,根据该解析 (例如月份 > 12),Excel 会将日期解释为字符串;如果日期确实有意义,它将被解释为符合该 windows 区域日期组件顺序的日期,这将与预期的不同。

所以前几百个日期是字符串,但在第 229 行,日期(可能是 2014 年 10 月 12 日)被更改为 2014 年 12 月 10 日。这将发生在该值位于第二位的其他区域小于等于 12。

编辑:我不确定在 MAC 上使用 XL 所固有的可变性。在 Windows 版本的 XL 中,“文本导入”功能位于数据功能区/获取外部数据选项卡上:

当你点击它并打开一个文本文件时,你会看到文本导入向导,当你进入第 3 步时,你将能够指定要导入的数据的文本格式:

【讨论】:

  • 导入matlab?我试过这样做,但 matlab 遇到了同样的问题。另外我在 Mac 上,所以不太确定 Windows 区域短日期格式是什么以及它对我的影响,但也许我只是没有考虑清楚。
  • @Emil 不,正如我所写,导入到 Excel。我会编辑我的答案,告诉你在哪里。我不知道如何在 Mac 上设置相当于 Windows 短日期格式。
猜你喜欢
  • 2013-10-21
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多