0

私は200行のシートを持っており、その間にいくつかの空白があります。

空白行があるため、End(xlDown)または範囲全体を取得することはできません。End(xlUp)

列にデータがある最後の範囲までコピーするにはどうすればよいですか?

また、ヘッダーをコピーしたくありません。

ExcelVBAでこれを行う方法を提案してください。

4

2 に答える 2

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
于 2012-07-10T16:03:20.277 に答える
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
于 2012-07-10T15:38:21.017 に答える