Спасибо всем. Ссылку от Sokol92 почитала. Про красоту поняла 
использую решение от k61.

использую решение от k61.
08.12.2018 18:34:12
Тут разбирали подобное
|
|
|
07.12.2018 15:38:11
![]() В ячейки, например, вводим разновидность льда, его температуру, массы пустого оборудования, массу оборудования, заполненного льдом, цвет льда и т.д. В других (заблокированных) ячейках уже вычисляются его характеристики: плотность, коэффициенты оттаивания и др. В зависимости от этих рассчитанных характеристик вычисляются другие - углы преломления, спектральные характеристики и т.д. Очень много параметров рассчитывается в одной строке ![]() Т.е. идет список точек опробования льда в столбце 1, а в других столбцах - параметры, соответствующие точке опробования. |
|
|
07.12.2018 14:25:50
Как много сегодня нового узнала
![]()
Приложила более подробный пример. Вводим данные путем поячейного ввода, как в толбец, так и в строку, либо путем копирования диапазона из одной книги в другую. Например, ввели/изменили значение в D7, возникла необходимость посмотреть, как изменились значения в C7, F7, G7. Нажали кнопочку, все посчиталось. Поэтому необходим весь гигантский диапазон "под рукой". Или, пакетно ввели информацию в ячейки D7:E17, нажали рассчитать, посмотрели, что получилось везде. После сохранения, происходит выгрузка информации со всего листа в базу данных (это уже отдельная история, пока у меня просто копируется лист в новый файл, сохраняется в отдельную книгу, так как до БД мне далековато на VBA). Перерасчет ячеек идет построчно, т.е. если значения менялись только в одной строке, то перерасчет будет только в этой же строке...
Изменено: |
|||
|
07.12.2018 10:49:38
![]() Ситуация такая: имеем в загруженном интерфейсе лист Excel. Путем скрытия/открытия блокировки/разблокировки столбцов заносим туда разные данные. От этих данных зависят другие данные, т.е. мы занесли какие-то значения, поменяли, и нужно пересчитать зависящие от измененных ячеек данные. Так вот, чтобы из 1006 строк не пересчитывать все подряд, потребовалось пересчитать только те строки, в которых были произведены изменения. Как-то так ![]() Насколько я понимаю, нужно считать диапазон до изменения в массив, потом после изменения в массив. Потом сравнить массивы и, следовательно, получить измененные строки. Вот ищу алгоритмы теперь как быстро сравнить два массива. |
|
|
07.12.2018 08:15:37
Здравствуйте.
Имеется необходимость отследить строки, в которых изменились ячейки. Собственно, простейший макрос:
Если мы по одной ячейке изменяем, все корректно. Если работаем с диапазоном – не очень. Пример: пустой лист.
Как видно, в ячейке A2 значений нет. Если выделить диапазон A1:A3 нажать Delete, то Excel считает, что изменения произошли во всем диапазоне, хотя по факту только в 1 и 3 строке. Как отследить значения именно измененных строк? (т.е. если не было значений и удалились – это уже не изменение, а если были и удалились/поменялись – уже изменение). Спасибо.
Изменено: |
|||||
|
03.12.2018 12:57:10
Пример прилагаю
В моем случае сейчас через надстройку - 4,07 сек. Напрямую - 0,07 сек. Перед запуском, сохраните, пожалуйста, все свои документы Excel! Запускаем Книгу 1. Подключаем надстройку 1. На панельке есть кнопочка – сохранить все. Через нее макрос обрабатывается в разы дольше, чем запуск напрямую из VBA. В функции calculateData сделан повтор вычислений для наглядности "торможения". В результате работы макроса будет создаваться документ 1.txt.
Изменено: |
|
|
24.11.2018 12:36:07
Так не проще ли скомпилировать весь код в DLL? Или создать EXE файл?
Тогда уже сложнее будет и защиту открыть, и код посмотреть. Лично я пользуюсь решениями от ![]() |
|
|
23.11.2018 23:10:57
![]() но в моем примере она показывает "15", а должна быть "28". метод
|
|||
|