2013-10-01 128 views
0

我有一個包含A1A10(可以更多或更少)的S/N列表的Excel工作簿(讓我們調用serial_numbers)。在不同的excel工作簿中搜索單元格值

現在我必須搜索A1的工作簿「數據庫」的價值。該值通常在工作簿「數據庫」的A1單元格中找到。

如果我找到A1的值,我需要複製並粘貼工作簿「數據庫」的B2的值,該數據庫中包含該值的當前庫存。

通過對Excel開發模式我得到了以下結果:

Sub Macro1() 
' 
' Check stock for S/N in database 
' 

' 
    Range("A1").Select 
    Selection.Copy 
    Workbooks.Open Filename:="database.xlsx", _ 
     UpdateLinks:=0 
    Range("A1").Select 
    Selection.Find(What:="XXXXXX", After:=ActiveCell, LookIn:=xlFormulas _ 
     , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False).Activate 
    Range("B1").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Windows("serial_numbers.xlsx").Activate 
    Range("B1").Select 
    ActiveSheet.Paste 
End Sub 

,上面一塊似乎是不能正常工作,並因爲即時通訊新的這個我不能明白爲什麼。你能幫助我嗎?

回答

0

如果您正在尋找non-vba解決方案,那麼您可以去尋找vlookup function

試試這個代碼:

Sub testMacro() 

    Dim wkbDB As Workbook 
    Dim rngFind As Range, rngSearch As Range, cell As Range 
    Dim shtDB As Worksheet 


    Set wkbDB = Workbooks.Open(Filename:="C:\database.xlsx", UpdateLinks:=0) 
    Set shtDB = wkbDB.Sheets("Sheet1") 

    Set rngSearch = ThisWorkbook.Sheets("Sheet1").Range("A1:A10") 

    For Each cell In rngSearch 
     Set rngFind = shtDB.Range("A1:A10").Find(What:=cell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows) 

     If Not rngFind Is Nothing Then 
      'serial_numbers.xlsx 
      cell.Offset(0, 1) = rngFind.Offset(0, 1) 
     End If 
    Next 
End Sub 
+0

@GabrielPicareli任何理由不接受的答案。要知道如何接受答案請參閱[this](http://stackoverflow.com/about)。 – Santosh

相關問題