powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите сделать код эффективнее
11 сообщений из 11, страница 1 из 1
Помогите сделать код эффективнее
    #39776138
ceres
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приложу файл.

Данные берутся из пополняемой таблички Fact: Дата, ФИО, буква.
Заполняется таблица Tabl: строки - ФИО; столбцы - месяц/буква.
Сейчас делаю так: для каждой ячейки из Tabl создаю строковую переменную: месяц+ФИО+буква, и сравниваю ее со всем списком из Fact. Если совпало, то cell = cell+1

Вроде просто, но пока занимает 10 секунд. Но список из 120 записей. К концу года будет 2000. Долго будет.
Есть варианты ускориться?
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776140
ceres
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот файл
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776156
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самая длинная операция - это обращение к ячейке листа, у вас из много в циклах.

Так что в какой-то степени поможет - считать все необходимые данные в память (в массив - в один прием), обработать в памяти, записать только изменившиеся ячейки, если возможно, то тоже массивом - в один прием.

Ну а по большому счету, такие программы делаются с применением СУБД, а расчеты - с помощью SQL-запросов, там это будет занимать десятки миллисекунд.
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776207
ceres
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProСамая длинная операция - это обращение к ячейке листа, у вас из много в циклах.

Так что в какой-то степени поможет - считать все необходимые данные в память (в массив - в один прием), обработать в памяти, записать только изменившиеся ячейки, если возможно, то тоже массивом - в один прием.
Спасибо! ОК. Попробую что-нибудь почитать в этом направлении.


Ну а по большому счету, такие программы делаются с применением СУБД, а расчеты - с помощью SQL-запросов, там это будет занимать десятки миллисекунд.
Это да. Но я не для себя стараюсь. А попробуйте "пересадить" народ на Access, ага ))
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776321
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ceres,
в табл. Fact 117 строк, а сумма итогового столбца в Tabl - 115. Причина в том, что Степанова и Мустафина отсутствуют в табл. Doctor. Это нормальная ситуация, или макрос должен сообщить об этом или сам внести недостающие фамилии в Doctor?
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776340
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И почти то же самое можно получить в несколько кликов мыши, построив Сводную таблицу, см. файл.
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776388
ceres
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанскийceres,
в табл. Fact 117 строк, а сумма итогового столбца в Tabl - 115. Причина в том, что Степанова и Мустафина отсутствуют в табл. Doctor. Это нормальная ситуация, или макрос должен сообщить об этом или сам внести недостающие фамилии в Doctor?

это нормальная ситуация. Можно не сообщать и не добавлять.
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776395
ceres
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КазанскийИ почти то же самое можно получить в несколько кликов мыши, построив Сводную таблицу, см. файл.

Как-то сводные таблицы мимо меня прошли )).
Не умею. Пока через VBA проще доходит. Но разберусь на будущее.
Спасибо!!
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776399
ceres
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Так что в какой-то степени поможет - считать все необходимые данные в память (в массив - в один прием), обработать в памяти, записать только изменившиеся ячейки, если возможно, то тоже массивом - в один прием.



Сделал!
Получилось 3 секунды!!!
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776436
ceres
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, заметил небольшое неудобство. При переносе в массив, берутся данные, а не формулы, ну ничего - можно перезаполнить.
...
Рейтинг: 0 / 0
Помогите сделать код эффективнее
    #39776497
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроме свойства по умолчанию .Value, у диапазона есть свойство .Formula.
А также Value2, FormulaR1C1,FormulaLocal, FormulaR1C1Local, FormulaArray
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите сделать код эффективнее
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]