Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Выборка на очень большом массиве.
 
Добрый день, может подскажите еще одни вопрос. Есть массив на 500 000 строк. Его нужно отВПРить. Формулами это делать, так сказать, не очень весело. Если есть ссылка или может тема такая была, или макрос. Буду благодарен за подсказку или помощь.
файл прикладывать смысла не вижу
Изменено: alexthegreat - 16 Фев 2017 11:04:08
 
Цитата
alexthegreat написал:
файл прикладывать смысла не вижу
Согласен. Если помощь не нужна, то зачем? ))
 
Юрий М Понял. Файл прикладываю.
 
Массив, словарь, массив...
Код
Sub tt()
Dim a, i&
a = [a1].CurrentRegion.Value
With CreateObject("scripting.dictionary"): .comparemode = 1
For i = 1 To UBound(a): .Item(a(i, 1)) = a(i, 2): Next
a = [i1].CurrentRegion.Columns(1).Resize(, 2).Value
For i = 1 To UBound(a):  a(i, 2) = .Item(a(i, 1)): Next
End With
[i1].Resize(UBound(a), 2).Value = a
End Sub
 
Код
Sub Poisk()
Dim i As Long
Dim iLastRow As Long
Dim FoundFruit As Range
 iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
  For i = 1 To iLastRow
    Set FoundFruit = Columns("I").Find(Cells(i, "A"), , xlValues, xlWhole)
    If Not FoundFruit Is Nothing Then
      Cells(FoundFruit.Row, "J") = Cells(i, "B")
    End If
  Next
End Sub
 
Hugo, Kuzmich, спасибо большое. Буду пробовать
 
Find будет дольше.
По моему способу - учтите, что currentregion берёт только сплошную область, т.е. пропусков данных быть не должно! Ну или определяйте диапазон как делает Кузмич (мне лениво... писать больше :) ).
 
Спасибо большое, разобрался.
Изменено: alexthegreat - 16 Фев 2017 12:10:39
 
[M1]
 
Юрий М разобрался.   Невнимательность, или уже заработался  :D
Всем спасибо огромное.
Изменено: alexthegreat - 16 Фев 2017 12:11:34
Страницы: 1
Читают тему (гостей: 1)
Наверх