有些日期被识别为日期,有些日期不被识别。为啥?

Posted

技术标签:

【中文标题】有些日期被识别为日期,有些日期不被识别。为啥?【英文标题】:Some dates recognized as dates, some dates not recognized. Why?有些日期被识别为日期,有些日期不被识别。为什么? 【发布时间】:2011-06-07 08:23:48 【问题描述】:

以下是日期列表:

11 年 4 月 22 日 2011 年 12 月 19 日 11-04-11 12-08-11 09-27-11 09-27-11 04-01-11

当您在 Excel 中复制此列表时,其中一些被识别为日期,而另一些则不被识别为日期,方式如下:

11 年 4 月 22 日 2011 年 12 月 19 日 11-04-11(日期) 12-08-11(日期) 09-27-11 09-27-11 04-01-11(日期)

有人知道为什么吗?以及如何强制 Excel 将所有列表项识别为日期?

非常感谢!

【问题讨论】:

Google 表格:我通过更改文件/电子表格设置中的日期格式/选择适合的国家/地区解决了这个问题。 【参考方案1】:

这是由 Excel 自动识别/格式化单元格内容引起的,但方式不清楚/不一致。 修复它并不难......

查看此论坛帖子:

http://www.pcreview.co.uk/forums/excel-not-recognizing-dates-dates-t3139469.html

简单的步骤:

    仅选择“日期”列 点击数据 > 文本到列 点击下一步 点击下一步 在向导的第 3 步中,选中 Col 数据格式下的“日期”,然后 从下拉列表中选择:“DMY”。 点击完成

【讨论】:

如果这个技巧只适用于完整的日期/时间值,而不仅仅是日期。 太棒了 - 在这里节省了我很多时间! 7 年后,你像 snap 那样结束了我的挫败感!谢谢! :) 只是为了让您知道您仍在帮助那些遇到 excel 挫折的人!谢谢【参考方案2】:

当我尝试在 Excel 中转换为澳大利亚日期格式时遇到了这个问题。我用分隔符拆分单元格并使用拆分单元格中的以下代码然后更改问题区域。

=date(dd,mm,yy)

【讨论】:

【参考方案3】:

这是对我有用的 mm/dd/yyyy 格式:

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

将包含公式的单元格转换为日期格式并向下拖动公式。

【讨论】:

【参考方案4】:

最简单的解决方案是将 yy,mm,dd 放入 date() 公式中,首先使用 left()mid()right() 提取它们。在这种情况下,假设您输入的日期在 A1 中:

=date(right(A1,2)+100,left(A1,2),mid(A1,4,2))

以上解释:

=right(A1,2) 获取单元格中的最后两位数字 (yy)。我们添加 100,因为它默认为 1911 而不是 2011(如果你的没有这样做,则省略 +100)

=left(A1,2) 获取单元格中的前两位数字 (mm)。

=mid(A1,4,2) 在单元格中间获得 2 位数字,从第 4 位数字 (dd) 开始。

为什么会发生这种情况:

我在将加拿大银行数据导入excel时一直遇到这个问题。简而言之,您输入的日期格式与您的区域设置不匹配。

您的设置似乎意味着 Excel 希望将日期输入为 DD-MM-YY 或 YY-MM-DD,但您的输入数据格式为 MM-DD-YY。

因此,excel 将您的日期视为月份,反之亦然,这意味着任何低于 12 天的日期都将被识别为日期,但错误的日期(月份和日期颠倒)和任何高于 12 天的日期都不会根本无法识别为日期,因为 Excel 将日期视为第 13 个月以上。

不幸的是,您不能只更改格式,因为 Excel 已经将这些日/月分配锁定在适当的位置,您最终只是在视觉上移动 Excel 认为的天和月,而不是重新分配它们。

坦率地说,令我惊讶的是,excel 中没有日期反转工具,因为我认为这种情况一直都在发生。但是上面的公式很简单。

注意:如果您的日期没有前导零(即 4/8/11 与 04/08/12),它会变得更棘手,因为您必须根据日期提取不同数量的数字(即 4/9/ 11 与 2011 年 4 月 10 日)。然后,您必须在公式中构建几个 if 语句。毛。

【讨论】:

【参考方案5】:

这对我有用。我用我所有的日期突出显示了该列。在“数据”选项卡下,我选择了“文本到列”并选择了“分隔”框,然后点击下一步并完成。尽管看起来没有任何变化,但 Excel 现在将该列读取为日期,并且我能够按日期排序。

