背景
我正在使用 Excel 2013。
我有一个名为的 Excel 表SiteCategories
,其中包含多个类别列,然后在这些列中包含站点,如下所示:
所以我们可以使用以下方法获取这些值=SiteCategories[Category1]
我还有一个 URL 列表——完整的 URL 如下http://www.sitea.com/page/page.html
我想做什么
对于那个巨大的 URL 列表,我希望在它们旁边显示列,表明它们属于 A 类还是 B 类,如下所示:
我希望匹配不区分大小写,因为 URL 未标准化。但是,如果这样更方便,我可以处理字段或将它们包装起来,lower()
尽管我认为这个过程也可以做到这一点。
我被困的地方
我可以对一段文本进行匹配和搜索,但在对一系列文本进行匹配和搜索时却遇到了困难。
本质上我想说的是,如果在 URL 中找到给定类别列中的任何一段文本(不区分大小写),那么该 URL 就属于该类别。
但是,大多数MATCH
和SEARCH
函数似乎不能轻松支持查询一系列值。
好像我想做相反的事情这个问题——而该解决方案使用一个术语上的通配符在多个单元格中查找它,我想使用多个单元格文本作为针对一个字符串的通配符,如果其中任何一个为真,则返回 true。
我现在怎么做
目前,我使用的公式是一个OR
使用一堆SEARCH
公式的语句,如下所示(F3
带有 URL 的单元格在哪里):
=OR(ISNUMBER(SEARCH("sitea.com",F3)), ISNUMBER(SEARCH("siteb.com",F3)),ISNUMBER(SEARCH("sitec.com",F3)), ISNUMBER(SEARCH("sited.com",F3)),ISNUMBER(SEARCH("sitee.com",F3)))
但是,这有点站不住脚,因为对哪些网站归入哪些类别的要求会随着时间而变化。我希望能够将它们放入表格中,以便于编辑,这就是问题所在。
答案1
您可以使用通过 ctrl+shift+enter 输入的数组公式。搜索不区分大小写,所以应该没问题。
=OR(IFERROR(SEARCH(SiteCategories[Category1],A2),0))
这里设置了处理表格中空行,感谢 Kyle 在评论中提供的建议。
=OR(IFERROR(IF(SiteCategories[Category2]<>"",SEARCH(SiteCategories[Category2],A2),0),0))