Отбор данных в Excel провели с помощью фильтра или сортировки. Теперь их нужно распечатать или перенести в другое место. Копирование в Excel настроено так, что копируются и скрытые ячейки.
Рассмотрим два способа, к ак копировать отфильтрованные строки в Excel.
Первый способ.
Есть замечательная функция в Excel – функция «Специальная вставка» в Excel.
Итак, у нас есть таблица.
Как установить фильтр, смотрите в статье " Фильтр в Excel ".
Мы убираем фильтром из списка всех Ивановых. Получилось так.
Выделяем таблицу, нажимаем в контекстном меню «Копировать». Нажимаем левой мышкой ячейку А9, выбираем в контекстном меню «значения».
Нажимаем «ОК». Вуаля. Скопировалось не только значение видимых строк, но и формат ячеек.
Есть один нюанс - вставлять отфильтрованные данные не в строки, где стоит фильтр. Например, у нас в примере - не в строки 1-7, а ниже или на другом листе, т.д. Если вставим в строки, где стоит фильтр, то вставятся отфильтрованные данные и в скрытые фильтром строки. Вообщем, получится каша. Второй способ.
Таблица та же. Выделить таблицу с отфильтрованными данными. На закладке «Главная» нажимаем в разделе «Редактирование» кнопку функции «Найти и выделить» в Excel . Затем, нажимаем кнопку «Перейти». В появившемся диалоговом окне, нажимаем кнопку «Выделить…». В окне «Выделение группы ячеек» ставим галочку у строки «только видимые ячейки». Нажимаем «ОК».Теперь на этой же выделенной таблице правой мышкой вызываем контекстное меню. Нажимаем функцию «Копировать». В новом месте (в нашем примере – это ячейка А15) нажимаем «Вставить». Всё. Получилось так.
Как, не копируя, сразу напечатать данные фильтра в Excel , смотрите в статье "Закладка листа Excel «Разметка страницы»"


Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (63)
Разное (39)
Баги и глюки Excel (4)

Как вставить скопированные ячейки только в видимые/отфильтрованные ячейки

В общем-то смысл статьи уже, думаю, понятен из названия. Просто чуть-чуть расширю.

Ни для кого не секрет, что Excel позволяет выделить только видимые строки(например, если некоторые из них скрыты или применен фильтр) .

Так вот, если скопировать таким образом только видимые ячейки, то скопируются они как положено. Но при попытке вставить скопированное в диапазон отфильтрованный(либо содержащий скрытые строки) - то результат вставки будет не совсем такой, как Вы ожидали. Данные будут вставлены даже в скрытые строки.

Копируем единый диапазон ячеек и вставляем только в видимые
Чтобы данные вставлялись только в видимые ячейки, можно применить такой макрос:

Option Explicit Dim rCopyRange As Range "Этим макросом копируем данные Sub My_Copy() If Selection.Count > 1 Then Set rCopyRange = Selection.SpecialCells(xlVisible) Else : Set rCopyRange = ActiveCell End If End Sub "Этим макросом вставляем данные, начиная с выделенной ячейки Sub My_Paste() If rCopyRange Is Nothing Then Exit Sub If rCopyRange.Areas.Count > 1 Then MsgBox "Вставляемый диапазон не должен содержать более одной области!" , vbCritical, "Неверный диапазон" : Exit Sub Dim rCell As Range, li As Long , le As Long , lCount As Long , iCol As Integer , iCalculation As Integer Application.ScreenUpdating = False iCalculation = Application.Calculation: Application.Calculation = -4135 For iCol = 1 To rCopyRange.Columns.Count li = 0: lCount = 0: le = iCol - 1 For Each rCell In rCopyRange.Columns(iCol).Cells Do If ActiveCell.Offset(li, le).EntireColumn.Hidden = False And _ ActiveCell.Offset(li, le).EntireRow.Hidden = False Then rCell.Copy ActiveCell.Offset(li, le): lCount = lCount + 1 End If li = li + 1 Loop While lCount >= rCell.Row - rCopyRange.Cells(1).Row Next rCell Next iCol Application.ScreenUpdating = True : Application.Calculation = iCalculation End Sub

