Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2010, 14:49   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию СуммЕсли с большим колличеством условий

Есть файл в котором ведется журнал выездов геодезистов: Дата, кто ездил и т.п. Нужно в отдельном листе для каждого геодезиста подсчитать общую сумму по объектам в которых он участвовал и которые закрыты. Как я понимаю через сабж это сделать довольно легко, но в 2003 еще подобного нет. Поиск по инету дал результат в виде 4 способов решения проблем. К сожалению ни один не заработал (вернее они работали но только частично). Когда меня это достало, я взял и написал профильный макрос. Он берет данные с двух листов и все считает правильно. НО!!! не хочет автоматически пересчитываться при изменении полей (скажем когда изменить имя геодезиста). Нужно войти в редактирование формулы, и нажать ввод, тогда он все пересчитает. Можно ли с этим бороться?

Привожу пример журнала, что бы было понятней, разумеется это болван для экспериментов.
Лист1 это тест одного из метода решения.
Колонка "Месяц" устарела для макроса, но пока оставлена.
Вложения
Тип файла: rar Журнал.rar (81.8 Кб, 41 просмотров)
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 17.09.2010, 15:08   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Попробуйте добавить строчку для принудительного пересчета. Но при этом будут пересчитываться все ячейки на листе.
Код:
Function СтоимостьОбектовЗаМесяц()
Application.Volatile
...
nilem вне форума Ответить с цитированием
Старый 17.09.2010, 15:13   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение
Попробуйте добавить строчку для принудительного пересчета. Но при этом будут пересчитываться все ячейки на листе.
Код:
Function СтоимостьОбектовЗаМесяц()
Application.Volatile
...
Спасибо!!! Помогло. А то что будет все пересчитываться, в данном случае не так уж плохо. )
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 18.09.2010, 19:48   #4
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Все-таки сделаю поправочку.
Application.Volatile принуждает функцию перевычисляться не только при изменении влияющих ячеек, но и при изменении вообще любых ячеек, что не есть хорошо, а иногда даже вредно. Поэтому желательно так
спроектировать функцию, чтобы обойтись без Volatile.
См. также здесь
http://www.cpearson.com/excel/Writin...ionsInVBA.aspx
nilem вне форума Ответить с цитированием
Старый 18.09.2010, 21:25   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение
Все-таки сделаю поправочку.
Application.Volatile принуждает функцию перевычисляться не только при изменении влияющих ячеек, но и при изменении вообще любых ячеек, что не есть хорошо, а иногда даже вредно.
Без сомнения.
Цитата:
Сообщение от nilem Посмотреть сообщение
Поэтому желательно так спроектировать функцию, чтобы обойтись без Volatile.
Знать бы еще как это сделать...
Я не понимаю, что для этого нужно, что вообще мешает нормальной работе. Вроде и макрос не сложный.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с большим объемом данных Ckif Microsoft Office Excel 1 14.09.2010 17:05
Работать с большим колличеством textbox в visual c++ Kukkk Visual C++ 5 31.01.2010 18:09
Тормозит программа с большим кол-во TImage like_cloud Помощь студентам 2 12.12.2009 21:52
Как работать с большим числом? phobos Общие вопросы C/C++ 2 21.04.2009 07:05
ГСЧ с большим количеством нулей Frog25 Общие вопросы C/C++ 6 26.06.2008 18:22