如何删除看起来像日期的任何内容

时间:2015-02-18 20:56:19

标签: excel

创建数据集时,我输入的数据非常糟糕。

背景:

特定的单元格有一些日期,字母和数字或一些随机的东西。我要提取的信息类似于" xxxxxIB"一个五位数后跟字母" IB"。但是经常这种类型的进入," IB"不在那里,还有其他各种东西。

对于这个问题:

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

典型的单元格可以采用以下任何格式显示。 ** \中的内容是我的评论:

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

因此,我的数据有时没有日期,有时会显示错误的日期,有时会显示正确的日期,但它可能是多种格式之一,并且可以与其他数据进行所有可想象的组合。

我的数据有一个日期列,所以我知道将要出现的日期(除非他们输入了错误的日期)。现在我已经写了八个不同的SUBSTITUTE命令来用空格替换某些格式的日期。

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

当数据输入过程错误地输入日期或奇怪地写入日期时,它显然不起作用。有一种聪明的方法可以让excel读取所有类似日期的对象并删除它们吗?

链接到完整数据:Here

1 个答案:

答案 0 :(得分:1)

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

<强> http://jsfiddle.net/w97hw10y/5/

(在Chrome中测试过。)

  1. 将您的数据粘贴到 HTML 框中。 (它默认为您帖子中的数据。)
  2. 点击运行
  3. 结果框复制/粘贴到Excel。
  4. 这是用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>');