如何删除看起来像date的东西

当数据集创build时,我input的数据很差。

语境:

一个特定的单元格有一些date,字母,数字或一些随机的东西。 我想提取的信息看起来像一个五位数字“xxxxxIB”,后面跟着字母“IB”。 但是这种types的入口往往不在那里,“IB”不在那里,其他各种东西都在那里。

对于这个问题:

有时date会以我想从单元格中删除的各种格式显示。 只是为了简化我的生活,对于初学者来说。

一个典型的单元格可能会出现在以下任何一种格式中。 **中的内容是我的评论:

A1 ALM 03/09/2014 45099IB \* mm/dd/yyy format *\ ALM45099IB 03092014 \* mmddyyyy *\ ALM111-3/09/2014 \*m\dd\yyyy *\ 45099IB_30914 \* mmdyy *\ 45099IB-030914 \* mmddyy *\ ALM_30914 \* mddyy *\ alm5 03914 alm6 031114 \*wrong date entered *\ 03092014alm_1 \* date first then other stuff *\ 223LA \* No date at all *\ alm 0309214 \* writing year 2014 as 214 *\ 

所以我的数据有时没有date,有时会出现错误的date,有时会显示正确的date,但是它可能是许多格式中的一种,以及与其他数据的所有可能的组合。

我的数据有一个date列,所以我知道会出现什么date(除非他们input错误的date)。 现在我已经写了八个不同的SUBSTITUTE命令来用空白replace某些格式的date。

 =SUBSTITUTE(A2,TEXT(B2,"mm/dd/yyyy"),"") 

当数据录入过程错误地inputdate或奇怪地写入date时,它显然不起作用。 是否有一个聪明的方法来获得Excel读取所有类似date的对象,并删除它们?

链接到完整的数据: 在这里

我创build了一个可以处理大部分数据的小提琴:

http://jsfiddle.net/w97hw10y/5/

(在Chrome中testing)

  1. 将数据粘贴到HTML框中。 (它默认为您的文章中的数据。)
  2. 点击运行
  3. 结果框复制/粘贴到Excel中。

这是用JavaScript和jQuery编写的。 这是来源:

 $('body').text($('body').text().trim()); var data= $('body').text().split('\n'); for(var i = 0 ; i < data.length ; i++) { var d= data[i].split(/[ \-_]/g); for(var j = 0 ; j < d.length ; j++) { var val= d[j]; if($.isNumeric(val)) { if(val.length===8) { val= val.substr(0,2)+'/'+val.substr(2,2)+'/'+val.substr(4); } else if(val.length===6) { val= val.substr(0,2)+'/'+val.substr(2,2)+'/20'+val.substr(4); } else if(val.length===5) { val= val.substr(0,1)+'/'+val.substr(1,2)+'/20'+val.substr(3); var dt= new Date(val); if(dt.toString()==='Invalid Date') { val= d[j]; val= val.substr(0,2)+'/'+val.substr(2,1)+'/20'+val.substr(3); var dt= new Date(val); if(dt.toString()==='Invalid Date') continue; } } else continue; } var dt= new Date(val); if(dt.toString()!=='Invalid Date') { data[i]= data[i].replace(d[j],'') + '<td> '+dt.toLocaleDateString(); } } } $('body').html('<table><tr><td>'+data.join('<tr><td>')+'</table>');