使用VBA比较不同表格中的单元格,并在单元格不匹配时在一张纸上插入新行

时间:2016-12-21 17:37:42

标签: excel-vba vba excel

我有两个工作表,我需要将工作表Blah中的实体ID与工作表Blah1中的实体ID进行比较。实体ID存储在两个工作表的A列中。如果Blah中存在实体ID但Blah 1中不存在实体ID,我需要在Blah 1表中插入一个空白行,它缺少实体ID。我需要比较的行数范围将逐月变化。我知道Blah 2上的第5行到第92行匹配第2行到第89行,但它开始在第11行插入并继续插入行直到我遇到逃逸。我知道我也可能需要另一个,如果它告诉代码转到下一个我,如果实体ID是空白的,但我不知道该怎么做。

总而言之,我需要比较实体ID并为缺少的任何实体ID插入新行。任何帮助将不胜感激。

 Sub InsertNewRow()
 Dim i As Long, j As Long, lastrow1 As Long, lastrow2 As Long

 lastrow1 = Sheets("Blah").Range("A" & Rows.Count).End(xlUp).Row
 lastrow2 = Sheets("Blah1").Range("A" & Rows.Count).End(xlUp).Row

     For j = 2 To lastrow2
      For i = 5 To lastrow1
        If Sheets("Blah").Cells(j, 1) <> Sheets("Blah1").Cells(i, 1) Then
            Sheets("Blah1").Cells(i, 1).EntireRow.Insert
 End If
     Next i
 Next j
 End Sub

1 个答案:

答案 0 :(得分:0)

我实际上能够在Excel先生身上找到答案。我认为这是双重Fors让我搞砸了。一旦弄明白,我就能弄明白如何将表格Blah中所需的值添加到工作表Blah1中。在根据斯科特所说的搜索时,我无法找到我真正需要的东西。我确信有更简单的方法可以做到这一点,而且随着我获得更多经验,也许我会弄清楚。

    Sub InsertRows()
     Dim lastrow As Long, i As Long, j As Long

     lastrow = Sheets("Blah").Range("A" & Rows.Count).End(xlUp).Row
    j = 14

    For i = 2 To lastrow
    If Sheets("Blah1").Cells(j, 1).Value <> Sheets("Blah").Cells(i, 1).Value Then
     Sheets("Blah1").Rows(j).Insert Shift:=xlDown
    Sheets("Blah1").Cells(j, 2).Value = Sheets("Blah").Cells(i, 10).Value
    Sheets("Blah1").Cells(j, 3).Value = Sheets("Blah").Cells(i, 11).Value
    Sheets("Blah1").Cells(j, 5).Value = "2017"
    Sheets("Blah1").Cells(j, 6).Value = Sheets("Blah").Cells(i, 2).Value
    Sheets("Blah1").Cells(j, 7).Value = Sheets("Blah").Cells(i, 3).Value
    Sheets("Blah1").Cells(j, 8).Value = Sheets("Blah").Cells(i, 4).Value
     Sheets("Blah1").Cells(j, 9).Value = Sheets("Blah").Cells(i, 5).Value

    End If
     j = j + 1
    Next i
    End Sub