Excel:没有嵌套且没有VBA的多个替代

时间:2015-02-09 15:44:17

标签: excel substitution

我的单元格中包含要删除的数据。细胞通常如下所示:

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)然后也问它忽略大写,然后只是替换东西?

我尝试在函数替换的第二个参数中引用$ M $ 1:$ M $ 100列,但它无效。

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

M栏包含" alm" alm1",...," alm100"等

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

Excel具有糟糕的字符串处理功能。正则表达式可以使这项任务变得更加容易。

在JavaScript中,它很简单:

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

这是一个全局(g)不区分大小写的(i)搜索所有内容:

     
  • 0或更多空格  
  • 后跟“alm”(无论如何)  
  • 后跟一个或多个数字  
  • 后跟0或更多空格

您可以将数据粘贴到此小提琴的 HTML 框中,它会修复它:

<强> http://jsfiddle.net/xs71bvan/2/