我有一张200行的纸张,中间有一些空白。
我无法使用End(xlDown)
或End(xlUp)
来获取整个范围,因为有空行。
如何复制到列中包含数据的最后一个范围?
另外,我不想复制标题。
请建议我如何在Excel VBA中执行此操作。
答案 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