问题描述
嗨,我知道可以在这里找到很多类似的问题,但我仍然面临这个问题: 我有一个表,其中有一列名为 Dates,其中一些值如下所示:
12/2/2021
11/2/2021
10/2/2021
9/2/2021
8/2/2021
7/2/2021
6/2/2021
5/2/2021
2021/4/2
2021/3/2
2/2/2021
1/2/2021
31/01/21
30/01/21
当我尝试通过选择类别为日期或添加自定义类别为 dd/mm/yy 使用格式单元格转换它时,excel 将 dd/mm/YYYY 值视为 mm/dd/yy。 例如,excel 不会将第一行视为 2 月 12 日,而是将其视为 12 月 2 日。
我还尝试通过转到 DATA 并将其设置为 DMY 将文本转换为列,但它没有解决问题。
非常感谢任何帮助。
解决方法
假设:
- 所有日期最初都是 DMY
- 您的 Windows 区域设置短日期格式是 MDY
您需要转换为正确的日期
- 如果值为文本,则为 DMY 格式,您可以提取部分并转换为日期
- 如果数值为数字,则表示转换不正确,需要将月和日部分反转
鉴于这些假设,以下公式应该有效。
我正在使用 Excel Office 365 Windows 版本中提供的 LET
和 FILTERXML
函数。
如果您没有那个版本的 Excel,您仍然可以使用公式来执行此操作,但它会更复杂。或者您可以使用 VBA。
=IFERROR(DATE(YEAR(A1),DAY(A1),MONTH(A1)),LET(x,FILTERXML("<t><s>" & SUBSTITUTE(A1,"/","</s><s>")& "</s></t>","//s"),DATE(INDEX(x,3)+IF(INDEX(x,3)<30,2000),INDEX(x,2),1))))
,
试试这个公式:
= DATE( YEAR(A1),MONTH(A1) )
如果值有任何 space
字符,试试这个:
= DATE( YEAR(TRIM(A1)),DAY(TRIM(A1)),MONTH(TRIM(A1)) )