Попробуй это.Сначала установите следующую таблицу данных на листе 1
A B C D
a1 b1 c1 d1
a2 b2 c2 d2
a3 b3 c3 d3
a4 b4 c4 d4
a5 b5 c5 d5
Создайте именованную область «Набор дат» A2: D6.Поместите фильтр в таблицу, скройте столбец B и отфильтруйте таблицу, чтобы показать только первую строку.
Теперь протестируйте следующий код в наборе данных:
Sub DataCopy()
Dim r
For Each r In Names("Dateset").RefersToRange.Rows
r.Copy Worksheets(2).Range("a65536").End(xlUp).Offset(1, 0)
Next
End Sub
Я получаю следующий результат:
a1 c1 d1
a2 b2 c2 d2
a3 b3 c3 d3
a4 b4 c4 d4
a5 b5 c5 d5
Без фильтра я получаю (как и ожидалось):
a1 b1 c1 d1
a2 b2 c2 d2
a3 b3 c3 d3
a4 b4 c4 d4
a5 b5 c5 d5
Можете ли вы помочь мне получить все данные - также из видимой строки?
Пс.Я также попытался:
Dim c as Range
For Each c In Range("A2", Range("A6")).Cells
Range(c, c.End(xlToRight)).Copy Worksheets(2).Range("A65536").End(xlUp).Offset(1, 0)
c.EntireRow.Copy Worksheets(2).Range("A65536").End(xlUp).Offset(1, 0)
Range(c, c.Offset(0, 5)).Copy Worksheets(2).Range("A65536").End(xlUp).Offset(1, 0)
Next
, но безуспешно ... Я проверял в Excel 2007 и 2010.