簡體   English   中英

比較工作表並插入新行

[英]Compare worksheets and insert new rows

我目前有兩張工作表,其中六列數據都采用相同的格式,除了工作Sheet 1具有歷史數據,工作sheet 2具有更新的數據以及一些其他行。 兩張紙均按第二列和第四列的內容順序排序。

我要准備用於比較兩個片和低頭的第2和第4列,以確定新行宏Sheet 2中沒有的Sheet 1和顏色突出顯示這些行Sheet 2 此外,我希望將工作sheet 2的新行以正確的順序插入工作表1中。

例如

圖片

之所以要執行所有這些操作,而不僅僅是將工作Sheet 2的全部內容復制到工作Sheet 1是因為工作sheet 1擁有超過6列的許多公式,這些公式引用了某些單元格塊,並且需要保留這些引用。 我目前必須手動插入每個新行,並考慮到要處理的數據量,這需要相當長的時間。 我曾嘗試修改我在互聯網上找到的其他宏來執行此任務,但是它們工作不大。

步驟#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過濾來自sheet2的行
  2. 將它們復制到工作表1的末尾
  3. 排序工作表1

如果從Sheet2的Sheet2的數據下面的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

根據這樣的兩張紙上的數據(出於空間考慮,在一張紙上顯示),

之前收集和排序

宏運行后,您將擁有此功能。

收集並排序后

我承認,Sheet1!B11:D11中的3000 / b是拼寫錯誤還是實際重復的記錄,目前尚不清楚。 該宏不會重現您想要的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM