0

我一直在尝试处理一个特定的案例,但还不知道从我目前的情况可以去哪里。任何帮助将不胜感激。

我发现了一些我想尝试看看我是否可以从这里构建到我的特定案例的东西。我将内容从 file2 复制到 sheet3 而不是使用两个单独的文件来查看这是否也可以工作。但是,在改变值之后,我仍然得到一个错误(运行时错误 9。下标超出范围)

最初,我有两个 excel 文件。

File1 在 sheet2 中的 A5 之后的列 E 中有项目名称。File2 在工作表 1 中的 A3 之后的列 A 中有项目名称。

我想编写一个宏,该宏可以将数字(条形码)放入 file2 中的 ColumnD 中,从 File1 中的 ColumnD 中找到,对于 file2 中 ColumnA 中与 file1 中 ColumnE 中的单元格值匹配的每个单元格值。

换句话说,File2 列 A 中的项目名称在列 D 中没有条形码,搜索 File1 列 E 中所有项目的列表,找到完全匹配的名称,从包含条形码的列 D 的同一行复制值,将条形码值粘贴到 File2 为空D 列。

Sub Find_Barcode()

Dim PartRngSheet1 As Range, PartRngSheet2 As Range
Dim lastRowSheet1 As Long, lastRowSheet2 As Long
Dim cl As Range, rng As Range

lastRowSheet1 = Worksheets("Sheet2").Range("E65536").End(xlUp).Row
Set PartRngSheet1 = Worksheets("Sheet2").Range("A1:A" & lastRowSheet1)

lastRowSheet2 = Worksheets("Sheet3").Range("A65536").End(xlUp).Row
Set PartRngSheet2 = Worksheets("Sheet3").Range("A1:A" & lastRowSheet2)

For Each cl In PartRngSheet1
    For Each rng In PartRngSheet2
        If (cl = rng) Or (cl = rng.Offset(0, 1)) Then
            rng.Offset(0, 4) = cl.Offset(0, 1)
        End If
    Next rng
Next cl

End Sub
4

1 回答 1

1

试试下面的代码:假设 File1 和 File2 是两个不同的工作簿并且是打开的。

Sub Find_Barcode()

    Dim lastRow As Long, rngFind As Range, rngFound As Range
    lastRow = Workbooks("File2").Sheets("sheet1").Range("A65000").End(xlUp).Row

    Workbooks("File1").Activate
    Set rngFind = Workbooks("File1").Sheets("sheet2").Range("E5", Range("E65000").End(xlUp).Row)


    For i = 3 To lastRow

        Set rngFound = rngFind.Find(what:=Workbooks("File2").Sheets("sheet1").Cells(i, 1))
        If Not rngFound Is Nothing Then
            rngFound.Offset(0, -1).Copy Workbooks("File2").Sheets("sheet1").Cells(i, 4)
        End If

    Next

End Sub
于 2013-04-07T07:08:00.787 回答