如果只有1行数据,如何包含最后一行数据



我有一个代码,可以将一列数据从Sheet1的第二行复制到最后一行,并粘贴到Sheet2的下一个空行中。

With ActiveWorkbook.Worksheets("Sheet1")
.Range("A:K").AutoFilter Field:=6, Criteria1:=">=100", Operator:=xlAnd, Criteria2:="<=999"
On Error Resume Next
Set rng1 = .Range("H2:I" & .Cells(.Rows.Count, "H").End(xlUp).Row).Resize _
(.Cells(.Rows.Count, "H").End(xlUp).Row - 1).Offset(1). SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not rng1 Is Nothing Then
.Range(H2:I & .Cells(.Rows.Count, "H").End(xlUp).Row).Copy
Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End If
End With

当过滤后的数据超过1行时,此代码运行良好;如果过滤后没有数据,则此代码也会停止复制。

现在的问题是,有时我过滤的数据只有一行数据。

.Range(H2:I & .Cells(.Rows.Count, "H").End(xlUp).Row).Copy

^这行代码不复制一行筛选后的数据。有什么办法我能修好吗?

问题是

On Error Resume Next
Set rng1 = .Range("H2:I" & .Cells(.Rows.Count, "H").End(xlUp).Row).Resize _
(.Cells(.Rows.Count, "H").End(xlUp).Row - 1).Offset(1).SpecialCells(xlCellTypeVisible)
On Error GoTo 0

如果只有标题行和1个数据行,则意味着存在1:2行。这意味着Range("H2:I" & .Cells(.Rows.Count, "H").End(xlUp).Row)将给你H2:I2,现在你可以通过1将其调整为2 - 1Offset,这样你就在H3:I3了。

我觉得不对。

在复制之前,还要检查Debug.Print .Cells(.Rows.Count, "H").End(xlUp).Row的值。

最新更新