向大家问好
如上所述,我只需要从日期(如(2023 年 12 月 14 日))中获取,从(2023 年 12 月 14 日 21:20:34)开始,=DATE(MID(J4,7,4), MID(J4,4,2), MID(J4,1,2))
但它并不适用于所有情况,如(2024 年 1 月 6 日 21:45)或(2024 年 1 月 1 日 20:18:59)
需要一些能处理所有情况的东西
答案1
日期时间在 Excel 中以数字形式存储,表示天数和一天的分数,其中1-Jan-1900
=1
如果您的值是“真实日期时间”而不是伪装成日期时间的文本字符串,那么您所需要的就是=INT(cell_ref)
将结果格式化为日期。
但是,由于您可能混合使用了字符串和“实际日期”,因此您的数据源可能是 CSV 文件,其中日期格式为DMY
,但您的 Windows 区域设置是MDY
。在这种情况下,Excel(不太有帮助)将尝试将其所能转换的内容转换为它认为的实际日期(将是不正确并将其余部分保留为字符串。
如果这是问题所在,那么最好的解决方法就是正确地进口Get & Transform
使用或 转换CSV 文件legacy wizard
。此时,您可以告诉 Excel 日期已全部完成DMY
,Excel 将会正确转换。
如果这不可能和/或您无权访问 CSV 文件,您可以通过以不同方式处理文本日期和实际日期将日期转换为应有的日期。
请注意,对于“实际日期”,我们会交换月份和日期,因为 Excel 会错误地转换这些日期。
假设使用最新版本的 Excel,由于您没有进行不同的标记,因此以下公式应该可以实现这一点:
B1: =LET(
parts, TEXTSPLIT(A1, {"/", " "}),
IF(
ISTEXT(A1),
DATE(
CHOOSECOLS(parts, 3),
CHOOSECOLS(parts, 2),
CHOOSECOLS(parts, 1)
),
DATE(YEAR(A1), DAY(A1), MONTH(A1))
)
)
答案2
答案3
例如,在单元格 A1 中正确输入的日期将允许另一个单元格仅显示日期,方式如下:
=TEXT(A1,"YYYY-MM-DD")
如果没有发生这种情况,那么 A1(在本例中)可能被格式化为文本,例如来自失败的粘贴或导入。
人们可能会认为这是一个完美的例子:“垃圾输入导致垃圾输出”。
建议:使用 ISO-8601 甚至 RFC-3339 格式作为日期格式的帮助,这样你的麻烦就会少很多。
注意:区域设置、区域设置可能会影响这一点,因为“YYYY”将依赖于设置。
(例如瑞典语区域 => “ÅÅÅÅ-MM-DD”)