[英]MS Excel: Find First Occurrence of Specific Text within a String Using Column Range List
[英]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.