单元格: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)))
返回:日期格式为13-May-11
问题:是否有可以使用的更清洁的配方?
答案 0 :(得分:0)
你试过=DATEVALUE(AA4)
吗?
可能会按=DATEVALUE(LEFT(AA4,LEN(AA4)-8))
答案 1 :(得分:0)
您需要这样做才能获得单元格的文本内容。
=MID(AA4;8;4)
=LEFT(AA4;3)
=MID(AA4;5;2)
=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))))))))))))
=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))
=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")
单元格格式不是字符串。格式化日期。
答案 2 :(得分: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")