复制列中的所有单元格

时间:2012-07-10 15:33:32

标签: excel vba excel-vba excel-2007

我有一张200行的纸张,中间有一些空白。

我无法使用End(xlDown)End(xlUp)来获取整个范围,因为有空行。

如何复制到列中包含数据的最后一个范围?

另外,我不想复制标题。

请建议我如何在Excel VBA中执行此操作。

2 个答案:

答案 0 :(得分:8)

复制它们的最佳方法是使用自动过滤器并在空白上过滤它们然后复制可见范围

例如

Sub Sample()
    Dim ws As Worksheet
    Dim lRow As Long
    Dim rngToCopy As Range, rRange As Range

    Set ws = Sheets("Sheet1")

    With ws
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        Set rRange = .Range("A1:A" & lRow)

        '~~> Remove any filters
        .AutoFilterMode = False

        With rRange 'Filter, offset(to exclude headers) and copy visible rows
            .AutoFilter Field:=1, Criteria1:="<>"
            Set rngToCopy = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
        End With

        '~~> Remove any filters
        .AutoFilterMode = False

        rngToCopy.Copy

        '
        '~~> Rest of the Code
        '
    End With
End Sub

答案 1 :(得分:4)

您可以使用下面的代码获取活动工作表A列中最后一次使用的行(如果您在列的中间有空白单元格,它也可以工作) - 如果您需要在不同的位置运行它,则根据需要进行修改表/栏。

With ActiveSheet
    lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("A2:A" & lastRow).Copy 'copies column A used range, excluding header row
End With