比较两张纸并找出差异,复制到第三张纸

时间:2015-09-18 09:14:57

标签: excel vba excel-vba

我一直试图比较两张纸。这些床单是版本,一个是八月制造的,另一个是九月制造的。在Sheet1中,列C我有一个唯一的ID,也可以在表2中,但也可能不存在。另一方面,我可以在表2中使用新的ID,这在Sheet1中不存在。

我想:

  • 识别不在“其他”工作表中的ID,将整行复制到工作表3

  • 检查其他工作表中是否存在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整行,因为在另一张表中不存在被视为差异。

对于其他两张纸中存在的纸张,它应采用“Jan-Jan”并返回差值。所以它应该查找其他表中是否存在“ID”,如果存在,则将Jan-Feb-Mar相互比较。请注意,ID不在工作表中的相同位置。 ID 85745896将返回:

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

我试过看一下这样的话题 Compare data from 2 sheets and find mismatchesCheck if two rows are the EXACT SAME in MS Excel但似乎无法使它们在我的挑战中发挥作用。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

解决此问题的最简单方法是使用excel公式。 (如果您只想做一次,或偶尔做一次。)如果您需要经常重复(或有大量数据),请使用VBA>

您需要了解VLOOKUP以及IF和ISNA。

  1. 基本上,您可以向两张纸张添加一列,在另一张纸张中查找ID,如果找到则返回Y或N.
  2. 你的形式将是:

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

    TheTableInTheOtherSheet是一个以ID列开头的范围(只有neededing一列)

    1. Jan-Jan位。
    2. 再次使用sheet1上的vlookup公式列从sheet2获取Jan的值。添加一个公式来比较它们。

      您的公式将类似于:

      =VLOOKUP(MyIDCell,TheTableInTheOtherSheet, 2, false)
      

      TheTableInTheOtherSheet是一个以ID列开头的范围(宽两列)

      2获取第二列值

      获得数据后,您可以对数据进行排序或过滤,以减少需要复制到表3的列表(最好排序)。然后复制并粘贴它们。

相关问题