Как копировать и вставлять строки с фильтрацией и скрытыми столбцами?

Я пытаюсь скопировать и вставить определенную строку в электронную таблицу с фильтрацией и некоторые скрытые столбцы. По какой-то причине, когда моя фильтрация включена, Excel не копирует скрытые столбцы, и когда я вставляю строку, она пропускает скрытые столбцы.

Есть ли способ обхода проблемы? Может быть, секретный ярлык, который копирует все ячейки в подборке, включая скрытые?

Благодарю.

Легкое решение здесь (вы также можете прокручивать лист и хранить индексы скрытых столбцов, но я думаю, что на самом деле может потребоваться больше времени, чем создание этого скопированного листа)

Sub CopyHiddenColumns() Dim DestinationSheet As Worksheet, TempSheet As Worksheet, CopySheet As Worksheet Set DestinationSheet = ThisWorkbook.Worksheets("DestSheet") Set CopySheet = ThisWorkbook.Worksheets("CopySheet") CopySheet.Copy Before:=ThisWorkbook.Worksheets(1) Set TempSheet = ThisWorkbook.Worksheets(1) TempSheet.UsedRange.Hidden = False TempSheet.UsedRange.Copy Destination:= DestinationSheet.Range("A1") Application.DisplayAlerts = False TempSheet.Delete Application.DisplayAlerts = True End Sub 

Очевидно, что вы можете использовать определенные диапазоны, а не UsedRange и Range("A1") . Я просто разместил их как наполнители, чтобы код мог компилироваться

Благодаря RGA я немного поиграл с его кодом и получил этот результат. Отлично работает, что вы думаете?

  Sub lev() Dim ws As Worksheet, temp As Worksheet, copyrange As Range, pasterange As Range Set ws = ThisWorkbook.ActiveSheet On Error GoTo nocell Set copyrange = Application.InputBox(Prompt:="Please Select Range", Title:="Range Select", Type:=8) On Error GoTo nocell Set pasterange = Application.InputBox(Prompt:="Please Select ONE Cell to paste the your selection!", Title:="Range Select", Type:=8) On Error GoTo 0 ws.Copy before:=ThisWorkbook.ActiveSheet ActiveSheet.Name = "temp123" Range("a1", Selection.End(xlToRight)).Select Selection.EntireColumn.Hidden = False Range("a1", Selection.End(xlDown)).Select Selection.EntireRow.Hidden = False Range(copyrange.Address()).Select Selection.Copy Destination:=pasterange Application.DisplayAlerts = False Sheets("temp123").Delete Application.DisplayAlerts = True nocell: End Sub 

Этот код может обрабатывать как фильтрацию, скрытые строки, так и скрытые столбцы. На самом деле, это супер круто и полезно.

Пожалуйста, дай мне знать, что ты думаешь!

Interesting Posts
Давайте будем гением компьютера.