我正在尝试扫描列并搜索单元格内的术语。 找到这些术语中的任何一个后,将找到的术语放在另一个单元格中。
这些术语在命名范围内,我将其称为“namedrangeOfApps”,超过400行。
这就是我现在所拥有的,但我没有返回TRUE,而是想返回找到的实际值。
=SUMPRODUCT(--ISNUMBER(SEARCH({"namedrangeOfApps"},G2)))>0
单元格的示例可以是:
“Microsoft.Office.v.21”在这种情况下,如果找到Microsoft和/或Office“将找到的条目放在另一个Cell中,而不是仅放置TRUE。
答案 0 :(得分:1)
使用单元格 A1 中的文字尝试:
=IF(ISNUMBER(SEARCH("Office ",A1)),"Office","") & IF(ISNUMBER(SEARCH("Adobe ",A1)),"Adobe","") & IF(ISNUMBER(SEARCH("google ",A1)),"google","") & IF(ISNUMBER(SEARCH("Microsoft ",A1)),"Microsoft","")
虽然它确实显得有些蛮力"但它很容易理解,并且如果存在多个关键字,则会返回多个关键字。
修改#1:强>
这是一个小的用户定义函数。它的参数是被搜索的单元格和关键字列表(在示例中,它是名为&#34的命名范围; mikee"列 C ):
Option Explicit
Public Function RetrieveKeys(rin As Range, KeyList As Range) As String
Dim s As String, r As Range
s = rin(1).Text
RetrieveKeys = ""
For Each r In KeyList
If InStr(1, s, r.Value) > 0 Then RetrieveKeys = RetrieveKeys & r.Value
Next r
End Function
它可以处理非常大的关键字列表,如果多次返回之间需要分隔符,则很容易更改。
答案 1 :(得分:0)
尝试
=IFERROR(INDEX({NamedRange1},MATCH(TRUE,ISNUMBER(SEARCH({NamedRange1},A10)),0)),"")
或
=IFERROR(INDEX({"microsoft", "google", "apple"},MATCH(TRUE,ISNUMBER(SEARCH({"microsoft", "google", "apple"},A10)),0)),"")
这很好用
参考...
Searching for multiple text strings in a MS Excel cell and return the same string when found