比较工作表并插入新的行

我目前有两张有六列数据的工作表,它们都是相同的格式,不同之处在于工作Sheet 1具有历史数据,工作sheet 2具有较新的数据和一些额外的行。 两张纸都按照第二栏中的内容顺序排列,然后是第四栏。

我想要准备一个macros来比较这两个工作表,并向下看第二和第四列,以识别工作Sheet 2中不在工作Sheet 1的新行,并用颜色突出显示工作Sheet 2这些行。 另外,我想将sheet 2的新行以正确的顺序插入到表1中。

例如

图片

完成这一切的原因与将Sheet 2的全部内容复制到Sheet 1相反,是因为sheet 1具有超过6列的参考某些单元块的公式的数目,并且要求保留这些参考。 我现在不得不手动插入每一个新的行,并给予正在处理的数据量,这需要相当一段时间。 我尝试过调整我在互联网上find的其他macros来执行这个任务,但是他们不太合适。

步骤#1:识别在sheet2中而不在sheet1中的行

用这个公式在两张表中创build一个新的列E:

 =B2&D2 

(从第2行开始,自动填充到整列)

在sheet2中用这个公式创build列F.

 =ISERR(VLOOKUP(Sheet2!E2,Sheet1!E:E,1,FALSE)) 

现在F列仅对于不在sheet1中的行是TRUE

接下来,您需要为F=TRUE添加条件格式

步骤2:复制丢失的数据

  1. 使用F=TRUE筛选sheet2中的行
  2. 将它们复制到sheet1的末尾
  3. sorting表1

如果您从Sheet1中的数据下面的Sheet2复制数据(不包括标题),然后a)删除重复项,然后b)在列B和D上sorting,您应该达到您正在查找的结果。

 Sub collect_and_sort() With Sheets("sheet1") Sheets("sheet2").Cells(1, 1).CurrentRegion.Offset(1, 0).Copy _ Destination:=.Cells(Rows.Count, 2).End(xlUp).Offset(1, -1) With .Cells(1, 1).CurrentRegion .RemoveDuplicates Columns:=Array(2, 4), Header:=xlYes .Cells.Sort Key1:=.Columns(2), Order1:=xlAscending, _ Key2:=.Columns(4), Order2:=xlAscending, _ Orientation:=xlTopToBottom, Header:=xlYes End With End With End Sub 

从这样的两张纸上的数据(出于空间考虑在一张纸上显示),

收集和排序之前

在macros运行之后你将会拥有这个。

收集并分类后

我承认我不清楚Sheet1!B11:D11中的3000 / b是错字还是实际的重复logging。 macros确实重现了你想要的结果。