Excel vba,比较两个工作簿的行并替换

时间:2012-08-01 06:30:29

标签: excel vba excel-vba compare rows

以下是我正在努力实现的目标。

我有一个excel文件,其中包含10张纸,每张纸都包含许多行数据。此工作簿将发送给不同的人,每个人只填写A,B列中的相应信息。我创建了一个循环遍历所有已填充工作簿的vba脚本,并检查哪些行填充了单元格AxBx。然后它将它们复制到新工作簿中。

所以我现在所拥有的是:

  1. 仅包含已填充列A,B的行的工作簿。
  2. 包含所有未填充行的工作簿。 (最初的一个)
  3. 我现在要做的是逐行检查,并查找例如工作簿 A 的第1行第1行,减去工作簿的 B 表中的列A,B 1.找到行后我需要替换工作簿的 B 与工作簿中的一行 A

    因此,最后我将留下一个包含已填充和未填充行的主工作簿(以前的工作簿 B )。

    我希望我没有让这太复杂。任何有关实现这一目标的最佳方法的见解都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

就像我在评论中提到的那样,可以使用.Find来实现您的目标。以下代码示例打开工作簿AB。然后,它循环遍历工作簿A中的Col C的值,并尝试在工作簿{C}的Col C中找到该值的出现。如果找到匹配项,则会比较该行中的所有列。如果所有列都匹配,则根据工作簿B中的值写入工作簿B的Col A和Col B.找到匹配后,它会使用A进行Col C中的进一步匹配。

要对此进行测试,请分别将您提供的文件保存为.FindNextC:\A.xls。现在打开一个新工作簿并在模块中粘贴此代码。该代码将C:\B.xls工作簿Sheet7A工作簿Sheet7进行比较

我相信你现在可以修改其余的工作表

尝试和测试(请参阅帖子末尾的快照)

B

<强>快照

<强> BEFORE

enter image description here

<强> AFTER

enter image description here