首页 文章

比较工作表并插入新行

提问于
浏览
0

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

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

例如

image

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

2 回答

  • 1

    如果从Sheet1中的数据下面的Sheet2复制数据(不包括 Headers ),随后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!B11:D11中的3000 / b是否是拼写错误或实际重复记录 . 宏确实会重现您想要的结果 .

  • 0

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

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

    =B2&D2
    

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

    在sheet2中使用此公式创建列F.

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

    现在,对于不在sheet1中的行,列F将为 TRUE .

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

    步骤2:复制缺失的数据

    • 使用 F=TRUE 过滤sheet2中的行

    • 将它们复制到sheet1的末尾

    • 排序sheet1

相关问题