在工作表中检查单元格中是否有新项目,并在新工作表中添加新项目

时间:2018-11-03 06:49:14

标签: excel vba

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

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

例如在工作表1中,我有:

苹果 橙子 芒果 梨 葡萄

但是在工作表2中,我有:

苹果 橙子 芒果

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

预先感谢!

修改:18/04/11

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

例如来自中央原始数据表1:

我想将水果,红色和四舍五入的新条目转移到工作表3中(即,在这种情况下,西红柿不在工作表3中,我希望将其移交给工作表):

谢谢!

3 个答案:

答案 0 :(得分:0)

Dim I as long 
I = 1
Do until isempty(worksheets.cells(1,i).value) 

如果一个工作表中的单元格为空,则比较行,您必须将其复制。

I = I + 1
Loop

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

答案 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

注意:Sheet1和Sheet2是代号。您可以根据需要重命名工作表名称。

答案 2 :(得分:0)

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

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