将数据从一个电子表格搜索到另一个电子表格

时间:2017-11-10 10:50:35

标签: excel excel-vba vba

我正在创建一个宏,它应该检查用户输入列表中的一组值。如果源列表中的值不在用户输入中,则必须将它们复制到不同的电子表格中。宏运行没有错误,但它不会过滤任何结果。它只是复制一切。 这是代码:

Sub CheckRow()
For i = 2 To Application.CountA(Worksheets("Source").Range("A:A")) 'Loop through rows
    Set rgFound = Worksheets("Input").Range("A:A").Find(Worksheets("Source").Range("A" & i).Value, LookAt:=xlWhole) 'Find the value from the source list in the Input List
If rgFound Is Nothing Then 'If there is no match it goes to output
    Worksheets("Output").Range("A" & Application.CountA(Worksheets("Output").Range("A:A")) + 1).Value = Worksheets("Source").Range("A" & i).Value 'Copy the value beow any existing values
End If
Next i
End Sub

我将非常感谢您提供的任何建议。

2 个答案:

答案 0 :(得分:0)

您的情况应为If Not rgFound Is Nothing Then(代码中缺少Not)。基本上,Find方法找不到任何东西,因此一切都被复制了。

我还建议您在代码表的顶部使用Option Explicit。这会提醒您在j中使用变量Find(Worksheets("Source").Range("A" & j)。我想你正在寻找A & i。但是,由于j似乎值为0,因此您的代码不应复制任何内容,因为没有第0行。使用Option Explicit会强制您声明所有变量,在阅读代码时不会像这样猜测游戏。由于您是大多数时间阅读它的人,因此您也将成为改善的主要受益者。

答案 1 :(得分:0)

固定。似乎Find方法认为Value和=" Value"是两件不同的事情。一旦我将所有公式单元格更改为纯文本,我的代码就像一个魅力。