【问题标题】:Copying Row from existing sheet based on date range根据日期范围从现有工作表中复制行
【发布时间】:2022-01-30 02:58:31
【问题描述】:

下面的代码可以帮助我,如果在 sheet1 上,L 列上的特定日期小于或等于今天的日期,则从 sheet1 将特定行复制到 sheet2,以 A3 开头并为整个列表执行此操作。

我有两个后续问题;

  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

【问题讨论】:

    标签: excel vba excel-formula


    【解决方案1】:

    只需使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多