Добрый день, Имеется файл с базой строк порядка 40 000, с ежегодным увеличением на 10 000. Сейчас из него формулой суммеслимн в соответствующую ячейку итоговой формы вытягиваются значения по 5 условиям в пяти диапазонах. Файл очень долго производит пересчет.
Требуется решить макросом эту же задачу с более быстрым временем выполнения расчета. Кроме того усложнение уровня - один столбец с условиями содержит в себе перечисление месяцев, макрос должен помимо месяцев уметь брать, например, апрель нарастающим с начала года. (То есть в массив должны попасть строки с январем, февралем, мартом, апрелем, а уже на них накладывать остальные 4 условия по другим столбцам: регион, вид транспортного средства, серия). Результатом должна быть сумма цифр по указанному столбцу.
Подскажите с чего именно начать, с какими dim работать, это массивы, range, dictionary или чтотоеще? Не могу понять логику даже на словах пока без кода. Я
Добрый день, Имеется файл с базой строк порядка 40 000, с ежегодным увеличением на 10 000. Сейчас из него формулой суммеслимн в соответствующую ячейку итоговой формы вытягиваются значения по 5 условиям в пяти диапазонах. Файл очень долго производит пересчет.
Требуется решить макросом эту же задачу с более быстрым временем выполнения расчета. Кроме того усложнение уровня - один столбец с условиями содержит в себе перечисление месяцев, макрос должен помимо месяцев уметь брать, например, апрель нарастающим с начала года. (То есть в массив должны попасть строки с январем, февралем, мартом, апрелем, а уже на них накладывать остальные 4 условия по другим столбцам: регион, вид транспортного средства, серия). Результатом должна быть сумма цифр по указанному столбцу.
Подскажите с чего именно начать, с какими dim работать, это массивы, range, dictionary или чтотоеще? Не могу понять логику даже на словах пока без кода. Яkotlovan
Начните с Sub, в эту строку пропишите название макроса, потом Dim тут описывайте переменные которые у Вас будут участвовать в процедуре, далее грузите Range в массив, так будет быстрее работать. Далее начинается обработка данного массива, точно могу сказать, что будут циклы, возможно For-Next или Do-Loop или While-Wend, а также условия If-End If или Select Case-End Select. По поводу использования Dictionary не могу Вам ничего сказать, это будет зависеть от построения Вашей логики при обработке массива. И в конце процедуры не забудьте поставить End Sub
Начните с Sub, в эту строку пропишите название макроса, потом Dim тут описывайте переменные которые у Вас будут участвовать в процедуре, далее грузите Range в массив, так будет быстрее работать. Далее начинается обработка данного массива, точно могу сказать, что будут циклы, возможно For-Next или Do-Loop или While-Wend, а также условия If-End If или Select Case-End Select. По поводу использования Dictionary не могу Вам ничего сказать, это будет зависеть от построения Вашей логики при обработке массива. И в конце процедуры не забудьте поставить End Submsi2102
Сообщение отредактировал msi2102 - Четверг, 23.03.2023, 15:53
Благодарю! файл уменьшился на 12 мб, пришлось правда разобраться как макросом фильтровать сводные таблицы, но оно того стоило однозначно + скорость пересчета конечно выросла существенно.
Благодарю! файл уменьшился на 12 мб, пришлось правда разобраться как макросом фильтровать сводные таблицы, но оно того стоило однозначно + скорость пересчета конечно выросла существенно.kotlovan
Сообщение отредактировал kotlovan - Пятница, 24.03.2023, 11:37