Excel:在单元格中搜索多个术语并返回找到的值

时间:2018-04-20 16:03:19

标签: excel excel-formula excel-2010

我正在尝试扫描列并搜索单元格内的术语。 找到这些术语中的任何一个后,将找到的术语放在另一个单元格中。

这些术语在命名范围内,我将其称为“namedrangeOfApps”,超过400行。

这就是我现在所拥有的,但我没有返回TRUE,而是想返回找到的实际值。

 =SUMPRODUCT(--ISNUMBER(SEARCH({"namedrangeOfApps"},G2)))>0 

单元格的示例可以是:

“Microsoft.Office.v.21”在这种情况下,如果找到Microsoft和/或Office“将找到的条目放在另一个Cell中,而不是仅放置TRUE。

Source of original solution

2 个答案:

答案 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","")

enter image description here

虽然它确实显得有些蛮力"但它很容易理解,并且如果存在多个关键字,则会返回多个关键字。

修改#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

enter image description here

它可以处理非常大的关键字列表,如果多次返回之间需要分隔符,则很容易更改。

答案 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