文本stringdate转换

单元格: 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))) 

返回:date格式的13-May-11

问:是否有可用于清洁剂的配方?

你有没有试过=DATEVALUE(AA4)

也许排除timepart =DATEVALUE(LEFT(AA4,LEN(AA4)-8))

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

  1. 提取年份: =MID(AA4;8;4)
  2. 提取月份(单元格中的文本): =LEFT(AA4;3)
  3. 提取当天: =MID(AA4;5;2)
  4. 做和find几个月的匹配数字:
     =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:
     =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. 一个公式和格式date:
     =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") 

单元格格式不是string。 格式date。

@K_B在正确的轨道上,但问题是您的date不是Excel自动识别为date的格式,所以DATEVALUE将返回#VALUE!

这可以通过在原始date文本中插入一天后的逗号来解决。

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

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

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

 =TEXT(DATEVALUE(LEFT(SUBSTITUTE(A1," ",", ",2),LEN(A1)-7)),"dd-mmm-yy")