1

细胞:Data!AA4

给定:2011 年 5 月 13 日上午 12:00,文本格式。

使用:

=(DATE((MID(Data!$AA4,8,4)),VLOOKUP(MID(Data!$AA4,1,3),Sheet3!$A$1:$B$12,2,FALSE),MID(Data!$AA4,5,2)))

返回:日期格式:2011 年 5 月 13 日

问:有没有更清洁的配方可以使用??

4

3 回答 3

0

你试过=DATEVALUE(AA4)吗?

也许排除时间部分=DATEVALUE(LEFT(AA4,LEN(AA4)-8))

于 2013-05-03T14:21:20.773 回答
0

@K_B 在正确的轨道上,但问题是您的日期不是 Excel 自动识别为日期的格式,因此DATEVALUE将返回#VALUE!.

这可以通过在原始日期文本中的日期之后插入逗号来纠正。

=DATEVALUE(LEFT(SUBSTITUTE(Data!AA4," ",", ",2),LEN(Data!AA4)-7))

这将返回 Excel 用于日期计算的序列化数字日期值。如果单元格格式设置为所需的格式(“dd-mmm-yy”),这应该会给你你想要的。

如果您想避免使用单元格格式来显示数据,您可以将整个内容包装在一个TEXT()函数中并在那里指定您的格式。输出仍然适用于日期计算。

=TEXT(DATEVALUE(LEFT(SUBSTITUTE(A1," ",", ",2),LEN(A1)-7)),"dd-mmm-yy")
于 2013-05-03T15:45:45.023 回答
0

你需要为一个单元格的文本内容做顺序。

  1. 提取年份:=MID(AA4;8;4)
  2. 提取月份(单元格中的文本):=LEFT(AA4;3)
  3. 提取日期:=MID(AA4;5;2)
  4. 做并找到月份的匹配数字:
    =IF(LEFT(AA4;3)="Jan";1;IF(LEFT(AA4;3)="Feb";2;IF(LEFT(AA4;3)="Mar";3;IF(LEFT(AA4;3)="Apr";4;IF(LEFT(AA4;3)="May";5;IF(LEFT(AA4;3)="Jun";6;IF(LEFT(AA4;3)="Jul";7;IF(LEFT(AA4;3)="Aug";8;IF(LEFT(AA4;3)="Sep";9;IF(LEFT(AA4;3)="Oct";10;IF(LEFT(AA4;3)="Nov";11;IF(LEFT(AA4;3)="Dec";12))))))))))))
  5. 转换为日期:
    =DATE(MID(AA4;8;4);IF(LEFT(AA4;3)="Jan";1;IF(LEFT(AA4;3)="Feb";2;IF(LEFT(AA4;3)="Mar";3;IF(LEFT(AA4;3)="Apr";4;IF(LEFT(AA4;3)="May";5;IF(LEFT(AA4;3)="Jun";6;IF(LEFT(AA4;3)="Jul";7;IF(LEFT(AA4;3)="Aug";8;IF(LEFT(AA4;3)="Sep";9;IF(LEFT(AA4;3)="Oct";10;IF(LEFT(AA4;3)="Nov";11;IF(LEFT(AA4;3)="Dec";12))))))))))));MID(AA4;5;2))
  6. 一个公式和格式日期:
    =TEXT(DATE(MID(AA4;8;4);IF(LEFT(AA4;3)="Jan";1;IF(LEFT(AA4;3)="Feb";2;IF(LEFT(AA4;3)="Mar";3;IF(LEFT(AA4;3)="Apr";4;IF(LEFT(AA4;3)="May";5;IF(LEFT(AA4;3)="Jun";6;IF(LEFT(AA4;3)="Jul";7;IF(LEFT(AA4;3)="Aug";8;IF(LEFT(AA4;3)="Sep";9;IF(LEFT(AA4;3)="Oct";10;IF(LEFT(AA4;3)="Nov";11;IF(LEFT(AA4;3)="Dec";12))))))))))));MID(AA4;5;2));"dd-MMM-yyyy")

单元格格式不是字符串。格式化日期。

于 2013-05-03T15:16:23.327 回答