#excel #vba
Вопрос:
Ранее я спрашивал о том, как найти данные в столбце, сопоставить их с листом. Затем сопоставьте строки из столбца со строками с этого листа и скопируйте их. Было предложено использовать Индекс/Соответствие, что было очень полезно, но я застрял. Я смог заставить его делать то, что я хотел, если все было на одной странице, но не тогда, когда они находятся на разных листах.
Мой первый лист «Обзор»
У каждого ECU 1-3 есть такой лист: «2»
Я хочу найти правильный лист и ввести данные в правильную колонку «Транспортные средства». Я делаю это шаг за шагом, но, похоже, не могу пройти мимо жесткого кодирования, чтобы это сработало.
Sub Trial_Script()
Dim main_ws As Worksheet, veh_ws As Worksheet
Dim Veh_IDs As Range, Veh_ID As Range
Dim a As Variant
Dim j As Long
Set main_ws = Sheets("Overview")
Set Veh_IDs = main_ws.Range(Cells(2, 2), Cells(2, 4))
For Each veh_ws In Sheets
For Each Veh_ID In Veh_IDs.Cells
If veh_ws.Name = Veh_ID Then
a = Veh_ID
For j = 4 To 7
main_ws.Cells(j, 2).Value = Worksheets(veh_ws).WorksheetFunction.Index(Range("H4:H7"), Application.Match((Worksheets(main_ws).Cells(j, 1).Value), Worksheets(veh_ws).Range("G4:G7"), 0))
On Error Resume Next
Next j
End If
Next Veh_ID
Next veh_ws
End Sub
Комментарии:
1. Трудно понять структуру ваших данных только по этим картинкам. Поделитесь новыми фотографиями, на которых у вас есть данные с заголовками, и покажите практический пример.
2.
Worksheets(veh_ws).WorksheetFunction
—WorksheetFunction
это свойствоApplication
, а не рабочего листа.3. Каждый раз, когда вы используете
Range
илиCells
он должен быть указан с явным рабочим листом.