|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
Доброго дня! Имею массив данных 250 000 строк. Который нужно преобразовать, а именно: добавить 4 новых столбца, в которых будет прописана формула vlookup следующего вида Код: sql 1.
Для каждого такого столбца макрос работает чуть ли не полчаса Иногда вообще тупо уходит в астрал. Можно ли как-то ускорить макрос? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 13:57 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
Отключи пересчёт формул. А то он возбуждается на изменение каждой ячейки. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 14:17 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
попробуйте отключить автопересчет до макроса, потом вернуть назад https://msdn.microsoft.com/en-us/library/office/ff821260.aspx http://www.cpearson.com/excel/optimize.htm Normally, Excel will recalculate a cell or a range of cells when that cell's or range's precedents have changed. This may cause your workbook to recalculate too often, which will slow down performance. You can prevent Excel from recalculating the workbook by using the statement: Application.Calculation = xlCalculationManual At the end of your code, you can set the calculation mode back to automatic with the statement: Application.Calculation = xlCalculationAutomatic ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 14:19 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
AkinaОтключи пересчёт формул. А то он возбуждается на изменение каждой ячейки. Пробовала. Не помогает (( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 14:54 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
тогда бы я переносил расчет на базу. хотя бы в аксесс. возможно, на запросах то оно быстрее сделает. а большой массив, по которому лукап ищет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 15:18 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
Vladimir Baskakovтогда бы я переносил расчет на базу. хотя бы в аксесс. возможно, на запросах то оно быстрее сделает. а большой массив, по которому лукап ищет? да нет, 3 столбца, 40 строк ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 15:20 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
TakayavotПробовала. Не помогает ((Покажите как пробовали. А то есть подозрение, что пересчет отключаете перед каждой строкой, а не перед всеми действиями. Вот еще почитайте, вдруг что поможет: Как ускорить и оптимизировать код VBA ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 16:20 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
а если вручную клацнуть протягивание вниз - тоже долго? или выделить диапазон и вбить формулу? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 16:41 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
Takayavot Код: sql 1.
Странновато или мне кажется? Точно "b2" а не "a2"? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 16:56 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
Vladimir Baskakov, my 2 cents Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 16:57 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
Takayavotдобавить 4 новых столбца, в которых будет прописана формула vlookup следующего видаВ этих 4 столбцах в каждой строке поиск ведется по одной и той же ячейке (ст. А)? Если да, то можно один раз найти номер строки на Sheet1 с помощью ПОИСКПОЗ, а потом подтягивать строку из 4 ячеек с помощью ИНДЕКС. Если отсортировать ст. А Sheet1 по возрастанию, можно использовать ПОИСКПОЗ с интервальным поиском (последний аргумент 1), при этом поиск происходит во много раз быстрее. Если конечная цель - получить значения, а не формулы, то надо формировать массив и выгружать на лист одним действием. Приложите файл-пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 17:07 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
Vladimir Baskakovа если вручную клацнуть протягивание вниз - тоже долго? или выделить диапазон и вбить формулу? да, так же долго. Именно поэтому в частности пишу макрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 10:20 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
hclubmkTakayavot Код: sql 1.
Странновато или мне кажется? Точно "b2" а не "a2"? там все верно. Там хитрая формула. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 10:20 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
TakayavotVladimir Baskakovа если вручную клацнуть протягивание вниз - тоже долго? или выделить диапазон и вбить формулу? да, так же долго. Именно поэтому в частности пишу макрос. когда эксель считает долго, переношу нагрузку на базу. Если там есть хитрые формулы - не глядя на образец не подскажу, как и что оптимизировать. в принципе, совсем любая база довольно быстро соединит 250 килострок данных с 40-50 строками справочника. даже джаваскриптина думаю справится - если там построить хэш ключ - значения, и построчно читать текстовый файл, выделять ключевое поле, искать в хэше, выводить в итоговый текстовый. приклеивая в хвост найденное по хэшу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 13:13 |
|
Ускорить макрос (протягивание формул в Excel (250 тысяч строк)
|
|||
---|---|---|---|
#18+
Takayavot, Просто на всякий случай. Вот с такими много-много-многострочными вещами неплохо работает PowerPivot (есть такой аддон). В смысле - он с ними работает (особенно на предмет всяких массовых операций) сильно шустрее собственно Excel'я. Правда, там своя собственная логика. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 14:27 |
|
|
start [/forum/topic.php?fid=61&gotonew=1&tid=2173134]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
13ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 278ms |
total: | 413ms |
0 / 0 |