Есть ли в VBA индексоподобная функция, которая может возвращать данные нескольких столбцов при идеальном совпадении? - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть 2 рабочие книги с такими данными:

Raw Master Key File

Как видно, столбец А - мой уникальный ключ для сопоставления 2 рабочих книг. Значения, которые я хочу заполнить, это «TBD» в файле Raw (изображение 1). Поэтому я ищу ключ 11x в мастер-файле и получаю значения для столбца B, C & D (сборка, подтип и деталь) для этого ключа.

Я "попробовал" match весело c, но не смог определить пункт назначения для копирования поискового значения, и мой код все равно возвращает только одно значение за раз ...

for R = 2 To lastrow
    y=application.match(worksheet2.cells(R,1), worksheet2.range("A:A"),0)
If not application.isnumber(y) Then
    worksheet2.cells(x,1).copy destination:=worksheet1.cells(**?????????**)

Итак, могу ли я вернуть все три значения столбца, используя одну формулу соответствия индекса? Если нет, то как я могу написать функцию поиска в VB? Пожалуйста, помогите.

1 Ответ

1 голос
/ 11 апреля 2020

Этот код выполняется в рабочей книге, в которой начинается поиск.

Private Sub CmdBtn_Click()
On Error GoTo workbookErr
Dim WbMaster As Worksheet: Set WbMaster = Workbooks("MasterWorkBook.xlsm").Worksheets("Sheet1")
Dim WbCopyTo As Worksheet: Set WbCopyTo = ThisWorkbook.Worksheets("Sheet1")
Dim rangeWbCopyTo As Range, rangeWbMaster As Range
Dim cellWbCopyTo As Range, cellWbMaster As Range
Dim i As Integer

With WbMaster
    Set rangeWbMaster = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With
With WbCopyTo
    Set rangeWbCopyTo = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With

For Each cellWbCopyTo In rangeWbCopyTo
    For Each cellWbMaster In rangeWbMaster
        If cellWbCopyTo.Value = cellWbMaster.Value Then
            For i = 0 To 2
                cellWbCopyTo.Offset(0, 1 + i).Value = cellWbMaster.Offset(0, 1 + i).Value
            Next i
            Exit For
        End If
    Next cellWbMaster
Next cellWbCopyTo
Exit Sub
workbookErr:
MsgBox "Open MasterWorkBook before executing the search.", vbCritical
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...