首页 文章

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

提问于
浏览
-1

我一直试图比较两张纸 . 这些床单是版本,一个是八月制作,另一个是九月制作 . 在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
    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
    
  • 2

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

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

    • 基本上,您可以向两个工作表添加一列,在另一个工作表中查找ID,如果找到则返回Y或N.

    你的形式将是这样的:

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

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

    • Jan-Jan位 .

    再次使用sheet1上的vlookup公式列从sheet2获取Jan的值 . 添加公式来比较它们 .

    你的公式将是这样的:

    =VLOOKUP(MyIDCell,TheTableInTheOtherSheet, 2, false)
    

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

    2获取第二列值

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

相关问题