根据日期范围从现有工作表复制行

时间:2018-09-18 22:21:01

标签: excel excel-vba excel-formula

下面的代码可以帮助我,如果在sheet1上,L列上的特定日期小于或等于今天的日期,请从sheet1将特定行复制到以A3开始的sheet2并针对整个列表进行。

我有两个后续问题;

1)我想将sheet2上复制的单元格插入到新创建的行中(需要合并End(xlUp))。还不能弄清楚

2)由于某些原因,如果我的第一张纸上装有过滤器,代码将无法工作...我必须删除代码的过滤器。不知道为什么无论打开还是关闭过滤器,它都不起作用。

     Sub CopyRange()
Application.ScreenUpdating = False
Dim LastRow As Long
LastRow = Cells.Find("*", SearchOrder:=xlByRows, 
     SearchDirection:=xlPrevious).Row
Range("L1:L" & LastRow).AutoFilter Field:=1, Criteria1:="<=" & Date
Intersect(Rows("2:" & LastRow), 
     Range("A:A,F:H,K:L,R:R,U:U").SpecialCells(xlCellTypeVisible)).Copy 
     Sheets("Sheet2").Cells(3, 1)
     Range("L1").AutoFilter
   Application.ScreenUpdating = True
 End Sub

1 个答案:

答案 0 :(得分:0)

只需使用Range("L:L")。另外,我建议您使用With ActiveSheet或更好的With Worksheet("sheetname")

Application.ScreenUpdating = False
Dim LastRow As Long
LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

With Worksheets("Sheet1")
    Range("L:L").AutoFilter Field:=1, Criteria1:="<=" & Date

    Intersect(Rows("2:" & LastRow), _
    Range("A:A,F:H,K:L,R:R,U:U").SpecialCells(xlCellTypeVisible)).Copy _
    Sheets("Sheet2").Cells(3, 1)

    Range("L1").AutoFilter
End With
Application.ScreenUpdating = True