|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
Приложу файл. Данные берутся из пополняемой таблички Fact: Дата, ФИО, буква. Заполняется таблица Tabl: строки - ФИО; столбцы - месяц/буква. Сейчас делаю так: для каждой ячейки из Tabl создаю строковую переменную: месяц+ФИО+буква, и сравниваю ее со всем списком из Fact. Если совпало, то cell = cell+1 Вроде просто, но пока занимает 10 секунд. Но список из 120 записей. К концу года будет 2000. Долго будет. Есть варианты ускориться? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 13:10 |
|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
Вот файл ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 13:11 |
|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
Самая длинная операция - это обращение к ячейке листа, у вас из много в циклах. Так что в какой-то степени поможет - считать все необходимые данные в память (в массив - в один прием), обработать в памяти, записать только изменившиеся ячейки, если возможно, то тоже массивом - в один прием. Ну а по большому счету, такие программы делаются с применением СУБД, а расчеты - с помощью SQL-запросов, там это будет занимать десятки миллисекунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 13:42 |
|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
Shocker.ProСамая длинная операция - это обращение к ячейке листа, у вас из много в циклах. Так что в какой-то степени поможет - считать все необходимые данные в память (в массив - в один прием), обработать в памяти, записать только изменившиеся ячейки, если возможно, то тоже массивом - в один прием. Спасибо! ОК. Попробую что-нибудь почитать в этом направлении. Ну а по большому счету, такие программы делаются с применением СУБД, а расчеты - с помощью SQL-запросов, там это будет занимать десятки миллисекунд. Это да. Но я не для себя стараюсь. А попробуйте "пересадить" народ на Access, ага )) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 15:06 |
|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
ceres, в табл. Fact 117 строк, а сумма итогового столбца в Tabl - 115. Причина в том, что Степанова и Мустафина отсутствуют в табл. Doctor. Это нормальная ситуация, или макрос должен сообщить об этом или сам внести недостающие фамилии в Doctor? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 17:05 |
|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
И почти то же самое можно получить в несколько кликов мыши, построив Сводную таблицу, см. файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 17:27 |
|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
Казанскийceres, в табл. Fact 117 строк, а сумма итогового столбца в Tabl - 115. Причина в том, что Степанова и Мустафина отсутствуют в табл. Doctor. Это нормальная ситуация, или макрос должен сообщить об этом или сам внести недостающие фамилии в Doctor? это нормальная ситуация. Можно не сообщать и не добавлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 18:29 |
|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
КазанскийИ почти то же самое можно получить в несколько кликов мыши, построив Сводную таблицу, см. файл. Как-то сводные таблицы мимо меня прошли )). Не умею. Пока через VBA проще доходит. Но разберусь на будущее. Спасибо!! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 18:36 |
|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
Shocker.Pro Так что в какой-то степени поможет - считать все необходимые данные в память (в массив - в один прием), обработать в памяти, записать только изменившиеся ячейки, если возможно, то тоже массивом - в один прием. Сделал! Получилось 3 секунды!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 18:38 |
|
Помогите сделать код эффективнее
|
|||
---|---|---|---|
#18+
Кстати, заметил небольшое неудобство. При переносе в массив, берутся данные, а не формулы, ну ничего - можно перезаполнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 19:58 |
|
|
start [/forum/topic.php?fid=61&fpage=11&tid=2172117]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 146ms |
0 / 0 |