比较工作表并插入新行

时间:2015-05-09 12:55:54

标签: excel vba excel-vba

我目前有两张包含六列数据的工作表,两种数据格式相同,但Sheet 1包含历史数据,而sheet 2包含更多数据和一些额外行。两张纸都按照第二列中的内容顺序排序,然后是第四列。

我想准备一个比较两个工作表并查看第2和第4列的宏,以确定Sheet 2中不在Sheet 1中的新行,并在{{1}中突出显示这些行的颜色}}。另外,我希望Sheet 2中的新行以正确的顺序插入到Sheet 1中。

例如

image

执行所有这些操作的原因与仅将sheet 2的全部内容复制到Sheet 2相反,是因为Sheet 1有超出6列的多个公式,这些公式引用了某些块细胞,并要求保留这些参考。我目前必须手动插入每个新行并给定正在处理的数据量,这需要相当长的时间。我已经尝试调整我在互联网上找到的其他宏来执行这项任务,但它们并没有完全奏效。

2 个答案:

答案 0 :(得分:1)

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

中的行

使用以下公式在两个工作表中创建一个新列E:

=B2&D2

(从第2行开始并自动将其填充到整列)

sheet2中的

使用此公式

创建列F.
=ISERR(VLOOKUP(Sheet2!E2,Sheet1!E:E,1,FALSE))

现在,对于Sheet1中不包含的行,列F将为TRUE

接下来,您需要为F=TRUE

添加条件格式

步骤2:复制缺失的数据

  1. 使用F=TRUE
  2. 过滤来自sheet2的行
  3. 将它们复制到sheet1的末尾
  4. 排序sheet1

答案 1 :(得分:0)

如果从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

我承认我不清楚Sheet1中的 3000 / b !B11:D11是否是拼写错误或实际重复记录。宏 重现您想要的结果。