Страницы: 1
RSS
Перенос в массив выделенного диапазона ячеек, Сформировать список для другого автофильтра.
 
Доброй ночи!

Прошу прощения, но эта тема мной уже затрагивалась, но только список был в именованном диапазоне. Сейчас просто получается не именованный список, по которому нужно сформировать отбор во втором автофильтре. Для более понятного объяснения - прилагаю файл ... с неработающим файлом.
У меня не получается перевести полученные ячейки в понимаемый фильтром формат.

Вся работа осуществляется в Excel 2007 или более поздних версиях.

С уважением,
ПАХОМ.
Спокойствие - величайшее проявление силы.
 
Прочитал 2 раза, посмотрел файл.
Ничего не понял.

что значит «сформировать отбор в автофильтре»?
Автофильтр (обратите внимание на приставку «авто») формирует список критериев автоматически,
из значений ячеек в столбце.
А вы хотите, чтобы значения ячеек и список значений в фильтре отличались?

PS: Если данные считаны в двумерный массив, отфильтровать значения в нем можно при помощи этой функции:
http://excelvba.ru/code/arrautofilter
 
Здравствуйте, EducatedFool!

Макрос должен делать:
на Лист2 отбираются значения, у которых проставлены единицы (или просто ячейки не пустые);
на этом же листе (Лист2) получаем в первом столбце подходящие коды
на Лист1 нужно отобрать фильтром только значения, которые равны кодам. Т.е. отображаться после работы макроса на Лист1 только цифра 1 и 3, поскольку на Лист2 в столбце "выбор" единицы стоят только у этих цифр.
Спокойствие - величайшее проявление силы.
 
Цитата
список был в именованном диапазоне. Сейчас просто получается не именованный список
А какая разница - перебирать именованный или указанный "координатами" ячеек?
 
Здравствуйте, Юрий М!

Перебор более долгая процедура. Вот и мучаюсь с массивом :)
Спокойствие - величайшее проявление силы.
 
получилось пока только циклом ... всем доброго сна! :)

Код
Sub Test2()
  Dim iArray()
  Dim m As Range
  Dim i As Integer

  Sheets("Лист2").Range("$A$1:$B$4").AutoFilter Field:=2, Criteria1:="<>"
  Set m = Sheets("Лист2").Range("A2:A4").SpecialCells(xlCellTypeVisible)

  ReDim iArray(1 To m.Cells.Count)
  
  For i = 1 To m.Cells.Count
    iArray(i) = CStr(m.Cells(i))
  Next i

  Лист1.Range("A2:A7").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues
  
End Sub
Спокойствие - величайшее проявление силы.
Страницы: 1
Наверх