Excel VBA, как подсчитать в диапазоне.

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Дмит
Сообщения: 145
Зарегистрирован: 27 ноя 2004, 22:23
Контактная информация:

vadim245
Перенесите макрос в любую другую книгу (новую или лучше Personal.xls).
Он не требует MSCOMCT2.OCX.
При размещениии макроса в Personal.xls, он будет доступен в любой активной книге (с любой неделей в пределах текущего года)
vadim245
Сообщения: 100
Зарегистрирован: 11 май 2007, 15:46

спасибо огромное. помог и код и рекомендации.
vadim245
Сообщения: 100
Зарегистрирован: 11 май 2007, 15:46

Вернулся по прошествии года к этому макросу. 3 часа тупил - так и не понял, почему он перестал работать для 2009 года/2007 офиса?
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

что пишет ?
Андрей Энтелис,
aentelis.livejournal.com
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте vadim245.
Ваша задача с набором записей табличного вида и потому ее можно решать с применением ADO.
Евгений.
Вложения
List_of_Data_W713.zip
(11.21 КБ) 43 скачивания
vadim245
Сообщения: 100
Зарегистрирован: 11 май 2007, 15:46

Teslenko_EA, спасибо за интересное предложение!
Развлечение на все выходные, интересно ведь наконец-таки мотивированно глянуть на ADO :-)
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Евгений, тут что-то не так в приведенном Вами решении. Что именно понять не могу.

Test1 [ATTACH]896[/ATTACH]
В нем неделя 919 (19 неделя 2009 года) все значения сделаем тупо равными 1. Выделенное желтым по идее ложно быть подвергнуто анализу (с пн по вс 19 недели). Запускаем макрос и видим, что среди выбранных 4-х максимумов оказывается откуда-то 0 (ноль).

Test2 [ATTACH]897[/ATTACH]
В нем неделя 919 (19 неделя 2009 года) все значения сделаем тупо равными 1. Выделенное желтым по идее ложно быть подвергнуто анализу (с пн по вс 19 недели). Теперь попробуйте проделать так:
рисуем в G17 двойку - в выборку попала
рисуем в G18 тройку - в выборку НЕ попала
рисуем в G19 четверку - в выборку НЕ попала
рисуем в G20 пятерку - в выборку попала и пятерка и сразу же и 2,3,4 введенные ранее
ну и все последующие попадают в выборку по мере добавления

причем СРЕДНЕЕ из четырех так и подсчитывается неверно.
Примечательно, что граница анализа вполне корректно заканчивается на 10/05/2009 как и положено
Вложения
Test2_of_Data_W919.zip
(13.95 КБ) 41 скачивание
Test1_of_Data_W919.zip
(13.91 КБ) 40 скачиваний
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте vadim245.
"Развлечение на все выходные..." началось с пятницы ;)
действительно логика заполнения матрицы не совсем верна :( , прошу прощения, моя ошибка, исправьте код заполнения матрицы подобным образом:

Код: Выделить всё

        If rs(6) > q(0) Then
            q(3) = q(2): q(2) = q(1): q(1) = q(0): q(0) = rs(6)
        ElseIf rs(6) > q(1) Then
            q(3) = q(2): q(2) = q(1): q(1) = rs(6)
        ElseIf rs(6) > q(2) Then
            q(3) = q(2): q(2) = rs(6)
        ElseIf rs(6) > q(3) Then
            q(3) = rs(6)
        End If
Евгений.
vadim245
Сообщения: 100
Зарегистрирован: 11 май 2007, 15:46

Спасибо, все работает.
Ответить