Excel 2010macros来比较两列以查找匹配的值

我对Excelmacros和VBA很新,请好好的帮我一下 。 这里是情况,我有两张(Sheet1和Sheet2)在Sheet1中有两个列的名称和编号,在Sheet2中我有其他信息,如date,收费等数字。

表1

没有名字电话号码

1鲍勃7254

2克里斯汀5468

3 Luara 1234

Sheet2中

没有电话号码date收费名称

1 1145 12/30/2014 2 $

2 7254 11/26/2014 3 $

3 2365 3/9/2014 7 $

4 5468 3/10/2014

5 1234 3/11/2014

我想要比较sheet2(B列)的PhoneNumber列与Sheet1(C列)的PhoneNumber列,如果find匹配,然后将Sheet1中Name(B列)复制到Sheet2(E列)的Name列中。 如果不匹配,则sheet2中的名称列必须为空。

我已经search并find下面的代码,并修改了一下,但我不知道是否是正确的或不是:

Sub test() Dim rng1 As Range, rng2 As Range, i As Integer, j As Integer For i = 1 To Sheets("Sheet2").Range("B" & Rows.Count).End(xlUp).Row Set rng1 = Sheets("Sheet2").Range("B" & i) For j = 1 To Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row Set rng2 = Sheets("Sheet1").Range("C" & j) If rng1.Value = rng2.Value Then Range("B2:B" & TotalRows).Copy Destination:=Sheets("Sheet2").Range("E2") End If Set rng2 = Nothing Next j Set rng1 = Nothing Next i End Sub 

请帮助我,因为我这个项目的时间太短了,我将非常感谢您在这方面的帮助。

看起来你几乎在那里。 但是,您的副本需要稍微调整。 在下面的示例中,我添加了一个名为rngName的variables,用于存储要复制的名称的范围,并在for循环中为其指定一个值。 如果数字匹配(即rng1.value = rng2.value),它会将包含该名称的范围复制到表2中的关联行。请注意,我使用.Range(“E”&i)作为复制范围。 在您的示例中,复制范围将始终将该名称放在与始终分配给“E2”的单元格相同的单元格中。 此外,你有一个名为TotalRows的variables没有价值。 它必须在你复制它的原始代码中有意义,所以我也摆脱了这一点。 试试这个,让我知道它是如何为你工作的。

 Sub test() Dim rng1 As Range, rng2 As Range, rngName As Range, i As Integer, j As Integer For i = 1 To Sheets("Sheet2").Range("B" & Rows.Count).End(xlUp).Row Set rng1 = Sheets("Sheet2").Range("B" & i) For j = 1 To Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row Set rng2 = Sheets("Sheet1").Range("C" & j) Set rngName = Sheets("Sheet1").Range("B" & j) If rng1.Value = rng2.Value Then rngName.Copy Destination:=Worksheets("Sheet2").Range("E" & i) End If Set rng2 = Nothing Next j Set rng1 = Nothing Next i End Sub