Много раз я сталкивалась с проблемой. Функция Копировать – Вставить данные в столбец с фильтром не работает.
Есть таблица, в которой Фильтром (Данные – Фильтр) отобраны несколько строк.
Задача – вставить какие-либо нужные нам значения именно в видимые отфильтрованные строки, пропуская при этом скрытые. Обычное копирование-вставка при этом не сработает.
Справится с этой проблемой поможет макрос.
Макрос Копировать – Вставить данные в столбец с фильтром Excel
Если вам необходимо вставить в отфильтрованные ячейки не одинаковые значения или формулы, а разные, да еще и брать их из другого диапазона. Тогда придется использовать несложный макрос. Работа с макросом интуитивно понятная.
Чтобы работатьс ним выполните следующие действия.
- Нажмите сочетание клавиш Alt+F11, в открывшемся окне Visual Basic
- Нажить е Insert – Module и скопируйте туда этот код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Sub PasteToVisible() Dim copyrng As Range, pasterng As Range Dim cell As Range, i As Long 'запрашиваем у пользователя по очереди диапазоны копирования и вставки Set copyrng = Application.InputBox("Диапазон копирования", "Запрос", Type:=8) Set pasterng = Application.InputBox("Диапазон вставки", "Запрос", Type:=8) 'проверяем, чтобы они были одинакового размера If pasterng.SpecialCells(xlCellTypeVisible).Cells.Count <> copyrng.Cells.Count Then MsgBox "Диапазоны копирования и вставки разного размера!",vbCritical Exit Sub End If 'переносим данные из одного диапазона в другой только в видимые ячейки i = 1 For Each cell In pasterng If cell.EntireRow.Hidden = False Then cell.Value = copyrng.Cells(i).Value i = i + 1 End If Next cell End Sub |
Готово!
Теперь переходите во вкладку “Разрабочик”, нажимаете “Макросы” и видите только что добавленный макрос. запускаете и пользуетесь.
Макрос запрашивает у пользователя по очереди два диапазона – копирования и вставки. Затем проверяет, чтобы их размеры совпадали, т.к. разница в размерностях вызовет впоследствии ошибку при вставке. Затем макрос перебирает все ячейки в диапазоне вставки и переносит туда данные из диапазона копирования, если строка видима (т.е. не отфильтрована).