将可见单元格移到最后一列

我有一个Excel表基本上将有一个可变的数字在列A到C,它被过滤为独特的价值为基础for next循环我已经实现了这一点,接下来我试图复制从F列开始的可见范围直到last column (每次都是filter的variables列以后),并在新表中垂直移位。我使用的方法是对每个可见行进行计数并复制到最后。 这是代码。

 Set ws = ActiveSheet Set WS2 = ThisWorkbook.Sheets("3") L2 = ws.Cells(Rows.Count, 1).End(xlUp).Row For Each CELL In ws.Range("F2:F" & L2).SpecialCells(xlCellTypeVisible) i = CELL.Row L3 = ws.Cells(i, Columns.Count).End(xlToLeft).Column ws.Range(Cells(i, 6), Cells(i, L3)).Copy L4 = WS2.Cells(Rows.Count, 4).End(xlUp).Row WS2.Cells(L4 + 1, 4).PasteSpecial Paste:=xlPasteAll, Transpose:=True Next CELL 

过滤范围

但是有没有其他方法可以复制和移动从列F到最后一列的值的单元格?在上面的例子中,从F108:H110开始F108:H110只select和复制其中包含值的单元格。

SpecialCells是Range的成员,返回一个Range对象。 知道我们可以把它们连在一起.SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants)来缩小我们的范围。 这会给你一个不连续的范围。 您不能使用不连续的复制命令。 如果将它分配给一个数组,数组只会被部分填充。 您必须使用For Each循环来迭代它。

 Sub SelectVisibleNonBlankCells()
     Dim c As Range,r As Range
     Dim L2 As Long

     With ThisWorkbook.Sheets(“3”)

        L2 = .Cells(Rows.Count,1).End(xlUp).Row
       设置r = .Range(“F2:F”&L2).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants)

    结束

    对于每个c In r

    下一个

结束小组

我只是遍历所有的行检查可见性。 接下来只需将数据添加到一个数组,并使用范围resize来填充目标范围。


Sub TransposeVisibleCells() With ThisWorkbook.Sheets("3") Dim ColumnCount As Integer, lastRow As Long, RowCount As Long, x As Long, y As Long Dim arData lastRow = .Cells(Rows.Count, 1).End(xlUp).Row ColumnCount = .Cells(1, Columns.Count).End(xlToLeft).Column ReDim arData(ColumnCount, RowCount) For x = 2 To lastRow If Not .Rows(x).Hidden Then ReDim Preserve arData(ColumnCount, RowCount) For y = 1 To ColumnCount arData(y -1, RowCount) = .Cells(x, y).Value Next RowCount = RowCount + 1 End If Next End With Worksheets("Transposed Data").Range("A1").Resize(ColumnCount, RowCount) = arData End Sub