0 / 0 / 0
Регистрация: 29.10.2014
Сообщений: 2
|
|
1 | |
Оптимизация цикла при обработке таблицы Excel06.11.2014, 21:15. Показов 3572. Ответов 9
Метки нет (Все метки)
Добрый день, прошу помощи. Программирую недавно дней 7-8 )))).
есть таблица Excel 50 тыс строк цикл с 1 до последней строки, значение 3 столбца может быть одно из 50 происходит проверка так -если значение в столбце 3 равно Значение 1 тогда определенным образом корректируется значение в стобце 9 той же строки -если значение в столбце 3 равно Значение 2 тогда определенным образом корректируется значение в стобце 9 той же строки -если значение в столбце 3 равно Значение 3 тогда определенным образом корректируется значение в стобце 9 той же строки и так 28 раз однако значение в столбце 3 может принимать только 1 значение (извините за тафтологию). поэтому дальнейшие проверки этой ячейки теряют смысл. сейчас программа обрабатывает таблицу за 28 минут, что долго. помогите примером кода или указанием что необходимо почитать. Заранее благодарен.
0
|
06.11.2014, 21:15 | |
Ответы с готовыми решениями:
9
Вылетает при обработке цикла с vector Использование цикла с условием при обработке массива Оптимизация цикла поиска значений ячеек Excel (кодом из Access) Оптимизация вычислений при помощи цикла |
Заблокирован
|
|
06.11.2014, 21:37 | 2 |
Приложите ваш пример таблицы и ожидаемый результат - https://www.cyberforum.ru/abou... 03521.html
0
|
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,221
|
|||||||||||
06.11.2014, 23:48 | 3 | ||||||||||
1
|
6944 / 2849 / 548
Регистрация: 19.10.2012
Сообщений: 8,721
|
|
07.11.2014, 17:40 | 4 |
Сперва набиваем словарь значениями и как корректировать (можно прямо в коде, можно брать список из любого файла), затем при цикле по массиву берём из словаря нужную коррекцию. Быстро.
1
|
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
|
||||||
07.11.2014, 18:01 | 5 | |||||
Да, очень ускорило бы чтение сразу в массив. Сам набор из кучи условий лучше слегка переписать, вместо множество выражений if ... then сделать одну конструкцию Select Case:
Hugo121, хотя я и давно знаком с VBA, стыдно сознаться, но до сих пор у меня большие трудности при работе с "Scripting.Dictionary". Никак не могу себя пересилить и научиться мыслить категориями этого объекта, свободно без напрягов решать с его помощью свои задачи. И когда им пользоваться эффективней, чем прямыми средствами языка? Есть какой-нибудь мануал, чтобы привыкнуть и полюбить его? Из-за этого мне кажется, что решение на словаре будет трудным для новичка. Возможно, я не прав.
0
|
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,221
|
|||||||||||
07.11.2014, 20:26 | 6 | ||||||||||
Естественно предварительно считав в массив
0
|
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,221
|
|
07.11.2014, 20:31 | 7 |
1
|
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,221
|
||||||
07.11.2014, 20:34 | 8 | |||||
в случае примененеия словаря Select Case со всеми Case можно будет заменить одной строкой:
0
|
0 / 0 / 0
Регистрация: 29.10.2014
Сообщений: 2
|
||||||
07.11.2014, 20:46 [ТС] | 9 | |||||
Так выглядит основная часть кода
проблема в том что 1 и ту же ячейку сканирует много раз даже если она уже "отработана"
0
|
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,221
|
||||||
07.11.2014, 23:27 | 10 | |||||
Сообщение было отмечено Olegplita как решение
Решение
Так примерно выглядит вся процедура.
Возможно где-то что-то не досмотрел - извините праздник!
Не надо при больших объёмах "сканировать" ячейки! Это один из самых медленных процессов! Надо делать всё в массивах! Добавлено через 5 минут Resize(LR + 8) - возможно тут не много "погорячился". Похоже достаточно Resize(LR - 7)
1
|
07.11.2014, 23:27 | |
07.11.2014, 23:27 | |
Помогаю со студенческими работами здесь
10
Оптимизация кода при помощи цикла Ошибка в обработке кнопки при выводе отчета в Excel Вывести все записи таблицы при обработке которых возникает исключение Обработка изображений (LockBits). Проблемы с условием цикла по обработке каждого пикселя Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |