|
|
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
Всем добрый день! У меня была такая задача: Есть список кодов и соответствующей им информации. Есть список городов. Каждому городу соответствует лист рабочей книги, и на листе снова список кодов с данными по ним. Необходимо создать таблицу с возможностью выбрать код и город и увидеть данные именно для них. То есть инфо с нескольких листов собирается в одну таблицу и потом автофильтром - выбор нужного. Я написала макрос, который создавал бы массив исходных кодов (скажем 50) и городо (где-то 20). И получается таблица 50*20 строк. Потом просто каждый код ищется на соответствуюзем листе. Но такой макрос работает оооочень медленно. Минут 15. Может ли как-то оптимизировать этот процесс? Код: plaintext 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. Заранее спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2011, 13:41 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
skleppi, непонятно зачем объединять листы городов, если выбор по городу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2011, 13:52 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
ПЕНСИОНЕРКА, имеется в виду объединить данные со всех листов в одну таблицу, чтобы в этой таблице можно было выбрать нужный город ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2011, 14:03 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
skleppi, я запустила на условных данных 50*20 циклов 1 минута в чем особенности ваших таблиц не помешало бы вам выложить -кусочек таблицы города -первую таблицу со списком городов( можно 1город) -таблицу under--она хоть и перезаписывается, но оформление, форматы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2011, 14:27 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
Ускорить код можно Если особо не стараться - можно ускорить в 10-100 раз, если приложить чуточку усилий - то время обработки данных сократится до 1...4 секунд. Но ничем не смогу вам помочь, пока не увижу вашего файла (желательно целиком). Сначала одной строкой (типа arr = [a1:h5000].value )считываете данные диапазона ячеек в двумерный массив, потом обрабатываете данные в этом массиве. Производительность увеличится в десятки раз. Запись данных на лист - http://excelvba.ru/code/Array2worksheet] аналогично . Автофильтр http://excelvba.ru/code/ArrAutofilter] можно применить и к двумерному массиву , не собирая предварительно данные на отдельный лист ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2011, 14:51 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
ПЕНСИОНЕРКА, кодов на самом деле около 200, это я не верно написала, что 50, и примерно 25 городов. Таблица города выглядит очень просто, но очень громоздко: столбец с кодами, остальные столбцы - данные за каждый день и накопительно за неделю, за 1 день три вида данных для каждого кода, и так 28-31 дней и накопительные данные за 4 недели. Таблица со списком городов: просто перечисление в столбик. Таблица Under имеет такую шапку: Город, код, описание, ответственный и 6 столбцов, в которые записываются данные именно для этого кода и этого города, и ищутся эти данные на листе с именем "Город", и вот сам поиск кода занимает очень много времени, так как на каждом листе макрос пробегает все 200 или меньше кодов, чтобы найти нужный, и так для каждого кода и для каждого города. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2011, 14:51 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
EducatedFool, 1...4 секунды...было бы супер! а не подскажите, может здесь обсуждались такие способы обработки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2011, 14:53 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
EducatedFool, не знала о таком способе)))) просто супер)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2011, 15:45 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
Кстати, если листы "Городов" в данных книгах "однотипны" (то есть все столбцы данных относятся к одним и тем же датам или неделям...), то можно было воспользоваться и Сводом. Вот только пришлось бы отключать автоперерасчет, поскольку при такой структуре обновление сводной таблицы тормозило бы любое внесение изменений. А вообще - срочно меняйте структуру хранения исходных данных. ИМХО, Вы и сейчас уже вынуждены строго контролировать точность формул, особенно этих ваших "данные за неделю". У вас ведь всего сущностей-то - код, дата, вид, город (+данные). Вот они должны быть справочниками. А данные - одной последовательной таблицей с этими полями. А все "данные за неделю", "данные по виду и городу" - это обычные выборки. И совсем необязательно переходить на СУБД (даже типа Access), всё можно сделать и средствами Excel. Нужно только понимать, что не следует смешивать исходные данные и выборки-отчеты для печати... и всё сразу начнёт получаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2011, 04:23 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
AndreTM, а каким образом можно осуществить выборки средствами excel? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2011, 10:31 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
skleppi, Вы уверены что сами писали этот макрос? Мне кажется над Вами кто-то пошутил. Запихнуть sub внутрь sub-a это круто. А если по существу, то вместо циклов можно использовать метод find Код: plaintext 1. 2. 3. 4. это существенно уменьшит скорость, а так же можно воспользоваться конструкцией With она то же уменьшит время работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2011, 14:00 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
vkodor, уверена, второй sub туда случайно попал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2011, 14:49 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
vkodor, точнее - что вы имеет в виду))) там один sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2011, 14:50 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
skleppi, я говорил об этом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. в цикле Public Sub vlookup_value_in_report ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2011, 14:59 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
vkodor, вижу. случайно) спасибо за совет, попробую метод Find ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2011, 15:05 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
skleppiAndreTM, а каким образом можно осуществить выборки средствами excel?Каким, каким... ADODB + источник данных (поймите, что "Source" могут быть хоть любые диапазоны любого листа той же книги, хоть их объединение) и выполнить нужный запрос... Вообще, если бы вы выложили пример вашей таблички, было бы не в пример быстрее посоветовать, что можно сделать, и в каком направлении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2011, 22:00 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
EducatedFool, >Сначала одной строкой (типа arr = [a1:h5000].value)считываете данные диапазона ячеек в двумерный массив Подскажите, а с данными из Ворда, что то вроде этого можно??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2011, 01:38 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
Ципихович Эндрю, Можно, а смысл? Если вы имеете некую таблицу данных в WORD - она либо должна быть уже готовой, импортированной/сформированной другими приложениями; либо вы можете её выгрузить в какое-либо приложение и действовать уже его методами. Tertium non datur. Всё же Word - это больше для отчётности, а не для вычислений. Как бы вы не пытались доказать обратное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2011, 01:44 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
AndreTM, со смыслом потом разберусь, как её затолкать?? И подскажите пожалуйста, как делается выгрузить таблицу Ворд в какое-либо приложение ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2011, 02:16 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
Ципихович Эндрювыгрузить таблицу Ворд в какое-либо приложение ??Выделить, скопировать в буфер и... вставить, например, в Экзель. Еще можно просто проанализировать структуру таблицы, записывая её в массив - а потом расписать в нужном приложении. Можно сохранить как XML или HTML - а потом распарсить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2011, 04:10 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
AndreTMskleppiAndreTM, а каким образом можно осуществить выборки средствами excel?Каким, каким... ADODB + источник данных (поймите, что "Source" могут быть хоть любые диапазоны любого листа той же книги, хоть их объединение) и выполнить нужный запрос... Вообще, если бы вы выложили пример вашей таблички, было бы не в пример быстрее посоветовать, что можно сделать, и в каком направлении. Вот такая труктура у таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2011, 10:54 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
skleppiВот такая структура у таблицыАллё... тук-тук... Может, я неправильно сформулировал, но нужна не структура таблицы, а таблиц ы с примером данных . Я же указал уже, что, скорее всего, придётся вообще менять подход к хранению данных, то есть полностью изменять структуру имеющихся таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2011, 02:18 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
AndreTMskleppiВот такая структура у таблицыАллё... тук-тук... Может, я неправильно сформулировал, но нужна не структура таблицы, а таблиц ы с примером данных . Я же указал уже, что, скорее всего, придётся вообще менять подход к хранению данных, то есть полностью изменять структуру имеющихся таблиц. ну все таблицы имеют одну и ту же структуру - как в примере, а данные в столбцах - числа. Примеры данных - 100, 200, 300....... тук-тук... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2011, 09:44 |
|
||
|
Как ускорить работу макроса по поиску ячеек в таблице.
|
|||
|---|---|---|---|
|
#18+
Ну странная разбивка-то... "2nd, ratio, 2nd, ratio...", причем на день приходится три столбца данных... что они означают-то? Поймите, я от вас пытаюсь добиться, какие данные у вас являются, так сказать" исходными и заносятся откуда-то, а какие - рассчитываемыми (и хранению как таковому в нормализованной базе обычно не подлежащими). Вас же просили - дайте кусочек реальной вашей таблицы. С данными, а не ваше оформление... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2011, 05:34 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=37143374&tid=2177114]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
419ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 794ms |

| 0 / 0 |
