Я пытаюсь реализовать макрос, который будет копировать результаты из другого листа на основе значений ячеек на активном листе. т.е. цикл по каждому элементу в GWworkStations() « и найти соответствие в столбце В„„Col Список““ листа, а затем скопировать соответствующие значения в» C: Е» к массиву MathedEntries «, поэтому я могу скопировать их обратно на активный лист. Однако приведенный ниже код возвращается пустым для «matchedRow», вместо того, чтобы сообщать номер строки. Может кто-нибудь помочь, пожалуйста? Я не могу понять, где проблема? Я не получаю сообщение об ошибке при запуске этого кода. Заранее спасибо.Соответствие строк в VBA с другого листа
dim MatchedEntries() as string
dim GWworkStations() as variant
number_of_rows = ActiveSheet.UsedRange.Rows.Count
With ActiveWorkbook.Worksheets("New Sheet")
GWworkStations() = range("B2:B" & number_of_rows)
End With
ReDim MatchedEntries(1 To r) 'Size the array to hold the results.
'for every cell that is not empty in GWworkStations(), search through column B of 'Col List ' sheet.
For i = 1 To number_of_rows
'matchedRow = Empty
On Error Resume Next 'Keep running if Excel MATCH function below doesn't find a match.
If Not IsEmpty(Cells(i, 1)) Then
matchedRow = Application.WorksheetFunction.Match(GWworkStations(i, 1), range("Col List!B:B"), 0)
If matchedRow = Empty Then Debug.Print "Empty " & matchedRow
If IsEmpty(matchedRow) Then 'No match.
MatchedEntries(i, 1) = "" 'GWworkStations(i, 1)
Else
'If GWworkStations(i, 1) = GWworkStations(i - 1) Then
If IsNumeric(matchedRow) Then 'Match was found.
MatchedEntries(i, 1) = Application.WorksheetFunction.Index(range("List!C:E"), matchedRow, 1)
Else 'MATCH function returned a non-numeric result.
MatchedEntries(i, 1) = ""
End If 'IsNumeric(MatchedRow)
End If 'IsEmpty(MatchedRow)
Else
End If
Next i
range("E2:G" & number_of_rows) = MatchedEntries() 'Write the tag name results out to range E:G.
@arcadeprecint большое спасибо за ответ. – Gudbahri
@arcadeprecint, если я хочу изменить макрос для поиска нескольких вхождений на другом листе и скопировать соседние ячейки на активный лист, что было бы лучшим способом сделать это? – Gudbahri
@ Gudbahri вы должны задать новый вопрос. Однако ссылки на разные рабочие листы не должны быть трудными? Вы делаете это в своем коде уже. Пожалуйста, не забудьте сначала попробовать. Просмотрев вышеприведенный код, у меня есть два неотложных предложения, которые помогут вам: Используйте «Опции Явно» (Google, что это значит). Это поможет вам написать когерентный код. Кроме того, не используйте 'On Error Resume Next' или, по крайней мере, деактивируйте его после соответствующей строки. Это причина, по которой вы не получаете сообщений об ошибках и очень плохой практике! (опять же, google, что это значит и как его использовать) – arcadeprecinct