从字符串中删除:Excel中列中出现的所有单词

从字符串中删除:Excel中列中出现的所有单词,excel,Excel,我已经找到了解决这个问题的方法——但我很难想象没有比我现在拥有的更简单的解决方案了 让我们假设在A列中,我有一个单元格,里面有以下单词 A1: Until A2: I A3: The A4: Have 在B1单元,我有一句话: "Until further notice, I have closed the Icecream store" 在单元格C1中,我希望它返回: "Further Notice, Closed Icecream Store" 目前,我一直在反复使用=SUBSTITU

我已经找到了解决这个问题的方法——但我很难想象没有比我现在拥有的更简单的解决方案了

让我们假设在A列中,我有一个单元格,里面有以下单词

A1: Until
A2: I
A3: The
A4: Have
在B1单元,我有一句话:

"Until further notice, I have closed the Icecream store"
在单元格C1中,我希望它返回:

"Further Notice, Closed Icecream Store"
目前,我一直在反复使用=SUBSTITUTE()函数,如下所示:

=PROPER(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1, $A$1, ""), $A$2, ""),$A$3, ""), $A$4, ""))
然而,有了这个公式,“冰激凌”中的“I”将被删除,而公式本身将不得不变得非常长,以便容纳A列中的数百个单元格

我发现的另一个同样笨拙的选项是,在单元格B1上使用=SPLIT()函数将字符串的每个单词分隔到它自己的单元格中(单元格C1:Z1),然后使用:

=IF(ISNUMBER(SEARCH(C1,$A$1:$A,1)),"",C1)
=IF(ISNUMBER(SEARCH(D1,$A$1:$A,1)),"",D1)
等等

在单元格AA1:AZ1中删除不需要的单词。最后在单元格BA1中,使用a=CONCATENATE()公式将所有单元格重新组合到所需字符串中。这个公式也会与“Icecream”中的“I”有问题,因此我发现唯一的解决方法是在A列中的每个单词前后加空格,并在B1中的字符串前后加空格

我很好奇,是否有更好的方法来解决这个问题,既不需要写一篇文章长的公式,也不需要使用数千个单元格和公式来分隔每个单词并单独检查

谢谢

泰勒

考虑以下UDF()

例如:

因为比较是区分大小写的,所以我在A列中包含了小写和小写

用户定义函数(UDF)非常易于安装和使用:

  • ALT-F11将显示VBE窗口
  • ALT-I ALT-M打开一个新模块
  • 粘贴内容并关闭VBE窗口
  • 如果保存工作簿,则自定义项将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    要删除UDF,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要使用Excel中的自定义项,请执行以下操作:

    =nojunk(B1,A1:A8)
    
    要了解有关宏的更多信息,请参阅:

    有关自定义项的详细信息,请参见:

    考虑以下UDF():

    例如:

    因为比较是区分大小写的,所以我在A列中包含了小写和小写

    用户定义函数(UDF)非常易于安装和使用:

  • ALT-F11将显示VBE窗口
  • ALT-I ALT-M打开一个新模块
  • 粘贴内容并关闭VBE窗口
  • 如果保存工作簿,则自定义项将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    要删除UDF,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要使用Excel中的自定义项,请执行以下操作:

    =nojunk(B1,A1:A8)
    
    要了解有关宏的更多信息,请参阅:

    有关自定义项的详细信息,请参见:


    使用googlesheets
    REGEXREPLACE
    JOIN
    函数,示例正则表达式可以是:

    (?i)\b(Until|I|Have|The)\b
    
    其中,
    (?i)
    是忽略大小写标志,
    \b
    是单词边界,
    ()
    是捕获组

    =PROPER(TRIM(REGEXREPLACE(B1, "(?i)\b(" & JOIN("|", A1:A4) & ")\b", "")))
    
    Trim
    功能还可以删除单词之间的额外空格。 Excel 2016有函数,但还没有正则表达式函数(可以使用VBA UDF)


    MicrosoftWord具有类似但有限的模式匹配,但在Word中加入该模式将非常具有挑战性。示例通配符替换Word中的模式:
    使用Google Sheets
    REGEXREPLACE
    JOIN
    函数,示例正则表达式可以是:

    (?i)\b(Until|I|Have|The)\b
    
    其中,
    (?i)
    是忽略大小写标志,
    \b
    是单词边界,
    ()
    是捕获组

    =PROPER(TRIM(REGEXREPLACE(B1, "(?i)\b(" & JOIN("|", A1:A4) & ")\b", "")))
    
    Trim
    功能还可以删除单词之间的额外空格。 Excel 2016有函数,但还没有正则表达式函数(可以使用VBA UDF)


    MicrosoftWord具有类似但有限的模式匹配,但在Word中加入该模式将非常具有挑战性。示例通配符替换Word中的模式:

    如果少于约10个您知道要删除的唯一单词,您可以复制该列,按住Ctrl+H组合键,不使用任何内容查找/替换该单词,然后重复,直到您将其全部删除。

    如果您知道要删除的单词少于10个左右,您可以复制该列,按住Ctrl+H组合键,不使用任何内容查找/替换该单词,然后重复,直到您将其全部删除。

    您到底想实现什么?您描述的是您所做的,但不是理想的预期结果。使用Google Sheets
    REGEXREPLACE
    JOIN
    功能更容易,如果这是一个选项的话。Google Sheets中的
    REGEXREPLACE
    似乎是一个非常简单的选项。您能否详细说明如何将其用于“正则表达式”的多个输入?您到底想要实现什么?您描述的是您所做的,但不是理想的预期结果。使用Google Sheets
    REGEXREPLACE
    JOIN
    功能更容易,如果这是一个选项的话。Google Sheets中的
    REGEXREPLACE
    似乎是一个非常简单的选项。您能否详细说明如何将其用于“正则表达式”的多个输入?这是完美的。非常感谢你。除了单词之外,是否可以将其与符号(*&%\-.”和数字一起使用?@TylerSobel Mason啊是的,作为RE2语法一部分的特殊标点字符必须用“\”转义(例如“\(”)但是对于数字应该没有转义。数字必须转换为文本,但是我认为
    Join
    函数会