6

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

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

我有一些代码,但如果 Sheet1 列 E 的值与 Sheet2 列 A 中的值匹配,它只会粘贴 Sheet2 列 D 中的值。问题是当从 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
4

2 回答 2

3

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

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

于 2013-07-31T02:23:53.787 回答
1

尝试使用下面的代码。我刚刚使用 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
于 2014-09-21T06:04:43.637 回答