繁体   English   中英

MS Excel 公式:使用范围列表从文本中查找和删除多个匹配项

[英]MS Excel Formula: Find & Remove Multiple Matches from Text using Range List

使用 MS Excel 公式,我想要一个公式,该公式将在单元格 (B2) 中搜索以查找在范围 (A2:A63 列) 中找到的任何/所有特定匹配关键字,并从字符串 (B2) 中删除多个关键字,只留下剩余文本。

我试图使用和调整下面提供的公式,但没有成功。 它确实从文本中删除了一个但不是多个(所有)关键字。 不确定这是否有帮助或可以修改以执行任务。

=TRIM(SUBSTITUTE(B2,INDEX($A$2:$A$63,IF(ISNA(MATCH(FALSE,ISERR(FIND($A$2:$A$63,B2)),FALSE)),0,MATCH(FALSE) ,ISERR(FIND($A$2:$A$63,B2)),FALSE)),1)," "))

关键字列表(A2:A63 列)
会心
这是
不是
没有

文本数据(单元格 B2):
我们不知道莎莉去了哪里,但这不是她第一次离开我们。
注意:这是实际的文本字符串。

提取的关键字(单元格 C2):
结果:没有,知道,这个,但是,有,有,她,我们
注意:这是使用的公式: =TEXTJOIN(", ",TRUE,TRIM(IF(ISERR(FIND(""&$A$2:$A$63&"",B2)),"",$A$2: 63 澳元)))

期望输出(单元格 D2):
结果:Sally 去的地方,不是第一次离开我们。
注意:输出仅提供 B2 中未在关键字列表 (A2:A63) 中找到的剩余文本字符串。

示例 MS Excel 从字符串中删除多个关键字

在此处输入图片说明

我将利用正则表达式使用用户定义函数 (UDF)。

我们从关键字列表构建一个正则表达式,然后使用Regex.Replace函数应用Regex.Replace

例如:

Option Explicit
Function remKeyWords(rkeyWordList As Range, sText As String) As String
    Dim RE As Object
    Dim sPat As String
    Dim v, w

v = rkeyWordList
For Each w In v
    If w <> "" Then _
       sPat = sPat & "|" & w
Next w

sPat = "\b(?:" & Mid(sPat, 2) & ")\b"

Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = True
    .Pattern = sPat
    .ignorecase = True
    remKeyWords = WorksheetFunction.Trim(.Replace(sText, ""))
End With

End Function

在下面,您可以将其用作:

D2: =remKeyWords($A$1:$A$1000,B2)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM