Excel:多个替代,不嵌套和没有VBA

我有我想要删除的数据的单元格。 单元格通常如下所示:

alm1 105430_65042M 1993_5689IB ALM99 3455 344C 0001_4555Alm5 

一些但不是全部的单元格包含像“almj”的文本,其中“j”是一个正整数。 我想删除那部分。 我想要输出如下所示:

 105430_65042M 1993_5689IB 3455 344C 0001_4555 

所以像这样的工作

 SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"alm1",""),"ALM99",""),"Alm5","") 

但是对于我的全部数据集,我需要这个数百深的嵌套函数,因为我的“alm”有时是大写字母,有时不是,整数可以在1到100之间变化。这似乎是一个痛苦的方法这个。

有没有一种方法可以告诉它查找列中列出的文本(所以我可以在不同的表中列出一个从alm,alm1,…,alm100开始的列),然后让它忽略大小写然后只是取代东西?

我试着在函数replace的第二个参数中引用一个$ M $ 1:$ M $ 100的列,但它不工作。

 SUBSTITUTE(A2,$M$1:$M$100,"") 

列M包含“alm”alm1“,…,”alm100“等

这应该适用于您,它会返回您提供的示例数据的预期结果:

 =IF(COUNTIF(A2,"*alm*")=0,A2,TRIM(SUBSTITUTE(A2&" ",MID(A2&" ",SEARCH("alm",A2),FIND(" ",A2&" ",SEARCH("alm",A2))),""))) 

Excel具有糟糕的string处理能力。 正则expression式会使这个任务变得更容易。

在JavaScript中,它就像下面这样简单:

 string.replace(/ *alm[0-9]+ */gi,'') 

这对全局(g)不区分大小写(i)search所有内容:

  • 0或更多空格
  • 其次是“阿尔姆”(无论如何)
  • 随后是一个或多个号码
  • 接着是0或更多的空格

你可以在这个小提琴的HTML框中粘贴你的数据,它会修复它:

http://jsfiddle.net/xs71bvan/2/