Excel VBA, как подсчитать в диапазоне.
Модератор: Naeel Maqsudov
vadim245
Перенесите макрос в любую другую книгу (новую или лучше Personal.xls).
Он не требует MSCOMCT2.OCX.
При размещениии макроса в Personal.xls, он будет доступен в любой активной книге (с любой неделей в пределах текущего года)
Перенесите макрос в любую другую книгу (новую или лучше Personal.xls).
Он не требует MSCOMCT2.OCX.
При размещениии макроса в Personal.xls, он будет доступен в любой активной книге (с любой неделей в пределах текущего года)
спасибо огромное. помог и код и рекомендации.
Вернулся по прошествии года к этому макросу. 3 часа тупил - так и не понял, почему он перестал работать для 2009 года/2007 офиса?
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте vadim245.
Ваша задача с набором записей табличного вида и потому ее можно решать с применением ADO.
Евгений.
Ваша задача с набором записей табличного вида и потому ее можно решать с применением ADO.
Евгений.
- Вложения
-
- List_of_Data_W713.zip
- (11.21 КБ) 42 скачивания
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 как и положено
Развлечение на все выходные, интересно ведь наконец-таки мотивированно глянуть на 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 КБ) 39 скачиваний
-
- Сообщения: 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
Спасибо, все работает.