2013-04-07 49 views
0

我一直在嘗試處理某個特定情況,但尚未知道到目前爲止我所處的位置。任何幫助將不勝感激。Excel商品名稱搜索匹配 - 2打開文件

我發現了一些我想嘗試看看我是否可以從它構建到這裏的特定情況。我將內容從file2複製到sheet3,而不是使用兩個單獨的文件來查看這是否也可以工作。但是,在改變值後,我仍然有錯誤(運行時錯誤9.下標超出範圍)

本來我有兩個excel文件。

File1在sheet2中的A5之後開始的columnE中具有項目名稱。 File2在sheet1中的A3之後開始具有項目名稱。

我想寫一個宏,它可以將文件2中的一個數字(條形碼)放入文件2中的ColumnD中,該文件從File1中的ColumnD中找到,從file2中的ColumnA中的每個單元格值匹配file1中ColumnE中的單元格值。

換句話說,在列A中沒有條形碼的文件名稱的File2,在File1 ColumnE中的所有項目的搜索列表,從同一行中找到確切的名稱匹配,包含條形碼的D列的複製值,粘貼條形碼值存入File2空的columnD。

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 

回答

0

嘗試以下代碼: 假設文件1 &文件2是兩種不同的工作簿和打開。

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 
+0

Santosh,非常感謝您的回答。我忘了補充一點,我對VBA來說比較新,而且我現在正在學習它,這是我使用這種語言解決問題的第一個問題。我仍然試圖找出爲什麼或如何哈哈。對於緩慢的反應,我表示歉意,但是,我嘗試了你的建議。我仍然遇到錯誤。沒關係。我感謝您的幫助! :) – 2013-04-07 20:11:35