簡體   English   中英

比較兩張紙並找出差異,復制到第三張紙

[英]Compare two sheets and find differences, copy to third sheet

我一直在嘗試比較兩張紙。 這些表是版本,一個在八月制作,另一個在九月制作。 在工作表1中,列CI具有唯一的ID,該ID也可以在工作表2中,但也可能不存在。 另一方面,我可以在工作表2中有新ID,而在工作表1中不存在。

我在嘗試着:

  • 識別不在“其他”工作表中的ID,將整行復制到sheet3

  • 檢查其他工作表中是否存在C列值,則必須找出兩行12列的差異

例如,在sheet1中:

ID          Jan Feb Mar Apr May
14578596    125 125 125 0   10
22345697      10 10 10 10 20 
12563654    150 150 75  75  75
85745896    890 890 890 890 790

在表2中:

ID          Jan Feb Mar Apr May
14578596    125 125 125 0   10
12563654    150 150 75  75  75
85745896    890 890 790 890 790
87544545    0 0 0 0 10 

在工作表3中,它應復制新添加的ID 87544545和以下各列中的所有值。 它也應該復制ID的22345697整行,因為另一張表中不存在ID被認為是不同的。

對於兩個表中都存在的其他表,應取“ Jan-Jan”並返回差值。 因此,應該查找其他工作表中是否存在“ ID”,如果存在,則將Jan-Feb-Mar彼此進行比較。 請注意,ID在工作表中的位置不同。 使用ID 85745896,它將返回:

ID       Jan Feb Mar  Apr May
85745896 0   0   100  0   0

我嘗試查看諸如比較2張紙中的數據並查找不匹配項以及檢查兩行是否在MS Excel中完全相同的主題,但似乎無法使它們在我的挑戰下工作。

Sub compare()
    For i = 1 To last_cell_mainSheet
        For j = 1 To last_cell_sheet2
        If Worksheets("main_sheet").Range("a" & i).Value = Worksheets("sheet2").Range("a" & j).Value 
        Then
           Worksheets("main_sheet").Range("C" & i).Value = Worksheets("sheet2").Range("b" & j).Value
        End If
        Next j
    Next i
End Sub

解決此問題的最簡單方法是使用excel公式。 (如果您只想執行一次或偶爾執行一次。)如果您需要重復執行(如果經常執行(或擁有大量數據),請使用VBA>

您將需要了解有關VLOOKUP以及IF和ISNA的信息。

  1. 從本質上講,您可以在兩張工作表中添加一列,以在另一張工作表中查找ID,如果找到則返回Y或N。

您的公式將是:

=IF(ISNA(VLOOKUP(MyIDCell,TheTableInTheOtherSheet, 1, false)),"N","Y")

TheTableInTheOtherSheet是一個從ID列開始的范圍(並且只需要一個列)

  1. 做一月一月。

再次在sheet1上使用vlookup公式列以從sheet2獲取Jan的值。 添加公式進行比較。

您的公式將類似於:

=VLOOKUP(MyIDCell,TheTableInTheOtherSheet, 2, false)

TheTableInTheOtherSheet是從ID列(和兩列寬)開始的范圍

2獲取第二列值

有了數據后,您可以排序或過濾以減少需要復制到工作表3的列表(最好排序)。 然后復制並粘貼它們。

暫無
暫無

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

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