Цитата SamsungC095:
А вот это я не совсем понял. Не могли бы вы выложить пример »
|
Вы создаёте "вспомогательный" (это я его так называю) макрос и в нем пишите, используя запись макроса, формулу расчета для ячейки С5-например.
Далее открывая текст макроса вы видите формулу записанную в формате R1C1 - формат ссылок на параметры (переменные, или значения, или ячейки) применяемые в этой формуле. её вы можете копировать и вставлять в любое место ваших рабочих макросов - туду куда нужно
Если взаимное расположение ячеек в расчётных формулах не меняется относительно друг друга при переходе от строки к строке (например все ячейки расположенные в одной строке), то и относительные ссылки R1C1 в формуле в макросе припереходе от одной строки к другой будут теже. тогда используя range("C5").select - вначале и Activecell.formulaR1C1= (ваша формула) и Selection.offset(строка,колонка).select Вы можете обсчитать весь список строк. Можно здесь задействовать переменные, цикл обсчёта = количеству строк в списке и ещё много всякого.
Если взаимное расположение обсчитываемых ячеек меняется от строки к строке (например какая то ячейка всегда берётся одна и таже при переходе в расчётах от одной строки к другой) тогда и R1C1 тоже в формулах будет меняться. Здесь выход - выделить отдельную расчётную строку в ячейки которой будут помещаться по очереди данные из каждой строки (через буфер или через переменные).
А насчёт сервера с основной базой - подумайте как оптимизировать задачу на убыстрение её выполнения. Может не имеет смысла держать всё на сервере. Может проще - держать все нужные данные для вас на своем ком-пе. Можно ещё повысить приоритет выполнения задач по EXEL. Посмотреть какая скорость обмена данными на участке: Ваш комп-ваша сетевая карта-сетевая карта сервера(?!?-тут мои познания чисто теоретические)-сервер. Как пример - Com-порт компа - модем: можно увеличить скорость скачивания - повысив скорость в COM- порту с 9600 до 115200 или выше.