我需要一种方法来比较工作簿中的两个电子表格,找出差异,然后将这些差异按顺序写在电子表格中现有数字下方的同一列中。
Sheet1 包含参与经销商编号。所有经销商编号均列在 C 列,从单元格 5 开始。所有参与经销商均向下填写。(注意:这些经销商按地区顺序列出,因此某些单元格中将显示单词 TOTAL,而不是经销商编号)B 列包含地区信函。我也需要保留这封信函。
“工作表1”:
A 207475
A 207775
B TOTAL
在 Sheet2 中,我列出了要比较的经销商的完整列表。
“工作表2”:
A 206600
A 207475
B 206624
我希望我的缺失经销商显示在我设置为缺失经销商的部分下方,如下例所示:(忽略地区总数)(但也捕获 B 列中的地区字母)
缺少 DLRS。
A 207775
A 206600
B 206624
答案1
这是那些应该使用数据库来解决的问题之一,因为 Excel 不太适合数据库。但是,Excel 可以做任何事情,所以我将使用单元格公式来解决这个问题。
- 在第二张表的庄家列之前的一列(如果您愿意,可以隐藏)中,添加一个 countif 公式来确定庄家是否在 Sheet1 中。在这里,我将 countif 包裹在 IF 公式中,如果 countif 返回 0(未找到庄家),我会让它吐出我当前所在的行……这在下一步中很重要。假设 Sheet2 上的庄家列表也在“C”中,从第 5 行开始
IF(COUNTIF(Sheet1!C:C,sheet2!C5)=0, ROW(),"")
- 在我们刚刚创建的最后一列之后的列中,我们将使用 RANK 公式对庄家行进行编号,从 1 到 Sheet1 上庄家不匹配的任何行(这就是我们需要 ROW() 的原因)。
=RANK(A5,$A$5:$A$500,1)
(这里我假设步骤 1 列是“A” - 现在,我们已经将所有缺失的经销商按连续数字从上到下排列。在新工作表中,或者在您想要列出 Sheet1 中未找到的经销商的地方,创建一个列,并将行编号从 1 到缺失经销商的数量(无论有多少)。我假设 Sheet3,A 列,从第 1 行开始
- 在下一列中执行 vlookup 函数来搜索第一个缺失的经销商,
=Vlookup(A1,Sheet2$A$5:$A$500,3, false)
然后将该函数复制到所有行。
它有点复杂,并且对 ROW() 和 RANK() 的使用非常规,但它可以让你远离数据库、VBA,或者更糟糕的是......手册。