2015-05-09 89 views
0

我目前有两张包含六列数据的工作表,两者格式相同,但Sheet 1有历史数据,sheet 2有较新的数据并有一些额外的行。两张纸都按照第二栏中的内容顺序排列,然后是第四栏。比较工作表并插入新行

我要准备用于比较两个片和低头第二和第四列识别Sheet 2新行不在Sheet 1和颜色Sheet 2突出这些行的宏。另外,我希望将sheet 2的新行以正确的顺序插入到Sheet 1中。

对于实施例

image

之所以这样做所有这一切,而不是仅仅复制的Sheet 2的全部内容到Sheet 1是因为sheet 1具有许多公式,超过该基准的某些块的6列细胞,并要求保留这些参考文献。我目前不得不手动插入每一个新行,并给予正在处理的数据量,这需要相当长的一段时间。我尝试过调整我在互联网上找到的其他宏来执行这个任务,但他们不太合适。

+2

你不能用公式和条件格式来做到这一点吗? –

+0

我们在这个问题上在哪里?如果您收到答案,请将其标记 –

回答

1

步骤#1:识别与Sheet 2中的行,而不是在Sheet

创建一个新塔E在该式中两片材:

=B2&D2 

(从行2和自动填写开始到整列)

Sheet 2中创建F列与此式

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

现在,列F仅适用于不在sheet1中的行的TRUE

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

第2步:从Sheet2的

  1. 过滤行复制丢失的数据与F=TRUE
  2. 将它们复制到工作表Sheet1中的
  3. Sort sheet1
0

如果您复制数据(excludedd )在Sheet1中的数据下面的Sheet2中,然后a)删除重复项,然后b)在列B和D上进行排序,您应该获得您正在查找的结果。

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 

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

Collect and Sort before

宏运行后我们将看到这样。

Collect and Sort after

我会承认我不清楚是否在3000/B在Sheet1 B11:D11是一个错字或实际重复的记录。宏确实重现您的预期结果。