Excel Countif с подстановочными знаками в массиве поиска - PullRequest
0 голосов
/ 10 октября 2018

Я искал некоторое время, но похоже, что все примеры, которые я нахожу, являются противоположностью того, что мне нужно.Есть много способов проверить, соответствует ли строка с подстановочными знаками какому-либо из значений в массиве, но мне нужно пойти другим путем - мне нужно, чтобы массив содержал подстановочные знаки, и проверить, соответствует ли строка в целевой ячейке какой-либо изстроки соответствия в массиве, но строки соответствия могут содержать подстановочные знаки.

Чтобы поместить это в контекст, я анализирую большие файлы журнала, и есть много строк, которые я хочу игнорировать (но не удалять);поэтому у меня есть вспомогательный столбец:

+---+-------+----------------------------------------+----------------------------+
|   |  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.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 10 октября 2018

Используйте ПОИСК, который разрешает поиск подстановочных знаков, внутри SUMPRODUCT:

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

enter image description here


Чтобы использовать COUNTIF, необходимо повернуть вспятькритерии и упаковка в SUMPRODUCT:

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

enter image description here

...