在不同的Excel工作簿中搜索单元格值

时间:2013-10-01 01:33:13

标签: excel excel-vba vba

我有一个Excel工作簿(允许调用serial_numbers),其中包含A1A10的S / N列表(可以更多或更少)。

现在我必须在工作簿“database”上搜索A1的值。该值通常位于工作簿“database”的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

上面的那篇文章似乎没有正常工作,因为我是新手,我不知道为什么。你们有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果您正在寻找非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