我一直在尝试处理一个特定的案例,但还不知道从我到目前为止所知道的到哪里去。如有任何帮助,我将不胜感激。
我发现了一些东西,我想看看我是否可以从它建立到我这里的特殊情况。我将内容从file2复制到sheet3,而不是使用两个单独的文件,看看这是否也可以工作。但是,在改变周围的值之后,我仍然得到一个错误(运行时错误9)。下标超出范围)
原来,我有两个excel文件。
File1在sheet2中A5之后的列ne中有项目名称。File2在sheet1中A3之后的列na中有项目名称。
我想写一个宏,可以放置一个数字(条形码)到ColumnD在file2中,从File1中的ColumnD找到,为每个单元格值在ColumnA从file2中匹配单元格值在ColumnE从File1。
换句话说,在列na中有项目名称的File2在列nd中没有条形码,搜索File1列ne中所有项目的列表,找到确切的名称匹配,从同一行复制包含条形码的列D的值,将条形码值粘贴到File2空列nd中。
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
试试下面的代码:假设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