powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с массивами, изменения по условиям
5 сообщений из 5, страница 1 из 1
Работа с массивами, изменения по условиям
    #36301703
Max_Fr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть задача чтоб для работы в ячейках нескольких массивов выполнялись одни и те же правила
Пример и более точное описание задачи в приложенном файле.
Возможно ли решение этой задачи в VBA?
Заранее благодарен всем кто сможет помочь.
...
Рейтинг: 0 / 0
Работа с массивами, изменения по условиям
    #36302929
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Перехват команд кнопок в массиве
в Excel у объекта worksheet мало событий, и среди них нет события которое срабатывало бы при нажатии на кнопку клавиатуры как например у контролов у которых есть событие KeyDown, KeyPress, KeyUp, но у worksheet есть событие Change срабатывающее при выходе из ячейки. Так что если оно Вас устроит, то дерзайте или пробуйте Application.OnKey и Applicaition.SendKeys как сказал m: работаю в Paint'e других вариантов нет.
...
Рейтинг: 0 / 0
Работа с массивами, изменения по условиям
    #36306148
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас правильно формула стоит, только у вас время в текстовом формате, поэтому нужно чуть доработать
{=СУММ(ЕСЛИ(--A2:A60904>=E3;ЕСЛИ(--A2:A60904<=F3;ЕСЛИ(C2:C60904=G3;B2:B60904))))}
Формула массива вводится одновременным нажатием клавиш <Ctrl>+<Shift>+<Enter>

Можно обойтись без формулы массива
=СУММПРОИЗВ((--A2:A60904>=E3)*(--A2:A60904<=F3)*(C2:C60904=G3)*B2:B60904)
Гораздо быстрее будет также считать если уменьшить диапазоны или сделать их саморасширяющимися (см. форум), зачем вам 60904 тыс. строк?
Во всех формулах не нужен будет двойной минус перед временем если время будет вводиться в ячейки в формате времени.

Еще один способ сделать вычисления более быстро - это использовать БДСУММ() - читайте справку.
Также можно воспользоваться сводной таблицей, возможно придется ввести дополнительное поле или воспользоваться группировкой строк.

З.ы.: на БДСУММ посмотрите - это довольно быстро, но только в формате времени должны быть значения исходные обязательно, пример на прилагаемом рисунке есть пример БДСУММ()
...
Рейтинг: 0 / 0
Работа с массивами, изменения по условиям
    #36306216
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
2 Deggasad ,
Не в тот топик ? :)...
Я тогда сразу и вопрос закину:
Код: plaintext
=СУММПРОИЗВ((--A2:A60904>=E3)*(--A2:A60904<=F3)*(C2:C60904=G3)*B2:B60904)
Вот здесь, логика: если хотябы одно из условий не выполняется, возвращается ноль и сумма ряда равна нулю?
И с сумм+если тоже очень интересно... Вообщем спасибо за обучение!
...
Рейтинг: 0 / 0
Работа с массивами, изменения по условиям
    #36306993
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не могу найти где я прочитал вопрос, люди сделайте там ссылку на мое сообщение пожалуйста. Минут 20 пытался найти откуда я скачал файл с вопросом, видимо заколдовано.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с массивами, изменения по условиям
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]