将一个工作表中的单元格与另一个工作表中的列进行比较,然后在第三个工作表中打印行

时间:2015-06-20 21:22:43

标签: excel vba excel-vba

我是Excel宏的新手,需要帮助创建一个可以帮助我完成工作的宏。

我有两个部分列表,在单独的工作表中,两个都是针对同一个应用程序,但一个是旧部件列表,另一个是新版本。有时零件清单中可能有一千个零件。

我需要对它们进行比较,以查看是否有任何新部件列表的添加内容,以及是否已从旧列表中删除了任何内容。 然后将添加部分的行复制到标题为“添加”的单独工作表,将删除的部分复制到标题为“已删除”的部分。

同样在比较之前从列表中删除重复项,因为有时会出现重复的部件号。必须删除整行。

所以基本上我想知道是否有办法从新的列表中取出一个单元格,从B1开始,并将它逐一与旧零件列表中的B列进行比较,从B1开始。

如果新列表中的下一个部件号有匹配移动。

如果没有,就像它到达空白单元格一样,将部件号的行复制到新的工作表“Additions”。

反之亦然,将旧部件列表与新部件列表进行比较,如果没有匹配则将行复制到工作表“已移除”。

1 个答案:

答案 0 :(得分:1)

正如评论中提到的那样,如果没有看到你已经尝试过的东西,很难帮助你。为了让您开始,我建议您使用宏录制器来学习一些基础知识,例如在单元格之间移动,切换工作表,复制值等。

我能想到的两个组件是宏录制器无法教你的是for循环和if语句。

for循环允许你循环播放"在一系列值上,并为每个单元格执行一次操作,if语句允许您仅在满足条件时执行某些操作(如复制单元格)(如果两个单元格相等)。

简单版本可能类似于:

For i = 1 To 10
    If Sheets(2).Range("A" & i).Value <> Sheets(1).Range("A" & i).Value Then
        Sheets(3).Range("A" & i).Value = Sheets(2).Range("A" & i).Value
    End If
Next i

我知道这是一种过度简化,但希望它能帮助你开始。祝你好运!