首页 > 解决方案 > Excel Countif 在搜索的数组中带有通配符

问题描述

我已经搜索了一段时间,但看起来我找到的所有示例都与我需要的相反。有很多方法可以查看带有通配符的字符串是否与数组中的任何值匹配,但我需要另辟蹊径 - 我需要数组包含通配符,并检查目标单元格中​​的字符串是否匹配任何匹配数组中的字符串,但匹配字符串可以包含通配符。

把它放在上下文中,我正在解析大型日志文件,我希望忽略很多行(但不删除);所以我有一个帮助栏:

+---+-------+----------------------------------------+----------------------------+
|   |  A    |    B                                   |  C  (filter for = FALSE)   | Requirement
+---+-------+----------------------------------------+----------------------------+
| 1 | 11:00 | VPN Status                             | =COUNTIF(IgnoreList,B1)>0  + Keep
| 2 | 11:05 | Log at event index 118, time index 115 | =COUNTIF(IgnoreList,B2)>0  + Ignore
| 3 | 11:20 | Log at event index 147, time index 208 | =COUNTIF(IgnoreList,B3)>0  + Ignore
+---+-------+----------------------------------------+----------------------------+

我试图将通配符放在我的 IgnoreList 范围内以捕获任何“事件记录”行:

+--------------------------------------+
| IgnoreList                           +
+--------------------------------------+
| State Runtime 1                      + 
| State Runtime 2                      +
| State Runtime 3                      +
| State Runtime 4                      +
| Log at event index *, time index *   + 
+--------------------------------------+

...但这不起作用。

有谁知道如何根据包含通配符的数组检查单元格?

到目前为止,我的 IgnoreList 有 60 个条目,因此单独测试每个单元格实际上并不可行。我可以在日志中有 30,000 个或更多条目,因此单独的测试将比我希望使用的公式多得多。当我向 IgnoreList 添加条目时,我也不想编辑公式。

谢谢你的帮助!

标签: excelexcel-formulawildcardcountif

解决方案


在 SUMPRODUCT 中使用允许通配符查找的 SEARCH:

=SUMPRODUCT(--ISNUMBER(SEARCH(IgnoreList,B1)))>0

在此处输入图像描述


要使用 COUNTIF,需要反转标准并包含在 SUMPRODUCT 中:

=SUMPRODUCT(COUNTIF(B1,IgnoreList))>0

在此处输入图像描述


推荐阅读