比较两个不同Excel表格和工作簿中的列,然后将匹配值发布到另一列中

我在试图弄清楚这个macros时遇到了很多麻烦,所以现在我在一个工作簿中使用了两张表格。 我想使用两个不同的工作簿,但这不像问题那么重要。

要解释,Sheet1列E是ID号,在Sheet2列A是ID号,现在如果Sheet1 E中的任何值匹配Sheet2列A中的值,我需要macros从Sheet 2列D中复制相应的单元格所以基本上如果E5(从表1)匹配Sheet2中的A1,我需要macros将Sheet2的D1输出到Sheet1的F5。 如果Sheet1列E与Sheet 2列A中的值不匹配,也可以删除Sheet1列F的值。

我有一些代码,但它只是从Sheet2的列D粘贴值如果Sheet1列E的值匹配Sheet2列A的值。问题是当从Sheet2粘贴的值粘贴在Sheet1的列F中,并且值不是与在Sheet2中匹配的正确值匹配。 他们只是愚蠢的。 所以如果Sheet1列E是这样的

Sheet1 Column E Sheet1 F 1317 relays_120x120.jpg 1319 Control%20boards_120x120 1320 Control%20boards_120x120 Sheet2 Column A Sheet2 column D 1317 relays_120x120 1318 /relays_120x120 1319 ebay/SingleRunOval 

但实际上,我需要它们都是相等的,如果Sheet1列E的值不是Sheet2列中的值,那么不要在Sheet1列中发布链接F将其留空。

这是我的代码

 Sub FindMatches() Dim oldRow As Integer Dim newRow As Integer Dim i As Integer i = 1 For oldRow = 2 To 1170 For newRow = 1 To 1170 If Worksheets("Sheet1").Cells(oldRow, 5) = Worksheets("Sheet2").Cells(newRow, 1) Then Worksheets("Sheet1").Cells(i, 6) = Worksheets("Sheet2").Cells(oldRow, 4) i = i + 1 Exit For End If Next newRow Next oldRow End Sub 

听起来就像你可以用VLookupfunction来实现你的目标。 将此公式添加到Sheet1 F1: =IFERROR(VLookup(E1,Sheet2!A:D,4,FALSE),"")

如果find匹配项,该公式将复制单元格到sheet1中,但如果找不到匹配项,单元格将保持空白。

尝试使用下面的代码。 我刚刚使用StrComp函数修改了你的代码

 Sub FindMatches() Dim oldRow As Integer Dim newRow As Integer Dim i As Integer i = 1 For oldRow = 1 To 1170 For newRow = 1 To 1170 If StrComp((Worksheets("Sheet1").Cells(oldRow, 5).Text), (Worksheets("Sheet2").Cells(newRow, 1).Text), vbTextCompare) <> 0 Then i = oldRow Worksheets("Sheet1").Cells(i, 6) = " " Else Worksheets("Sheet1").Cells(i, 6) = Worksheets("Sheet2").Cells(newRow, 4) i = i + 1 Exit For End If Next newRow Next oldRow End Sub