我有一个带有两个标签的电子表格:一个是来自 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) 非常容易安装和使用:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
要删除 UDF:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 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
必须启用宏才能使其工作!