我有一个电子表格,我需要将两列匹配在一起。然而,“鸽子代码”是 3600 行,“代码 2”是 1100。它们都有相同的代码,就像你在图片中看到的那样,但你也可以看到它开始变化的地方,我需要将所有代码排成一行,所以我可以看到缝隙。我已经按字母顺序排列了它们,它的“代码 2”需要与“鸽子代码”相匹配
2 回答
如果上述解决方案会导致分流过多而无法选择 vba,则还有另一种方法。复制第一列并在其上使用“删除重复项”。现在你有了一个索引列表,把从 1 到 x 的数字放在它右边的列中。
在两个列表之间和第二个列表的右侧插入一列。
假设索引列表在 F 中,数字在 G 中,将这个公式放在较大列表中第一个单元格右侧的单元格中:=VLOOKUP(A2,$F$2:$G$500,2,FALSE)
相应地调整范围。将相同的公式放在较短列表中第一个单元格右侧的单元格中,当然是 C2 而不是 A2。将两个公式复制到列表的末尾。
现在两列的每一行都有一个索引。您可以使用数据排序来匹配它们,但为此您需要在索引列中添加虚拟对象。
把这个公式放在你的基本索引列表右边的单元格中:=countif(B:B,G2) 这个公式放在右边的单元格中:=countif(D:D,G2)
现在您知道每条记录在两个列表中出现的次数。只需手动添加额外的数字,以便两个公式得出相同的结果。你应该能够非常快地做到这一点。如果您有 200 条记录在第一列中使用了 2 次,而在第二列中没有使用,则只需复制这 200 条记录的索引并粘贴两次。countif 将自动更新。您可以使用额外的列来计算两个计数之间的差异,并使用基本索引列表上的数据排序来对差异进行排序。
之后只需使用数据排序。
如果我的指示足够清楚,这应该不会花费您超过 10 分钟。
编辑:这是一个例子:http: //img14.imageshack.us/img14/6366/k8pg.jpg
如果没有 VBA,我会通过添加公式(例如=INDIRECT("A"&ROW())<>INDIRECT("B"&ROW())
在帮助列中)来执行此操作(对于不匹配数量有限的列!)。向下工作,每次您看到 TRUE 时,都会将相应的列向下分流以适应。但它可能仅适用于 1100 行!