首页 > 解决方案 > 如何选择表底部与今天日期匹配的所有行

问题描述

我想在 Excel 中有一个 VBA 宏,它复制第 10 列中的值与今天的日期匹配的所有整行并将其粘贴到另一个工作表。鉴于该表是长期排名的,最近的日期位于表的底部,因此“查找”操作应从表的最后一行开始以提高效率。

到目前为止,我在 VBA 中有以下代码:

Sub Test()

Dim TodaysDate As Date
Dim LastRows As Long

TodaysDate = Sheets("Sheet1").Range("B28")

LastRows = Sheets("Sheet1").Columns(10).Find(What:=TodaysDate, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row

Rows(LastRows).Copy
Sheets("Sheet2").Range("A1").Paste


End Sub

标签: vbafindcopyrows

解决方案


正如所评论的那样,与其尝试在工作表上的某个位置找到范围的顶部和底部,不如根据.AutoFilter您的标准来更好地处理您的数据。这意味着您将只显示所需的数据。然后,您可以使用.SpecialCells(XlCellTypeVisible)复制当前屏幕上的所有单元格,并将它们复制到不同的工作表中。这是示例代码,不是根据您的需要量身定制的,但应该显示以下概念:

Sub filtercophee()

With Sheet1.Range("A1:J12")
    .AutoFilter Field:=10, Criteria1:="=" & DateValue(Now), Operator:=xlAnd
    .SpecialCells(xlCellTypeVisible).Copy Sheet2.Range("a1")
End With

Sheet1.AutoFilterMode = False

End Sub

推荐阅读