答案1
字符串与数字
Excel 正在解释你的一些日期一些是文本字符串,一些是数字。源数据是问题的根源,在导出之前修复该问题将消除您的问题。但是,如果您想在事后清理格式混合,则可以使用公式将文本字符串转换为正确的日期。
假设
这些假设适用于以字符串形式存储的日期。您的实际日期将遵循应用于单元格的任何格式。
- 这天,月和年以斜线分隔/
- 这月和天先于年
mm/dd/yy
或者dd/mm/yy
- 月和天可以是一个或两个字符
2/8
或02/8
或2/08
等等。 - 这年可以是 2 个或 4 个字符
12/21/2022
,或者12/21/22
A | 乙 | C | 德 | |
---|---|---|---|---|
1 | 显示 | 实际价值 | 已转换 | 格式化 |
2 | 2020 年 12 月 27 日 | 44192 | 44192 | 20/12/27 0:00 |
3 | 2020 年 12 月 20 日 | 44185 | 44185 | 2020 年 12 月 20 日 0:00 |
4 | 19/12/20 04:23:48 | 19/12/20 04:23:48 | 44184.18319 | 20/12/19 4:23 |
5 | 13/09/20 03:46:16 | 13/09/20 03:46:16 | 44087.15713 | 2020-09-13 3:46 |
6 | 20/09/13 | 20/09/13 | 44087 | 2020 年 9 月 13 日 0:00 |
7 | 13/9/20 05:51:10 | 13/9/20 05:51:10 | 44087.24387 | 2020 年 9 月 13 日 5:51 |
8 | 2020/09/13 06:19:27 | 2020/09/13 06:19:27 | 44087.26351 | 2020-09-13 17:19 |
换算公式
如果显示的值是数字,则使用最小测试来接受它date
,否则重新排列日期和月份。它不知道也不关心原始顺序和新顺序实际上是什么,只是会翻转它们。
在上面的样表的单元格 $C$2 中:
=BYROW(A2:A8, LAMBDA(x, IFERROR(x*1,
TEXTJOIN("/",, INDEX(TEXTSPLIT(x,"/"),1,2),
INDEX(TEXTSPLIT(x,"/"),1,1),
INDEX(TEXTSPLIT(x,"/"),1,3))*1)))
上述示例表中的 C 列和 D 列具有相同的值。C 列的格式为十进制数,D 列的格式为任意日期/时间格式。