Sub old() Dim cols As Integer cols = 3 'количество колонок автофильтра ' заголовки столбцов для наглядности For col = 1 To cols Cells(1, 2 + col).Value = Str(col) Next 'количество всех вариантов равно 2 в степени количества колонок 'т.о. для 3-х колонок надо перебрать 8 вариантов For i = 0 To 2 ^ cols - 1 Cells(3 + i, 1).Value = i ' номер варианта 'выбираем колонки для которых нужно включить фильтр для текущего варианта ' если 3 колонки то вариантов 2^3=8 ' первый 0 0 0 все без фильтра ' второй 1 0 0 фильтруем по первой ' третий 0 1 0 фильтруем по второй ' и т.д. For col = 0 To cols - 1 Cells(3 + i, 3 + col).Value = IIf(((i And 2 ^ col) = (2 ^ col)), 1, 0) ' 1 - фильтровать столбец, 0 - не фильтровать If ((i And 2 ^ col) = (2 ^ col)) Then ' проверяем надо ли включать фильтр колонки с номером 3+col ' надо включить фильтр для колонки с номером 3+col End If Next Next End Sub |