Excel:无嵌套和无VBA的多重替换

Excel:无嵌套和无VBA的多重替换,excel,substitution,Excel,Substitution,我有一些单元格,其中包含要删除的数据。这些单元格通常如下所示: alm1 105430_65042M 1993_5689IB ALM99 3455 344C 0001_4555Alm5 105430_65042M 1993_5689IB 3455 344C 0001_4555 某些但并非所有单元格都包含“almj”之类的文本,其中“j”是正整数。我想去掉那个部分。我希望输出如下所示: alm1 105430_65042M 1993_5689IB ALM99 3455 344C 0001_45

我有一些单元格,其中包含要删除的数据。这些单元格通常如下所示:

alm1 105430_65042M
1993_5689IB
ALM99 3455 344C
0001_4555Alm5
105430_65042M
1993_5689IB
3455 344C
0001_4555
某些但并非所有单元格都包含“almj”之类的文本,其中“j”是正整数。我想去掉那个部分。我希望输出如下所示:

alm1 105430_65042M
1993_5689IB
ALM99 3455 344C
0001_4555Alm5
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”等时,

这应该适用于您,它返回了您提供的样本数据的预期结果:

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

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

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

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

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

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

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

Excel的字符串处理能力很差。正则表达式会使这项任务更容易

在JavaScript中,它非常简单:

string.replace(/ *alm[0-9]+ */gi,'')
这将执行全局(g)不区分大小写(i)搜索所有内容,包括:

  • 0个或多个空格
  • 后跟“alm”(在任何情况下)
  • 后跟1个或多个数字
  • 后跟0或更多空格
您可以将数据粘贴到此小提琴的HTML框中,它将修复数据:


Excel的字符串处理能力很差。正则表达式将使这项任务更容易

在JavaScript中,它非常简单:

string.replace(/ *alm[0-9]+ */gi,'')
这将执行全局(g)不区分大小写(i)搜索所有内容,包括:

  • 0个或多个空格
  • 后跟“alm”(在任何情况下)
  • 后跟1个或多个数字
  • 后跟0或更多空格
您可以将数据粘贴到此小提琴的HTML框中,它将修复数据:


Excel的字符串处理能力很差。正则表达式将使这项任务更容易

在JavaScript中,它非常简单:

string.replace(/ *alm[0-9]+ */gi,'')
这将执行全局(g)不区分大小写(i)搜索所有内容,包括:

  • 0个或多个空格
  • 后跟“alm”(在任何情况下)
  • 后跟1个或多个数字
  • 后跟0或更多空格
您可以将数据粘贴到此小提琴的HTML框中,它将修复数据:


Excel的字符串处理能力很差。正则表达式将使这项任务更容易

在JavaScript中,它非常简单:

string.replace(/ *alm[0-9]+ */gi,'')
这将执行全局(g)不区分大小写(i)搜索所有内容,包括:

  • 0个或多个空格
  • 后跟“alm”(在任何情况下)
  • 后跟1个或多个数字
  • 后跟0或更多空格
您可以将数据粘贴到此小提琴的HTML框中,它将修复数据:


谢谢!!效果非常好!如果有人想出另一种方法来解决这个问题,我会将接受保留一天。谢谢!我确实编辑了公式,使其更短、更精简,尽管执行过程仍然相同谢谢!!效果非常好!如果有人出现问题,我会将接受保留一天用另一种方法来解决这个问题。谢谢!我确实编辑了公式,使其更短、更精简,尽管执行过程仍然相同谢谢!!效果很好!如果有人想出另一种方法来解决这个问题,我会将accept保留一天。谢谢!我确实编辑了公式,使其更短、更精简,尽管cution仍然是相同的谢谢!!效果很好!我将把accept保留一天,以防有人想出另一种方法来解决这个问题。谢谢!我确实编辑了公式,使它更短、更精简,尽管执行仍然相同