Используйте что-то вроде этих строк:
Dim ws As Worksheet: Set ws = Sheets("State&City")
Dim State As Variant, City as Variant
Dim LastRow As Long
With ws
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
State = .Range("A2:A" & LastRow)
City = .Range("B2:B" & LastRow)
End With
- Итак, мы вытащили значения в массив
Variant
- Мы использовали явную ссылку на лист и избежали
.Select
Примечание. Это двумерные массивы, поэтому в приведенном выше случае вы можете ссылаться на такой элемент, как .Range("C2") = State(1,1)
или для n-го элемента: .Range("C2") = State(n,1)
В качестве альтернативы:
Объедините значения в один массив, например: StateCity
Dim ws As Worksheet: Set ws = Sheets("State&City")
Dim StateCity as variant
Dim LastRow As Long
With ws
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
StateCity = .Range("A2:B" & LastRow)
End With
Теперь вы можете обращаться к n-му состоянию с помощью:
.Range("C2") = StateCity (n,1)
Или обратитесь к n-му городу с:
.Range("C2") = StateCity (n,2)