【发布时间】:2021-07-08 07:49:54
【问题描述】:
我现在正在尝试执行此代码一段时间,但到目前为止没有成功。如果工作表 Y 中尚不存在行,我想将工作表 X 中的行复制到另一个工作表 Y 的末尾,基于 A 列和 C 列中数据的比较。
当我只需要与一列进行比较时,我已经编写了代码,并且效果很好。我把它放在那里所以你可以看到:
sourceLastRow = ws_src.Cells(ws_src.Rows.Count, "A").End(xlUp).Offset(1).Row
destLastRow = ws_dest.Cells(ws_dest.Rows.Count, "A").End(xlUp).Offset(1).Row
For Each rng In ws_src.Range("A2:A" & sourceLastRow)
Set foundVal = ws_dest.Range("A2:A" & destLastRow).Find(rng, LookIn:=xlValues, lookat:=xlWhole)
If foundVal Is Nothing Then
rng.EntireRow.Copy
ws_dest.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End If
Next rng
不幸的是,当我尝试比较两列时,我没有得到我需要的结果。我尝试了下面的代码,但它不停地复制了我的第一张纸的第一行:
Dim ws_src As Worksheet
Dim ws_dest As Worksheet
Dim rw_src As Range
Dim rw_dest As Range
Set ws_src = Worksheets(1)
Set ws_dest = Worksheets(2)
For Each rw_src In ws_src.Rows
For Each rw_dest In ws_dest.Rows
If ws_src.Cells(rw_src.row, 1).Value = ws_dest.Cells(rw_dest.row, 1).Value And ws_src.Cells(rw_src.row, 3).Value = ws_dest.Cells(rw_dest.row, 3).Value Then
Else: rw_src.EntireRow.Copy
ws_dest.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End If
Next rw_dest
Next rw_src
感谢您的宝贵时间!
莉亚
【问题讨论】:
-
你提到了
A and C而不是A OR C。您希望这两个条件都为真。所以你的第一个代码已经足够好了。还是我没有正确理解您的查询? -
你也知道使用
AutoFilter可以紧固整个流程吗? -
嗨,我希望 A 和 C 为真,我的第一个代码只查看 A 列。有时我可以在 A 列中有相同的数字(例如:12345),但如果不是C 列中的相同数据,我想复制这些行。
-
不,我不知道“自动筛选”,我对 VBA 很陌生,所以我真的愿意接受任何建议!
-
首先确定。如果 A AND C;两者都没有找到然后复制行?如果只找到 A OR 找到 C 然后复制?
标签: excel vba copy compare rows