我有2个电子表格; 1用于原始数据(表1),而1用于计算和数据转换(表2)
随着工作表1中项目的数量每天增加,是否有代码可以针对工作表2检查工作表1中是否有新项目,然后将新项目添加到工作表2中的第一个空白行中
例如在工作表1中,我有:
苹果 橙子 芒果 梨 葡萄
但是在工作表2中,我有:
苹果 橙子 芒果
如何检查工作表2中是否有工作表1中的新项(即梨和葡萄),然后将它们添加到下一个空行(即芒果正下方的行)中
预先感谢!
修改:18/04/11
谢谢您的帮助!提供的解决方案按预期工作。现在,我有一种情况b,我需要根据一组条件将新项目添加到“表1”中“表3”的下一个空行中
例如来自中央原始数据表1:
我想将水果,红色和四舍五入的新条目转移到工作表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