我被卡住了! 我需要在"原始数据"的C列中循环。直到最后一行,如果日期值在开始日期和结束日期之间,则将该行复制到新工作表"周"。日期由输入框
定义inizio = InputBox("Data Inizio") 'start date
fine = InputBox("Data Fine") 'end date
然后 我存储了"周"的最后一行。从谷歌搜索中借用这个公式的表格(向作者道歉,但我不记得他/她的名字)
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
我知道这段代码(如果它可以工作的话)会一遍又一遍地复制同一个地方的行,但我试图一次解决一个步骤
感谢您提前提供任何帮助
答案 0 :(得分:0)
首先,您可以存储工作表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