根据范围输出匹配的值

根据范围输出匹配的值

我有一个带有两个标签的电子表格:一个是来自 Adwords 活动的搜索词数据,另一个是文本片段列表。

我想使用一个函数来检查搜索词是否包含

搜索词标签

+-----------------------------+--------+------+
|         Search term         | Clicks | Cost |
+-----------------------------+--------+------+
| nike running shoes          |     50 | $31  |
| soccer cleats               |     30 | $40  |
| lace up boots               |     40 | $45  |
| spikeless adidas golf shoes |     20 | $15  |
| red/blue converse classics  |     15 | $20  |
| flyknit nike for men        |     25 | $30  |
+-----------------------------+--------+------+

文本片段选项卡

nike
adidas
converse

我想在第一个选项卡中添加一列,以从每个搜索词旁边的文本片段选项卡中输出匹配的值。

输出结果如下:

+-----------------------------+--------+------+--------------+
|         Search term         | Clicks | Cost | matched term |
+-----------------------------+--------+------+--------------+
| nike running shoes          |     50 | $31  | nike         |
| soccer cleats               |     30 | $40  |              |
| lace up boots               |     40 | $45  |              |
| spikeless adidas golf shoes |     20 | $15  | adidas       |
| red/blue converse classics  |     15 | $20  | converse     |
| flyknit nike for men        |     25 | $30  | nike         |
+-----------------------------+--------+------+--------------+

我尝试在某个范围内使用搜索函数:=SEARCH(tab2!A1:A63,A2)但我得到了#VALUE!

答案1

根据我对您问题的理解,我建议采用以下解决方案。在此示例中,搜索词位于名为 tab1!C3:F8 的工作表中。片段文本字符串位于 tab2!C3:C5 中。

现在在 F3 中输入以下公式,然后在公式栏中按 CTRL + SHIFT + ENTER 创建数组公式。公式应括在花括号中以表明它是一个数组公式,然后将其沿表格长度向下拖动。为了使其工作,您应该在碎片字符串表列表上方留出一个单元格,即在 tab2 表中的第 2 行开始碎片列表

=IF(MIN(IF(ISERROR(SEARCH('tab2'!$C$3:$C$5,C3)),9^99,ROW('tab2'!$C$3:$C$5)-ROW('tab2'!$C$2)))<9^99,INDEX('tab2'!$C$3:$C$5,MIN(IF(ISERROR(SEARCH('tab2'!$C$3:$C$5,C3)),9^99,ROW('tab2'!$C$3:$C$5)-ROW('tab2'!$C$2)))),"")

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

更新:

如果您使用的是 Google 电子表格,同样的公式也适用。按 CTRL + SHIFT + ENTER 可将公式包装在函数名 ArrayFormula 中。参见下面的屏幕截图。

在此处输入图片描述

答案2

包含Sheet1搜索词和Sheet2片段,考虑以下用户定义函数:

Public Function GetKeyWord(s As String, rng As Range) As String
    Dim s2 As String, r As Range
    s2 = LCase(" " & s & " ")

    GetKeyWord = ""

    For Each r In rng
        If InStr(1, s2, " " & r.Value & " ") > 0 Then
            GetKeyWord = r.Value
            Exit Function
        End If
    Next r
End Function

在此处输入图片描述

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

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要从 Excel 使用 UDF:

=我的函数(A1)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

相关内容