[英]Comparing columns in two different excel sheets and workbooks, then posting the matching value into another column
我在尝试找出这个宏时遇到了很多麻烦,所以现在我在工作簿中使用了两张纸; 我想使用两种不同的工作簿,但这并不像问题那么重要。
为了解释,Sheet1列E是id号,在Sheet2列A中是id号,现在如果Sheet1 E中的任何值与Sheet2中A列中的值匹配,我需要宏来复制Sheet 2列D中的相应单元格所以基本上如果E5(来自表1)与Sheet2中的A1匹配,我需要宏来将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
听起来你可以用VLookup功能完成你的目标。 将此公式添加到Sheet1 F1: =IFERROR(VLookup(E1,Sheet2!A:D,4,FALSE),"")
如果找到匹配项,该公式会将单元格复制到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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.