Excel 在单元格中检查工作表中的新项目,并在新工作表中添加新项目

Excel 在单元格中检查工作表中的新项目,并在新工作表中添加新项目,excel,vba,Excel,Vba,我有2张电子表格;1个用于原始数据(表1),1个用于计算和数据转换(表2) 随着工作表1中的项目数量与日俱增,是否有代码可以对照工作表2检查工作表1中的新项目,然后将新项目添加到工作表2中的第一个空行 例如,在表1中,我有: 苹果 橙色 芒果 梨 葡萄 但在第2页中,我有: 苹果 橙色 芒果 如何检查表1中表2的新项目(即梨和葡萄),然后将它们添加到下一个空行(即芒果正下方的行) 提前谢谢 编辑:2018年11月4日 谢谢你的帮助!提供的解决方案按预期工作。现在,我有一个案例b,其中我需要根据一

我有2张电子表格;1个用于原始数据(表1),1个用于计算和数据转换(表2)

随着工作表1中的项目数量与日俱增,是否有代码可以对照工作表2检查工作表1中的新项目,然后将新项目添加到工作表2中的第一个空行

例如,在表1中,我有:

苹果 橙色 芒果 梨 葡萄

但在第2页中,我有:

苹果 橙色 芒果

如何检查表1中表2的新项目(即梨和葡萄),然后将它们添加到下一个空行(即芒果正下方的行)

提前谢谢

编辑:2018年11月4日

谢谢你的帮助!提供的解决方案按预期工作。现在,我有一个案例b,其中我需要根据一组标准将新项目添加到“表1”中“表3”的下一个空行中

例如,集中原始数据表1:

我想将水果、红色和圆形的新条目转移到第3页(即,在本例中,西红柿不在第3页中,我希望它结束):

谢谢大家!

Dim I as long 
I = 1
Do until isempty(worksheets.cells(1,i).value) 
比较行如果一个工作表中的单元格为空,则必须复制它

I = I + 1
Loop
开始时,您需要将I设置为1,否则将从0开始,这是不可能的

硬编码 假设数据位于列“B”中,并从两个工作表的第二行(或单元格“B2”)开始:

Sub CopyData()
  Const cLngFirstRow As Long = 2
  Const cIntCol As String = "B"

  Dim oRng1 As Range
  Dim oRng2 As Range
  Dim Cell1 As Range
  Dim Cell2 As Range

  Dim lngRow As Long 'Row to write to
  Dim blnNotFound As Boolean

  With Sheet1
    Set oRng1 = .Range(.Cells(cLngFirstRow, cIntCol), _
        .Cells(.Cells(.Rows.Count, cIntCol).End(xlUp).Row, cIntCol))
  End With
  With Sheet2
    Set oRng2 = .Range(.Cells(cLngFirstRow, cIntCol), _
        .Cells(.Cells(.Rows.Count, cIntCol).End(xlUp).Row, cIntCol))
    lngRow = .Cells(.Rows.Count, cIntCol).End(xlUp).Row
  End With

  For Each Cell1 In oRng1
    For Each Cell2 In oRng2
      If Cell1.Value = Cell2.Value Then
        blnNotFound = False
        Exit For
      End If
      blnNotFound = True
    Next
    If blnNotFound Then
      lngRow = lngRow + 1
      Sheet2.Cells(lngRow, cIntCol) = Cell1.Value
      blnNotFound = False
    End If
  Next

End Sub

注意:表1和表2是代码名。您可以根据需要重命名工作表名称。

您可以使用
RemoveDuplicates()
范围
对象的方法:

Sub CheckSheet()
    With Worksheets("Sheet1")
        With .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
            Worksheets("Sheet2").Range("A1").Resize(.Rows.Count).Value = .Value
            Worksheets("Sheet2").Range("A1").Resize(.Rows.Count).RemoveDuplicates Columns:=(Array(1))
        End With
    End With
End Sub

全新的还是独一无二的全新?另外,请分享您解决此问题的最佳尝试。有关发布的指导,请参阅和。如果blnNotFound=True,则不需要。。。。只要能找到。它已经是一个布尔值。