Доброго вечера. Помогите разобраться с данными:нужно из столбца Е(отсортированы, но не подряд) найти соответствующее значение в А (номера по порядку). и в столбце В вписать фамилию. Если такого номера нет оставить место свободным. Спасибо.
Объединение большого количества данных в одну таблицу
08.04.2015 17:58:54
|
|
|
|
08.04.2015 18:02:22
Дам действительно больше 700000 строк? Тогда SQL однозначно.
Файл должен находится в папке C:\1\
Изменено:
Неизлечимых болезней нет, есть неизлечимые люди.
|
|
|
|
08.04.2015 18:44:41
Такое решение могу предложить только в VBA. Количество строк регулируйте. Чем больше строк - тем дольше выполняется макрос. Порядка нескольких минут.
Изменено: |
|||
|
|
08.04.2015 20:19:52
Не понятно, чем не устраивает ВПР:
Да и строк там вроде бы не 70.000, а около 10.000 (с 710.000 по 719.999) - разница есть. Далее, если номера в столбце А действительно строго по порядку, с 710.000 по 719.999, то макрос можно сделать очень коротким, т.к. нужный нам номер строки, в которую писать фамилию, можно вычислить через сам номер
на 10.000 строк работает меньше секунды, на 710.000 строк - секунды 2-3 ivanna, такое большое количество строк с их полным перебором лучше делать на массивах, не обращаясь каждый раз к ячейкам в цикле. гораздо экономичнее забрать 1 раз диапазон в массив и искать уже в нем. В крайнем случае, можно использовать для поиска WorksheetFunction.Match - работает безусловно, быстрее, чем перебор по 1 ячейке).Тем более, что нам нужен номер строки для записи найденного значения.
Изменено:
F1 творит чудеса
|
|||||
|
|
08.04.2015 20:44:08
Коллега, вы уверены что это 11 trgArr(srcRng(i, 1) - j + 1, 1) = srcRng(i, 2) подтянет к нужному номеру ФИО нужное ФИО?
Неизлечимых болезней нет, есть неизлечимые люди.
|
|
|
|
08.04.2015 21:01:01
Словарь тут нужен. Sakh, у Вас не Мак случайно?
Изменено: |
|||
|
|
08.04.2015 21:27:38
Массив а используется два раза для разноразмерных диапазонов. Разве ReSize не нужен?
типа
Изменено:
Неизлечимых болезней нет, есть неизлечимые люди.
|
|||
|
|
08.04.2015 21:29:26
Зачем?
|
|
|
|
10.04.2015 09:43:30
если номера в столбце А идут строго по порядку (1,2,3,4,5... или 710000,710001,710002,710003,....) то, например, номер из второго массива, равный 5 (это srcRng(i, 1) ), находится на 5 позиции просматриваемого массива. Если первый номер просматриваемого массива равен 710000, а искомый - 710010, мы вычитаем 710010-710000+1, получаем 11-ю позицию в просматриваемом массиве, что и искали. Такая логика, естественно, работает только при выполнении одновременно двух условий: 1) код это число, и 2) коды в просматриваемом массиве расположены по порядку, по возрастанию и без пропусков (условно, +1 в каждой строке). Так что решение Hugo, конечно, корректнее. Но для конкретного примера автора топика - мое тоже работает
F1 творит чудеса
|
||||
|
|
|||