Option Explicit Dim rCopyRange As Range "Этим макросом копируем данные Sub My_Copy() If Selection.Count > 1 Then Set rCopyRange = Selection.SpecialCells(xlVisible) Else: Set rCopyRange = ActiveCell End If End Sub "Этим макросом вставляем данные, начиная с выделенной ячейки Sub My_Paste() If rCopyRange Is Nothing Then Exit Sub If rCopyRange.Areas.Count > 1 Then MsgBox "Вставляемый диапазон не должен содержать более одной области!", vbCritical, "Неверный диапазон": Exit Sub Dim rCell As Range, li As Long, le As Long, lCount As Long, iCol As Integer, iCalculation As Integer Application.ScreenUpdating = False iCalculation = Application.Calculation: Application.Calculation = -4135 For iCol = 1 To rCopyRange.Columns.Count li = 0: lCount = 0: le = iCol - 1 For Each rCell In rCopyRange.Columns(iCol).Cells Do If ActiveCell.Offset(li, le).EntireColumn.Hidden = False And _ ActiveCell.Offset(li, le).EntireRow.Hidden = False Then rCell.Copy ActiveCell.Offset(li, le): lCount = lCount + 1 End If li = li + 1 Loop While lCount >= rCell.Row - rCopyRange.Cells(1).Row Next rCell Next iCol Application.ScreenUpdating = True: Application.Calculation = iCalculation End Sub

Для полноты картины, данные макросы лучше назначить на горячие клавиши(в приведенных ниже кодах это делается автоматически при открытии книги с кодом). Для этого приведенные ниже коды необходимо просто скопировать в модуль ЭтаКнига (ThisWorkbook) :

Option Explicit "Отменяем назначение горячих клавиш перед закрытием книги Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.OnKey "^q": Application.OnKey "^w" End Sub "Назначаем горячие клавиши при открытии книги Private Sub Workbook_Open() Application.OnKey "^q", "My_Copy": Application.OnKey "^w", "My_Paste" End Sub

Теперь можно скопировать нужный диапазон нажатием клавиш Ctrl + q , а вставить его в отфильтрованный - Ctrl + w .

Скачать пример

(46,5 KiB, 9 622 скачиваний)

Копируем только видимые ячейки и вставляем только в видимые
По просьбам посетителей сайта решил доработать данную процедуру. Теперь возможно копировать любые диапазоны: со скрытыми строками, скрытыми столбцами и вставлять скопированные ячейки также в любые диапазоны: со скрытыми строками, скрытыми столбцами. Работает совершенно так же, как и предыдущий: нажатием клавиш Ctrl + q копируем нужный диапазон(со скрытыми/отфильтрованными строками и столбцами или не скрытыми) , а вставляем сочетанием клавиш Ctrl + w . Вставка производится так же в скрытые/отфильтрованные строки и столбцы или без скрытых.
Если в копируемом диапазоне присутствуют формулы, то во избежание смещения ссылок можно копировать только значения ячеек - т.е. при вставке значений будут вставлены не формулы, а результат их вычисления. Или если необходимо сохранить форматы ячеек, в которые происходит вставка - будут скопированы и вставлены только значения ячеек. Для этого надо заменить строку в коде(в файле ниже):

rCell.Copy rResCell.Offset(lr, lc)

rCell.Copy rResCell.Offset(lr, lc)

на такую:

rResCell.Offset(lr, lc) = rCell.Value

rResCell.Offset(lr, lc) = rCell.Value

В файле ниже обе эти строки присутствуют, Вам надо лишь оставить ту, которая больше подходит под Ваши задачи.

Скачать пример:

(54,5 KiB, 7 928 скачиваний)


Так же см.:
[]

Статья помогла? Поделись ссылкой с друзьями! Видеоуроки

