Добрый день! Прошу помочь, чувствую что что-то подобное уже делал и вопрос простой, но никак не могу найти решение. Надеюсь на вашу свежую голову. Суть вопроса: есть таблица в одном столбце есть повторяющиеся данные, во втором столбце есть значение, необходимо в третьем столбце для всех повторяющихся данных из первого столбца заполнить позиции из второго столбца.
Результат нужен рядом. Эту тему я читал, эти приёмы использую мне они не подходят. Потому что в столбце В в значениях заполнения данных может и не быть, тогда ячейки должны остаться пустыми
mugivara: для таблицы на 100 000 строк подвисает эксель на полчаса
при больших объёмах надо либол полностью отказываться от функций, либо оставоять самые шустрые (не эта). Считать макросом и выгружать результат
Пробуйте
Код
Option Explicit
'====================================================================================================
Sub Test()
Dim dic As New Dictionary
Dim rng As Range
Dim arr, t!, r&
Dim cD&, cF&, cO&
t = Timer
Set rng = Range("A2:C20")
arr = rng.Value
cD = 1: cF = 2: cO = 3
For r = 1 To UBound(arr, 1)
If Len(arr(r, cF)) Then dic(arr(r, cD)) = arr(r, cF)
Next r
For r = 1 To UBound(arr, 1)
If dic.Exists(arr(r, cD)) Then arr(r, cO) = dic(arr(r, cD))
Next r
rng.Value = arr
MsgBox "Done", vbInformation, Format(Timer - t, "0 сек")
End Sub
'====================================================================================================
'====================================================================================================
Скрин
Расшифровка переменных для столбцов (имеются ввиду столбцы диапазона, а не листа): cD = colData = столбец с исходными данными cF = colFormula = столбец с присваиваемыми данными cO = colOut = столбец для вывода информации
Если библиотеку скриптов Scripting.Dictionary к файлу подключить нельзя, то используйте позднее связывание
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Это понятно. Формулы ВПР на таких масштабах эксель быстро просчитывает (несколько секунд). Я так понимаю тут чтобы ускорить надо формулой массива решать, возможно АГРЕГАТ быстрее будет.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Круто!!! За секунду всё решило!!! Не смог правда к себе это применить, пришлось в эту форму из своей таблицы переносить данные. Но главное что все работает и сокращает потерю трудодней кратно )))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