【发布时间】:2019-01-14 14:10:11
【问题描述】:
我对 Excel 中的宏和 VBA 比较陌生,因此我需要一些有关如何解决当前问题的指导。
我的项目的最终目标是让一个宏比较两组数据,这些数据组织成行和列(我们会说表 A 是源数据,表 B 是基于用户输入的)。表 B 中的每一行都应该对应表 A 中的一行,但它们可能是乱序的,或者表 B 中的条目可能不正确。
我的想法是,对于每个表的第一行,宏会从左到右比较每个单元格:
If Sheets("sheet1").Cells(2, 1) = Sheets("sheet2").Cells(2, 1) Then
If Sheets("sheet1").Cells(2, 2) = Seets("sheet2").Cells(2, 2)
等等,等等。
当表 B 中的单元格与表 A 不匹配时,我的问题就出现了。
首先,我希望它检查 B 行 1 与 A 中的下一行,并继续遍历表 A,直到找到与行匹配的所有五列的“完全匹配”。
我一直在尝试使用 Else if 和 For/Next 语句来做到这一点
For row= 2 to 10
'if statements go here
Else If Sheets("sheet1").Cells(2, 1) <> Sheets("sheet2").Cells(2, 1)
Next row
我可能完全误解了这里的语法,但我还没有产生如果不满足条件,它会转到下一行的情况。
如果未找到完全匹配,则应突出显示表 B 第 1 行中无法匹配的最后一个单元格。
那么无论是否找到匹配,我们都会移动到表 B 的第 2 行,然后重新开始整个过程。
所以,我已经制定了逻辑(我认为),比较 ifs 将在一个循环(或其他东西)内,该循环将逐行循环遍历表 A。然后整个过程将在另一个循环(或其他东西)中循环通过表 B。
在流程结束时,要么没有突出显示的单元格显示所有输入的数据都是正确的,要么突出显示单元格显示不匹配的数据。
我相当肯定,循环通过表 B 不是问题。相反,如果某些内容不匹配,我很难让宏移动到下一个表 A 行。
如果我需要详细说明任何事情,请告诉我。
谢谢!
【问题讨论】:
-
您可以通过连接每一行并在查找哪个单元格不匹配之前进行比较来简化该过程。