{"Bottom bar":{"textstyle":"static","textpositionstatic":"bottom","textautohide":true,"textpositionmarginstatic":0,"textpositiondynamic":"bottomleft","textpositionmarginleft":24,"textpositionmarginright":24,"textpositionmargintop":24,"textpositionmarginbottom":24,"texteffect":"slide","texteffecteasing":"easeOutCubic","texteffectduration":600,"texteffectslidedirection":"left","texteffectslidedistance":30,"texteffectdelay":500,"texteffectseparate":false,"texteffect1":"slide","texteffectslidedirection1":"right","texteffectslidedistance1":120,"texteffecteasing1":"easeOutCubic","texteffectduration1":600,"texteffectdelay1":1000,"texteffect2":"slide","texteffectslidedirection2":"right","texteffectslidedistance2":120,"texteffecteasing2":"easeOutCubic","texteffectduration2":600,"texteffectdelay2":1500,"textcss":"display:block; padding:12px; text-align:left;","textbgcss":"display:block; position:absolute; top:0px; left:0px; width:100%; height:100%; background-color:#333333; opacity:0.6; filter:alpha(opacity=60);","titlecss":"display:block; position:relative; font:bold 14px \"Lucida Sans Unicode\",\"Lucida Grande\",sans-serif,Arial; color:#fff;","descriptioncss":"display:block; position:relative; font:12px \"Lucida Sans Unicode\",\"Lucida Grande\",sans-serif,Arial; color:#fff; margin-top:8px;","buttoncss":"display:block; position:relative; margin-top:8px;","texteffectresponsive":true,"texteffectresponsivesize":640,"titlecssresponsive":"font-size:12px;","descriptioncssresponsive":"display:none !important;","buttoncssresponsive":"","addgooglefonts":false,"googlefonts":"","textleftrightpercentforstatic":40}}

Вставить только в видимые строки в Excel числа, формулы, текст можно несколькими способами. Когда нужно вставить числа, формулы, текст не во все строки таблицы, можно воспользоваться фильтром. Как установить фильтр и как фильтровать в Excel, смотрите в статье «Фильтр в Excel ». Но, чтобы вставить данные только в видимые ячейки, нужны свои способы, особенно, если много строк.
Первый способ - обычный.
Возьмем такую таблицу. Таблица будет одна для всех примеров.
Уберем фильтром все цифры 2 из таблицы. В оставшиеся видимые ячейки поставим цифру 600. В ячейку В2 ставим число 600, затем копируем его вниз по столбцу (тянем за правый нижний угол ячейки В2). Значения скопировались только в видимые ячейки. Точно также можно вставлять и формулы. Мы в ячейке С2 пишем такую формулу. =А2*10
Получилось так.
Отменим фильтр. Получилась такая таблица.
Формула и цифры вставились только в отфильтрованные строки.
Второй способ.
Также отфильтруем данные. В первой ячейке пишем число, формулу, текст, т.д. Теперь, если строк тысячи, то выделяем ячейки так: нажимаем клавиши «Ctrl» + «Shift» + кнопку (стрелочку) вниз (или кнопку вверх, зависит от того, где хотим выделить ячейки – ниже или выше ячейки, в которой написали число).
Теперь, или нажимаем сочетание клавиш «Ctrl» + G, или клавишу F5. Выйдет диалоговое окно «Переход». Нажимаем кнопку «Выделить…». И, в новом диалоговом окне «Выделение группы ячеек» ставим галочку у слов «Только видимые ячейки». Нажимаем «ОК». Затем вставляем как обычно.

Ещё один способ вызвать диалоговое окно "Выделение группы ячеек". На закладке «Главная» в разделе «Редактирование» нажимаем на кнопку «Найти и выделить». В появившемся списке нажимаем на функцию «Выделение группы ячеек».

Чтобы заполнить видимые ячейки в выделенных столбцах Excel , нажимаем сочетание клавиш «Ctrl» + D. И все выделенные столбцы заполнятся данными или формулой, как в первой ячейке. В нашем примере, мы написали число800 в ячейку D2 столбца D.



Третий способ.
В новом столбце (в нашем примере – столбец Е) выделяем ячейки. Нажимаем клавишу F5. Выйдет диалоговое окно «Переход». Нажимаем кнопку «Выделить…». И, в новом диалоговом окне «Выделение группы ячеек», ставим галочку у слов «Только видимые ячейки». Нажимаем «ОК». Теперь, не отменяя выделения, в первой ячейке столбца (у нас – Е2) вводим формулу, цифру, т.д. Нажимаем сочетание клавиш «Ctrl» + «Enter».