Range.AutoFilter - значения, содержащие строку - PullRequest
0 голосов
/ 28 апреля 2020

Используя надстройку Excel VSTO, я применяю фильтр к столбцу для нескольких значений:

string[] filterTerms = { "this", "is", "sample", "text" };
Range range = Application.ActiveWorkbook.ActiveSheet.UsedRange;
range.AutoFilter(5, filterTerms, XlAutoFilterOperator.xlFilterValues, Type.Missing, true);

Но что мне действительно нужно, так это фильтр "Содержит". Возьмите следующий список:

  1. Привет не появляется
  2. Это появляется
  3. Образец появляется тоже
  4. Текст тоже

Из них я бы хотел отфильтровать 2/3/4, потому что каждый из них содержит слово из массива filterTerms.

Есть ли способ выполнить sh, не прибегая к VBA?

1 Ответ

0 голосов
/ 29 апреля 2020

Решение (на данный момент) - ограничить критерии поиска двумя значениями. Для этого я добавил подстановочные знаки к указанным выше критериям:

range.AutoFilter(nameIndex, $"*{filterTerm1}*", XlAutoFilterOperator.xlFilterValues, string.IsNullOrEmpty(filterTerm2) ? Type.Missing : $"*{filterTerm2}*", true);

Изучив более продвинутые варианты, я натолкнулся на AdvancedFilter, но для этого необходимо создать Range значений и из того, что я могу скажите, что включает в себя запись значений на листе. Это будет выглядеть примерно так:

range.AdvancedFilter(XlFilterAction.xlFilterInPlace,criteriaRange, nameOfARangeOfCriteria);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...