【发布时间】:2019-09-24 17:04:57
【问题描述】:
我想将数据从一张表复制到另一张表。选择部分是根据日期和列的具体值。
我从互联网上尝试了这段代码。所以基本逻辑是如果满足 2 个条件然后复制该行。但是它不起作用。
当只写一个条件时它实际上首先工作,当写第二个条件时,VBA没有做任何事情
Sub CopyRowsAcross()
Dim i As Integer
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Clean_Sheet")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Daily_Report")
For i = 2 To ws1.Range("P65536").End(xlUp).Row
If ws1.Cells(i, 1) = "DOWNY S.FRESH 900ML" and ws2.Range ("C2") = ws1.Cells(i,3) Then
ws1.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1)
End If
Next i
End Sub
ws2.Range("C2") 被选中的日期写在工作表的单元格 C2 中。
结果是根据这 2 个条件复制的行
【问题讨论】:
-
使用 F8 单步执行代码并检查变量——尤其是日期。您确定它们的格式相同吗?
-
试过
CDate(ws2.Range("C2")) = CDate(ws1.Cells(i,3))?请注意,这是与秒数进行比较。
标签: excel vba if-statement copy