Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Объединение таблиц по общей переменной
 
Вопрос именно в том, чтобы реализовать это на VBA, а не формулами или через  PowerPivot.

TheBestOfTheBest, если вопрос про мой вариант, то в начале я указал, что он у меня почти 6 часов отрабатывал. Но тогда суть автоматизировать задачу, если на её выполнение столько времени уходит и комп при этом вешается, ничего не нем толком не сделаешь.

Я надеюсь, что есть всё так возможность реализовать на VBA тоже самое, что я сделал, но намного быстрее? Коды могут и не совпадать, лист "дата2" это своего рода справочник, т.е. на листе "дата1" может быть меньше строк.
Объединение таблиц по общей переменной
 
Всем привет, кого надеюсь ЗАИНТЕРЕСОВАЛ мои вопрос.
Ситуация в следующем, есть 2 таблицы (в рамках примера приведено на листах), у них есть общее поле "Код",нужно по данному полю объединить эти таблицы.
Как я это сделал, добавил на лист "дата1" в шапку нужные поля, изначально их нет. Далее забираю в массив данные с обоих листов. Перебираю данные, добавляю в массив с листа "дата1" нужные данные из массива с листа "дата2". И возвращаю данные назад на лист "дата1". В примере сам код.
Правда работает слишком долго, фактически данных под 400 тыс.строк на каждом листе (для примера сократил, иначе бы не загрузилось). Добавлял в код таймер, запускал на ночь, получилось почти 6 часов на отработку (если с изначальными объемами под 400 тыс). при таких скоростях проще вручную проВПРить и то быстрее будет.
Буду благодарен, если поможете с решением данного вопроса, возможно есть более оптимальный метод, чем я использовал? Буду ОЧЕНЬ благодарен, если есть готовый пример.
Поиск данных через массив
 
Спасибо всем за комментарии, буду пытаться переделывать
Поиск данных через массив
 
Цитата
LVL написал:: С каким типом данных, по вашему, вы объявили переменную FinalRow_i1?
Да, согласен, получается FinalRow_i1 в данном случае будет Variant
Поиск данных через массив
 
Всем привет!
Есть задача, например на еженедельной основе приходит файл с данными в котором выгружается код товара и прочие значения (в приложенном файле внесены для примера на лист "данные"). Также есть справочник (в рамках примера лист "справочник"), в котором для каждого кода товара есть расшифровка его названия и категории. Нужно сверить эти файлы, найти для каждого кода его расшифровку (для листа "данные") и результат вывести в новый файл (в моём примере на лист "результат").
Как я это реализовал можно увидеть в модуле самого файла с примером. Но насколько я понимаю, если это будут файлы больших объемов, т.е. в справочнике будет 3000 кодов, а в файле с данными например 700 000 строк, то выполнение данного макроса будет занимать довольно длительное время.
Буду благодарен, если поделитесь идеями, как это можно сделать быстрее.  
Аналог сводной таблицы через массив в VBA
 
Hugo,
на "t as Variant" ошибку не выдал, ......но время выполнения макроса при обработке ~450 тыс.строк составило 6 ч.13 мин.!!!!
Как то совсем не хорошо.
При этом, когда изначально было "t$" и на 450 тыс.строк в ошибку кидал, я для пробы сокращал список тысяч до 50 строк и отрабатывало за 50-55 сек.
Аналог сводной таблицы через массив в VBA
 
Grr, Hugo,
1) k as integer - точно нет, т.к. ругается что "ForEach"может быть только с Variant или Object
2) k As Variant - все равно выкидывал на той же строке в ошибку

Я уже подумал, что может ошибка всё таки в "t$"? Попробовал поменять на "As Variant", но теперь жутко тормозит. Сначала минут 15 ждал, надоело остановил. Недавно на др.компе запустил, уже минут 30 висит.
Аналог сводной таблицы через массив в VBA
 
