|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.02.2010, 17:11 | #1 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
Структура макроса
Хочу организовать макрос таким образом, чтобы пробегая по строкам в каждом листе он отыскивал нужные (у меня те в, которых есть ''Qж м3/сут'', таких строк 12 по количеству месяцев), затем в нужных строках определял диапазон ячеек (в соответствии с количеством дней в месяце) производил над ним математическую операцию (находил среднее арифметическое) и записывал результаты в столбик на соседнем листе. В результате должен получиться столбик в котором, будут идти сначала 12 расчитанных значений для первого листа, затем 12 для второго и так далее для всех листов. Было бы идеально, если напротив каждого значения в соседних ячейках отображались месяц и имя листа в котором брались значения. Проблема в том, что я никак не могу чётко представить себе "анатомию" такого макроса. Помогите пожалуйста составить алгоритм, схему, возможно, у кого-то найдётся похожий код... Спасибо!
|
04.02.2010, 18:52 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
1) Выкладываете файл 2) Указываете на примере файла, что и где должен искать макрос (помечаете цветом обрабатываемые диапазоны), и куда помещать результат. 3) Объясняете, чем Вас не устраивают формулы (ими решить задачу проще, нежели макросами) |
|
05.02.2010, 07:42 | #3 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
Формулы не устраивают, потому что в реальном файле слишком много листов и как минимум 12 расчётов для каждого.
|
05.02.2010, 08:41 | #4 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Посмотрите вложение. Запустите макрос "Tablica".
Чем шире угол зрения, тем он тупее.
|
05.02.2010, 16:29 | #5 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
Я немного видоизменил предложенный SAS888 макрос и столкнулся с новыми трудностями. В приложенном файле, в Макросе "Tablica" разкоментируйте закоментированные участки и вы тоже с ними столкнётесь!
|
08.02.2010, 07:01 | #6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Я не разбирался, зачем Вам все это нужно, просто, исправил и оптимизировал Ваш макрос. Посмотрите вложение.
Чем шире угол зрения, тем он тупее.
|
08.02.2010, 08:41 | #7 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
SAS888, спасибо за помощь, но к сожалению когда я применяю макрос в своём реальном файле он выдаёт ошибку Run-time error '13' type mismatch в этой строке:
Cells(i, 3) = Application.AverageIf(ws.Range(ws.C ells(x.Row + 1, 6), ws.Cells(x.Row + 1, 36)), "<>0") / ws.[AG5] Как я понимаю, это происходит в том случае, если в диапозоне отсутствуют значения, в таких случаях хотелось бы Cells(i, 3) ="0" |
08.02.2010, 08:52 | #8 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Все правильно. У Вас ячейка "AG5 " проверяется на пустоту, а на 0 проверки нет. Для корректной работы, строку кода
Код:
Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 08.02.2010 в 08:54. |
08.02.2010, 09:05 | #9 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
Заменил, но почему-то не помогает, возможно, когда в диапазоне:
ws.Range(ws.Cells(x.Row + 1, 6), ws.Cells(x.Row + 1, 36)) присутствуют только 0 и пустые значения, то формула: Application.AverageIf(ws.Range(ws.C ells(x.Row + 1, 6), ws.Cells(x.Row + 1, 36)), "<>0") не считается? |
08.02.2010, 09:19 | #10 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Не хочу гадать. Прикрепите пример с проблемным файлом и Вашим макросом - разберемся.
Чем шире угол зрения, тем он тупее.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Структура | Telec | Помощь студентам | 2 | 20.01.2010 12:46 |
C++. Структура. | bpystep | Помощь студентам | 12 | 24.11.2009 00:28 |
структура | hungry | Общие вопросы C/C++ | 11 | 25.06.2009 20:31 |
Структура | SL1CK | Общие вопросы C/C++ | 8 | 08.06.2009 21:31 |
Запуск макроса с параметрами из другого макроса | Saladin | Microsoft Office Excel | 2 | 19.01.2009 09:43 |