【讨论】:

感谢这是最简单的解决方法【参考方案6】:

解决此问题的最快和最简单的方法是使用相同的分隔符对日期分隔符进行查找和替换。 例如在这种情况下,查找“-”并替换为“-”,不确定为什么会这样,但您会发现所有日期都是右对齐的,因为它们应该在这样做之后。

【讨论】:

【参考方案7】:

这是由您计算机的区域设置引起的。

当您将数据粘贴到 Excel 中时,它只是一堆字符串(不是日期)。

Excel 中有一些逻辑可以识别您当前的数据格式以及一些类似的日期格式或明显的日期格式,它可以假定它是一个日期。当它能够将您粘贴的数据与有效日期匹配时,它会将其格式化为所在单元格中的日期。

您的具体示例是由于您的日期列表格式为“m/d/yy”,这是美国格式。它可以正确粘贴到我的 Excel 中,因为我的区域设置设置为“美国英语”(即使我是加拿大人 :))

如果您的系统设置为加拿大英语/法语格式,那么它将预期“d/m/yy”格式并且无法识别月份大于 13 的任何日期。

将包含日期的数据导入 excel 的最佳方法是以这种格式复制它。

2011-04-22
2011-12-19
2011-11-04
2011-12-08
2011-09-27
2011-09-27
2011-04-01

即“yyyy-MM-dd”,这种格式在我见过的每台计算机上的识别方式都相同(通常称为 ODBC 格式或标准格式),其中单位总是从最大到最小重量( "yyyy-MM-dd HH:mm:ss.fff") 另一个副作用是它会正确排序为字符串。

为避免来回交换您的区域设置,您可以考虑在 excel 中编写一个宏来粘贴数据。一个简单的弹出格式和一些重新格式化日期的基本逻辑不会太难。

【讨论】:

在谷歌表格上:您“只”需要更改文件/电子表格设置中的日期格式/选择适合的国家/地区。 非常感谢,经过数小时的反复试验,yyyy-MM-dd 为我工作。【参考方案8】:

解决此问题的方法是临时更改您的区域设置,以便 CSV 导入文件的日期格式与区域设置“匹配”。

Open Office 似乎以类似的方式解决该问题,请参阅:http://www.oooforum.org/forum/viewtopic.phtml?t=85898

【讨论】:

【参考方案9】:

在您的情况下,它可能采用 DD-MM-YY 格式,而不是 MM-DD-YY。

【讨论】:

【参考方案10】:

右键单击列标题并选择格式化单元格,选择日期并选择所需的日期格式。那些无法识别的内容是模棱两可的,因此不会被解释为任何内容,但在将格式应用于列后会得到解决。请注意,对我来说,在 Excel 2002 SP3 中,上面给出的日期在粘贴时会自动正确地解释为日期。

【讨论】:

不幸的是,在对列应用日期格式后,“不明确”的日期没有得到解决。 您可能需要在“控制面板”中更改 Windows 区域设置,并可能需要重新启动。不过,这可能会导致其他数据出现问题。 您能否通过将帖子中的日期复制/粘贴到新工作表中来复制问题?是这样,哪个版本的Excel?我认为应该可以选择区域设置中给出的日期格式以外的日期格式...无需开始修改系统首选项。 尝试将列格式化为数字。 Excel 将日期存储为数字(例如,在 Excel 中,几乎所有情况下 2011 年 1 月 11 日都是 40554*) 保留为字符串的任何内容都不会被识别为日期。您可能还有一个问题,您的日期以 dd/mm/yy 格式而不是 mm/dd/yy 格式解释。如果您的 11-04-11 显示为 40664,则为 4 月 11 日;如果显示为 40851,则为 11 月 4 日。最好使用明确的格式,例如 2011-04-11(4 月 11 日)或 2011-11-04(11 月 4 日)。 *Workbook 的 Date1904 属性会影响这一点

以上是关于有些日期被识别为日期,有些日期不被识别。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

字符串格式未被识别为有效的日期时间格式[关闭]

字符串“04/28/2021 04:25p”未被识别为有效的日期时间

DatePicker 绑定到 DateTime。 “字符串未被识别为有效的日期时间”

c# datetime.parseexact 字符串未被识别为有效的日期时间 [重复]

为啥巡更系统的通讯日期和巡检日期不一致

尝试使用linq过滤数据时,字符串未被识别为有效的DateTime