如果列范围中的date介于用户决定的两个date之间,则将行复制到新工作表

我积极坚持! 我需要在“原始数据”工作表的C列循环,直到最后一行,如果date值介于开始date和结束date之间,则将该行复制到新工作表“周”中。 date由input框定义

inizio = InputBox("Data Inizio") 'start date fine = InputBox("Data Fine") 'end date 

然后我把这个公式的最后一行用googlesearch(向作者道歉,但是我不记得他/她的名字)

 PriRigVuot = Worksheets("Week").Cells.Find(What:="*", _ After:=Range("A1"), _ LookAt:=xlPart, _ LookIn:=xlValues, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row 

然后遇到问题时,复制匹配If语句的行

 For Each cella In Range("c1:c50") If Worksheets("Raw Data").Range(cella).Value >= inizio And Worksheets("Raw Data").Range(cella).Value <= fine Then Worksheets("Raw Data").Range(cella).EntireRow.Copy _ Destination:=Worksheets("Week 34").Range("A" & PriRigVuot + 1) Else End If Next Cella 

我知道这个代码(如果它工作的话)会一次又一次的在同一个地方复制这行,但是我一直在试着去处理一个步骤

提前感谢您的帮助

首先,您可以存储表格Week使用的最后一行,如下所示:

 LastRow = ThisWorkbook.Sheets("Week").Range("A" & Rows.Count).End(xlUp).Row 

在你的For循环中,你不需要再指定整个对象,因为当你写这个句子时, Range已经被指定了。 所以,代码将是这样的:

 Dim sh As Worksheet Dim LastRow As Long Set sh = ThisWorkbook.Sheets("Raw Data") LastRow = ThisWorkbook.Sheets("Week 34").Range("A" & Rows.Count).End(xlUp).Row For Each cella In sh.Range("C1:C" & sh.Range("C" & Rows.Count).End(xlUp).Row) 'Dynamic range in column C If cella >= inizio And cella <= fine Then cella.EntireRow.Copy Destination:=Worksheets("Week 34").Range("A" & LastRow + 1) End If Next cella