Comment supprimer tout ce qui ressemble à une date

J'ai des données très mal inputs lorsque l'set de données a été créé.

Le context:

Une cellule particulière a une date, des lettres et un nombre ou des éléments randoms. L'information que je souhaite extraire ressemble à "xxxxxIB" un chiffre à cinq numbers suivi des lettres "IB". Mais souvent ce type d'input n'est pas là, le "IB" n'est pas là et toutes sortes d'autres choses sont là.

Pour cette question:

Parfois, une date apparaît dans différents formats que je souhaite supprimer de la cellule. Juste pour simplifier ma vie, pour les débutants.

Une cellule typique pourrait apparaître dans n'importe lequel des formats ci-dessous. Les choses dans ** sont mes commentaires:

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 *\ 

Donc, mes données n'ont parfois pas de date, parfois la mauvaise date apparaît, et parfois la bonne date apparaît, mais elle pourrait se find dans l'un des nombreux formats et dans toutes les combinaisons imaginables avec d'autres données.

Mes données ont une colonne de date afin que je sors à quelle date apparaîtra (sauf si elles ont écrit la mauvaise date). En ce moment, j'ai écrit huit commands SUBSTITUTE différentes pour replace certains formats de dates par des espaces.

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

Cela ne fonctionne évidemment pas lorsque le process de saisie des données est entré dans la date incorrectement ou écrit la date étrangement. Existe-t-il un moyen intelligent d'get l'excellence pour lire tous les objects de date et les supprimer?

Lien vers datatables complètes: ici

J'ai créé un violon qui fonctionne avec la plupart de vos données:

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

(Testé dans Chrome.)

  1. Collez vos données dans la zone HTML . (Il est par défaut datatables dans votre publication.)
  2. Cliquez sur Exécuter .
  3. Copiez / collez dans la zone Résultat dans Excel.

Ceci a été écrit en JavaScript et jQuery. Voici la source:

 $('body').text($('body').text().sortingm()); 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.toSsortingng()==='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.toSsortingng()==='Invalid Date') continue; } } else continue; } var dt= new Date(val); if(dt.toSsortingng()!=='Invalid Date') { data[i]= data[i].replace(d[j],'') + '<td> '+dt.toLocaleDateSsortingng(); } } } $('body').html('<table><tr><td>'+data.join('<tr><td>')+'</table>');