Я видел несколько разных решений для того, чтобы обойти ограничение в 2 символа подстановки для фильтров в Excel (в частности, ответ опубликован здесь , но мне было трудно понять, что они делают. Работа вокруг меняпопытаться реализовать это просто посчитать количество экземпляров каждого критерия в ячейке, используя базовую формулу счетчика, и если оно равно 0, то макрос скроет строку.
With ws1
ColumnOne = .Cells(1, .Columns.Count).End(xlToLeft).Column
LastRow = .Cells(.Rows.Count, lastColumn).End(xlUp).Row
ColumnTwo = ColumnOne - 1
If ws2.Application.WorksheetFunction.CountA("D47:D61") <> 0 Then
For i = 1 To LastRow
If .Cells(i, ColumnTwo).Value = 0 Then
.Rows(i).EntireRow.Hidden = True
End If
Next i
ElseIf ws2.Application.WorksheetFunction.CountA("E47:E61") <> 0 Then
For i = 1 To LastRow
If .Cells(i, ColumnOne).Value = 0 Then
.Rows(i).EntireRow.Hidden = True
End If
Next i
Else
Exit Sub
End If
End With
Приведенный выше код - это то, что яЯ использую, чтобы справиться с этим. Для справки, есть две колонки критериев на отдельном рабочем листе (ws2), которые могут измениться / быть полностью пустыми. Код выше затем проверяет, с каким из этих столбцов он должен работать (D наws2 использует ColumnTwo на ws1, E на ws2 использует ColumnOne на ws1), просматривая, какой из них не пустой, а затем начинает проверять столбец на ws1 строка за строкой, чтобы увидеть, присутствует ли какой-либо из критериев.(значение ячейки = 0), тогда он должен скрыть эту строку.
Проверка на использование D или E, похоже, не работаетING.Даже если все ячейки в D47: D61 на ws2 пусты, он все равно работает в операторе if вместо перехода на E47: E61.Любые идеи относительно того, что я должен попытаться изменить здесь?