Hugo, не поможешь разобраться в ситуации? Попытался переложить твой код на реальную таблицу (~450 000 строк * 12 столбцов), но выкидывает в ошибку "Run-time error '13':Type mismatch" на строке:
Код
For Each k In d1.keys
Сокращаю таблицу ~ до 50 000 строк и все нормально отрабатывает. Данные по столбцам проанализировал, вроде всё нормально, разных типов нет.
Аналог сводной таблицы через массив в VBA
 
TheBestOfTheBest, спасибо за еще один вариант по моему вопросу!
Аналог сводной таблицы через массив в VBA
 
Hugo, спасибо большое за помощь, с датами вопрос решен! Теперь буду разбираться, чтобы на будущее вопросов не возникала по таким задачам.

Hugo, Grr, благодарю, что откликнулись и помогли полезными советами новичку :D
Аналог сводной таблицы через массив в VBA
 
Цитата
Hugo написал: Можно первую дату брать не первую попавшуюся, а минимальную, ну и последнюю аналогично.

А как - \\Можно первую дату брать не первую попавшуюся, а минимальную, ну и последнюю аналогично\\? Можете на этом же примере показать?
Изменено: alexss - 14.04.2015 10:05:02
Аналог сводной таблицы через массив в VBA
 
Grr, спасибо огромное за помощь ! ! !
Grr, Hugo, я так понимаю, что в рассматриваемом примере нужно в идеале сортировать данные по дате предварительно, если есть вероятность того, что они могут быть перепутаны? Т.к. для первой даты заказа береться первое попавшееся значение, для последней - соответственно последнее?
Аналог сводной таблицы через массив в VBA
 
Grr, я в VBA новичок, поэтому не могли бы дать пару разъяснений:
1) не понял где в коде береться первая\последняя дата заказа для каждого уникального № покупателя?
2) всё никак не могу понять, как мне на лист вернуть данные из CurrentDic?
Аналог сводной таблицы через массив в VBA
 
Добрый день!
Просьба оказать содействие в таком вопросе, приложил небольшой пример, чтобы проще было объяснить. На листе "изначально" есть таблица с № покупалеля, его ФИО, суммами и датами покупок. Нужно на новый лист получить для каждого уникального № покупателя: 1) его ФИО, просто первое попавшееся значение. допустим что оно может по разному писать и не важно, чтобы было уникальным; 2) сумму всех его заказов; 3) дату самой первой покупки; 4) дату последней покупки.
Итог должен получить например как на листе "результат".
Конечно это можно сделать средствами сводной таблицы через VBA, но предполагается, что входящие данные будут ГОРАЗДО больших объемов и суммируемых полей тоже будет больше, хотелось бы получить пример работы через массив.
Заранее благодарен за все идеи.
Доработка макроса по автоматическому объединению данных с нескольких книг
 
KuklP, спасибо.
С 1 вопросом разобрался с Вашей помощью :)
Доработка макроса по автоматическому объединению данных с нескольких книг
 
KuklP, спасибо за подсказку, однако даже это не помогло, пересчет всё равно не происходит, пока не сохранишь книгу.
Доработка макроса по автоматическому объединению данных с нескольких книг
 
Всем доброго времени суток!
Заранее извиняюсь если тема уже обсуждалась, но ничего самостоятельно не нашел.
Возникло несколько вопросов относительно макроса по автоматическому объединению данных с нескольких книг (Consolidated_Range_of_Books_and_Sheets):
1) у меня после отработки макроса напрочь отключается пересчет данных при дальнейших вычисления в той книге, в которую собрались данные, даже если посностью переоткрыть эксель. Возможно кто-то сталкивался с этим, в чем может быть причина? Т.е например в дополнительном столбце применяешь лубую формулу, хотя бы сложение 2 ячеек, протягиваешь данные, а значения не рассчитываются (хотя и формула корректно протягивается), везде визуально отображается результат значения первой ячейки, куда ввёл формулу. Пересчет происходит только послесохранения книги (т.е. нажал сохранить и тут же все пересчиталось).
2) Один вопрос - одна тема [МОДЕРАТОР]
Сам макрос прилагаю, заранее благодарен за любую помощь :)
Скрытый текст
Изменено: alexss - 17.05.2014 18:09:10
Страницы: 1
Наверх