如何复制和粘贴具有过滤和隐藏列的行?

我正在尝试复制并粘贴电子表格中的某个行,该行具有过滤function和一些隐藏的列。 出于某种原因,当我的筛选打开时,Excel不会复制隐藏的列,并且当我粘贴该行时,它将省略隐藏的列。

有没有解决这个问题的方法? 也许是一个秘密的快捷方式,复制所有的细胞在select,包括隐藏的?

谢谢。

这里简单的解决scheme(你也可以遍历表单并存储隐藏列的索引,但是我认为实际上可能需要比复制表单更多的时间)

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")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 

这段代码可以同时处理过滤,隐藏行和隐藏列。 事实上,这是超级酷和有用的。

请让我知道你在想什么!