我试图弄清楚数据列表与另一个数据列表之间是否存在任何差异。为了使一行数据符合"匹配"对于另一行,该行必须在其对应的列中具有相同的值。行本身不必具有任何特定顺序。特别是,我正在处理零件清单,其中有零件编号,描述等。我试图弄清楚任何数据行是否与另一个清单中的数据行不同。
我找到了Compare two sheets using arrays,这可能解决了我的问题,但由于缺乏Visual Basic经验,我无法弄清楚如何适应我的代码。
我能够让它为一列数据工作,将一列数据从一张纸比较到另一张,但无法比较整行数据。
以下是我希望此功能的示例:
Sheet 1 Sheet 2
Column 1 Column 2 Column 1 Column 2
Row 1 22a 33 11 11
Row 2 22a 33a 22a 33
Row 3 55 22b 55 23b
链接中的代码将告诉您表单1中的内容但是表单2中的内容,反之亦然。在这个例子中,我希望代码告诉我Sheet 1 Row 2和Sheet 1 Row 3不在Sheet 2中,而Sheet 2 Row 1和Sheet 2 Row 3不在Sheet 1中(Sheet 1 Row 1和Sheet 2)第2行匹配)。
答案 0 :(得分:1)
如果您没问题,可以使用以下公式在没有VBA的情况下进行:
={IF(IFERROR(MATCH(A1&"|"&B1;Sheet7!$A$1:$A$3&"|"&Sheet7!$B$1:$B$3;0);-1)=-1;"Unique";"")}
假设您的每个表都以A1开头(因此具有三个条目的表跨越A1:B3),并将此公式输入C1(并将其复制下来),请在输入公式时按CTRL + SHIFT + ENTER创建一个数组公式,如果该工作表中该行中的对不在工作表2上的任何行对中,这将在C列中显示“唯一”一词。
然后,您可以使用条件格式来突出显示唯一行,对表进行过滤以仅包含唯一行,或者使用其他方式来执行所需操作。
注1:我在Sheet6和Sheet7中输入了我的数字而不是1和2.上面写的公式进入了Sheet6。
注2:我的语言使用;而不是作为函数分隔符,所以如果你使用它,你需要改变它。
注意3:你需要扩展范围Sheet7!$ A $ 1:$ A $ 3和Sheet7!$ B $ 1:$ B $ 3如果你的集合增长(如果在旧版本之间插入新行,这将自动发生那些)。最好的仍然是为4列中的每一列创建命名范围,用这些列交换引用,并管理命名范围而不是公式。
注意4:如果您的数据集包含字符“|”,您还需要更改它,以匹配您确定没有的某些字符。
或者你可以在每个cheet上的C列中输入(假设C1中的第一个条目)
=A1&"|"&B1"
并将其复制下来,然后使用该C列而不是A1和B1从复制的示例中运行解决方案。