отмечены значения пон вторник
отфильтровало 4 строки
пон 50
пон 40
вторник 50
вторник 30
накладываю фильтр на второй столбц только 50
показыват 2 строки
пон 50
вторник 50
как программно получить все видимые значения второй колонки без учета включеного отбора второй колонки
тоесть получить массив 50 40 50 30 ?
Если именно "программно", а под этим обычно понимается макрос. То схема такая. Берем значения фильтра. Отключаете фильтр на столбце, берете таблицу в массив, отбираете в массиве нужные. Включаете фильтр обратно. Выгружаете на лист собранные из массива. Понятно изложил?
так и планировал, не могу найти как отключить фильтр на столбец ?
Той же командой, что и включить, только без параметров.
критрии наложил пользователь попробую .Range(.AutoFilter.Range.Address).AutoFilter Field:=TargetCell.Column надюсь критерии не изчезнут
Set tmpFilterColumn = ActiveSheet.AutoFilter.Filters(TargetCell.Column) If tmpFilterColumn.On Then filterArray(1) = tmpFilterColumn.criteria1 If tmpFilterColumn.Operator <> xlFilterValues Then filterArray(2) = tmpFilterColumn.Operator filterArray(3) = tmpFilterColumn.criteria2 End If End If .Range(.AutoFilter.Range.Address).AutoFilter Field:=TargetCell.Column Set TopCells = .Cells(HeaderRow + 1, TargetCell.Column) Set EndCells = .Cells(ActiveSheet.AutoFilter.Range.Rows.Count + HeaderRow - 1, TargetCell.Column) Set Rng = ActiveSheet.Range(TopCells, EndCells).SpecialCells(xlCellTypeVisible) ReDim arrData(1 To Rng.Cells.Count, 1 To 1) For Each rCell In Rng.Cells If rCell.EntireRow.Hidden = False Then i = i + 1 arrData(i, 1) = rCell.Value End If Next rCell If filterArray(2) <> xlFilterValues Then .Range(.AutoFilter.Range.Address).AutoFilter Field:=TargetCell.Column, criteria1:=filterArray(1), Operator:=filterArray(2), criteria2:=filterArray(3) Else .Range(.AutoFilter.Range.Address).AutoFilter Field:=TargetCell.Column, criteria1:=filterArray(1), Operator:=xlFilterValues End If
сохранил значения критерием, потом применил их.
Обсуждают сегодня