Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Работа функции СУММЕСЛИМН и загрузка процессора. - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Работа функции СУММЕСЛИМН и загрузка процессора. (Формулы/Formulas)
Работа функции СУММЕСЛИМН и загрузка процессора.
Denis_ Дата: Пятница, 03.04.2015, 15:56 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день!
Прошу помощи у специалистов.

Импортирую данные в эксель по DDE со сторонней программы. Импортирование идет динамически, то есть постоянно добавляются новые строки. Количество строк за день достигает 100 000.
Данные строки я суммирую при совпадении трех условий (в приложении пример ).
Сложность в том, что если запустить 24 таких формул, то загрузка процессора приближается к 100% и начинаются жуткие тормоза.
Запуск такого количества формул необходим, чтобы просуммировать данные за временной диапазон 1 час.

Какую альтернативу данной формуле можно использовать?
Или как-то отключить работу формулы после выхода её из временнго диапазона суммирования. То есть закончился час, отключается её работа и включается новая формула, соответствующая следующему часу.
К сообщению приложен файл: 8466750.xlsx (11.0 Kb)
 
Ответить
СообщениеДобрый день!
Прошу помощи у специалистов.

Импортирую данные в эксель по DDE со сторонней программы. Импортирование идет динамически, то есть постоянно добавляются новые строки. Количество строк за день достигает 100 000.
Данные строки я суммирую при совпадении трех условий (в приложении пример ).
Сложность в том, что если запустить 24 таких формул, то загрузка процессора приближается к 100% и начинаются жуткие тормоза.
Запуск такого количества формул необходим, чтобы просуммировать данные за временной диапазон 1 час.

Какую альтернативу данной формуле можно использовать?
Или как-то отключить работу формулы после выхода её из временнго диапазона суммирования. То есть закончился час, отключается её работа и включается новая формула, соответствующая следующему часу.

Автор - Denis_
Дата добавления - 03.04.2015 в 15:56
Manyasha Дата: Пятница, 03.04.2015, 16:25 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Denis_, здравствуйте. Если нужно просуммировать только за текущий час, то можно так
Код
=СУММПРОИЗВ(B:B*(C:C="Купля")*(A:A<(ТЕКСТ(ТДАТА();"чч")+1)&":00:00")*(A:A>=ТЕКСТ(ТДАТА();"чч")&":00:00"))


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеDenis_, здравствуйте. Если нужно просуммировать только за текущий час, то можно так
Код
=СУММПРОИЗВ(B:B*(C:C="Купля")*(A:A<(ТЕКСТ(ТДАТА();"чч")+1)&":00:00")*(A:A>=ТЕКСТ(ТДАТА();"чч")&":00:00"))

Автор - Manyasha
Дата добавления - 03.04.2015 в 16:25
Denis_ Дата: Пятница, 03.04.2015, 16:37 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Manyasha, спасибо работает.
Не могли бы вы немного пояснить написание условий в столбцах "А:А".
 
Ответить
СообщениеManyasha, спасибо работает.
Не могли бы вы немного пояснить написание условий в столбцах "А:А".

Автор - Denis_
Дата добавления - 03.04.2015 в 16:37
Denis_ Дата: Пятница, 03.04.2015, 16:47 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Manyasha, немного не то. У вас привязка идет к текущему времени. А как мне просуммировать предыдущие часы?
 
Ответить
СообщениеManyasha, немного не то. У вас привязка идет к текущему времени. А как мне просуммировать предыдущие часы?

Автор - Denis_
Дата добавления - 03.04.2015 в 16:47
Manyasha Дата: Пятница, 03.04.2015, 16:53 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Denis_, пожалуйста!
написание условий в столбцах "А:А"
Функция ТДАТА() возвращает текущую дату и время, функция ТЕКСТ приводит полученное значение к формату "чч", т.е. возвращает текущий час. Ну и "+1" это, чтобы получить следующий час.


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Пятница, 03.04.2015, 16:54
 
Ответить
СообщениеDenis_, пожалуйста!
написание условий в столбцах "А:А"
Функция ТДАТА() возвращает текущую дату и время, функция ТЕКСТ приводит полученное значение к формату "чч", т.е. возвращает текущий час. Ну и "+1" это, чтобы получить следующий час.

Автор - Manyasha
Дата добавления - 03.04.2015 в 16:53
Manyasha Дата: Пятница, 03.04.2015, 16:57 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Denis_, если нужно сохранять значения за предыдущие часы, предлагаю макросом вычислять текущее время и переписывать соответствующее , значение. Кода пока нет, чуть позже выложу, если меня никто не опередит)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеDenis_, если нужно сохранять значения за предыдущие часы, предлагаю макросом вычислять текущее время и переписывать соответствующее , значение. Кода пока нет, чуть позже выложу, если меня никто не опередит)

Автор - Manyasha
Дата добавления - 03.04.2015 в 16:57
AlexM Дата: Пятница, 03.04.2015, 16:59 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4511
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Может я ошибаюсь, но почему от таких формул сократится время работы процессора?
Всегда пересчитывается весь столбец.
Скажите в единицу времени по сколько строк добавляется, по одной или сразу много?



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеМожет я ошибаюсь, но почему от таких формул сократится время работы процессора?
Всегда пересчитывается весь столбец.
Скажите в единицу времени по сколько строк добавляется, по одной или сразу много?

Автор - AlexM
Дата добавления - 03.04.2015 в 16:59
Manyasha Дата: Пятница, 03.04.2015, 17:03 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
AlexM, я так понимаю, что в исходном варианте Denis_ использует 24 формулы, по одной для каждого часа, если вместо этих 24-х формул будет одна, время подсчета не сократится?


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеAlexM, я так понимаю, что в исходном варианте Denis_ использует 24 формулы, по одной для каждого часа, если вместо этих 24-х формул будет одна, время подсчета не сократится?

Автор - Manyasha
Дата добавления - 03.04.2015 в 17:03
AlexM Дата: Пятница, 03.04.2015, 17:10 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4511
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Так если суммировать за каждый час, то сумм будет 24, стало быть столько же формул



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеТак если суммировать за каждый час, то сумм будет 24, стало быть столько же формул

Автор - AlexM
Дата добавления - 03.04.2015 в 17:10
Denis_ Дата: Пятница, 03.04.2015, 17:23 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AlexM, За час приблизительно добавляется 5 000 строк.
Правильно, формул 24 потому как необходимо просуммировать значения соответствующие каждому часу. Получается своеобразный часовой кластер.
При этом всё считается, но с отставанием, так как процессор не успевает пересчитывать значения. При работе только нескольких формул скорость пересчета вполне нормальная.
 
Ответить
СообщениеAlexM, За час приблизительно добавляется 5 000 строк.
Правильно, формул 24 потому как необходимо просуммировать значения соответствующие каждому часу. Получается своеобразный часовой кластер.
При этом всё считается, но с отставанием, так как процессор не успевает пересчитывать значения. При работе только нескольких формул скорость пересчета вполне нормальная.

Автор - Denis_
Дата добавления - 03.04.2015 в 17:23
Denis_ Дата: Пятница, 03.04.2015, 17:41 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Manyasha, еще заметил, что в начале дня мой вариант еще более менее работает, а к концу даже с одной формулой существенно отстаёт от скорости появления новых строк.
 
Ответить
СообщениеManyasha, еще заметил, что в начале дня мой вариант еще более менее работает, а к концу даже с одной формулой существенно отстаёт от скорости появления новых строк.

Автор - Denis_
Дата добавления - 03.04.2015 в 17:41
_Boroda_ Дата: Пятница, 03.04.2015, 17:55 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Denis_, попробуйте, возможно, в плане скорости будет быстрее. Не факт, но очень возможно
Код
=СУММПРОИЗВ(ЕСЛИ(A:A<"11:00:00";ЕСЛИ(A:A>="10:00:00";ЕСЛИ(C:C="Купля";1;););)*B:B)

или
Код
=СУММ(ЕСЛИ(A:A<"11:00:00";ЕСЛИ(A:A>="10:00:00";ЕСЛИ(C:C="Купля";1;););)*B:B)

Обе формулы массива. Вводятся через Контрл Шифт Ентер
К сообщению приложен файл: 8466750_1.xlsx (11.6 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеDenis_, попробуйте, возможно, в плане скорости будет быстрее. Не факт, но очень возможно
Код
=СУММПРОИЗВ(ЕСЛИ(A:A<"11:00:00";ЕСЛИ(A:A>="10:00:00";ЕСЛИ(C:C="Купля";1;););)*B:B)

или
Код
=СУММ(ЕСЛИ(A:A<"11:00:00";ЕСЛИ(A:A>="10:00:00";ЕСЛИ(C:C="Купля";1;););)*B:B)

Обе формулы массива. Вводятся через Контрл Шифт Ентер

Автор - _Boroda_
Дата добавления - 03.04.2015 в 17:55
Hugo Дата: Пятница, 03.04.2015, 18:17 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
А зачем суммировать постоянно? Когда нужно - протянули формулы и просчитали, можно макросом. Или макросом и считать, даже на 100000 будет быстро.
Можно макросом считать раз в минуту например, или чаще.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеА зачем суммировать постоянно? Когда нужно - протянули формулы и просчитали, можно макросом. Или макросом и считать, даже на 100000 будет быстро.
Можно макросом считать раз в минуту например, или чаще.

Автор - Hugo
Дата добавления - 03.04.2015 в 18:17
AlexM Дата: Пятница, 03.04.2015, 18:27 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4511
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Вариант с макросом. Надо сделать его запуск по событию.
Макрос обрабатывает только вновь добавленные данные. Ячейка F1 хранит номер первой строки будущей порции данных.
[vba]
Код
Sub Denis_Sum()
Dim iRowOld As Long, iRowNew As Long
Dim Arr, i As Long
iRowOld = Cells(1, 6)
iRowNew = Cells(iRowOld, 1).End(xlDown).Row
If iRowNew = Rows.Count Then Exit Sub
Arr = Range(Cells(iRowOld, 1), Cells(iRowNew, 3))
For i = 1 To UBound(Arr)
      If Arr(i, 3) = "Купля" Then Cells(Hour(Arr(i, 1)) + 2, 7) = Cells(Hour(Arr(i, 1)) + 2, 7) + Arr(i, 2)
      If Arr(i, 3) = "Продажа" Then Cells(Hour(Arr(i, 1)) + 2, 8) = Cells(Hour(Arr(i, 1)) + 2, 8) + Arr(i, 2)
Next i
Cells(1, 6) = iRowNew + 1
End Sub
[/vba]
Для скорости еще можно добавить[vba]
Код
Application.ScreenUpdating = False
Application.ScreenUpdating = True
[/vba]
К сообщению приложен файл: 8466750_1.xls (35.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Пятница, 03.04.2015, 18:43
 
Ответить
СообщениеВариант с макросом. Надо сделать его запуск по событию.
Макрос обрабатывает только вновь добавленные данные. Ячейка F1 хранит номер первой строки будущей порции данных.
[vba]
Код
Sub Denis_Sum()
Dim iRowOld As Long, iRowNew As Long
Dim Arr, i As Long
iRowOld = Cells(1, 6)
iRowNew = Cells(iRowOld, 1).End(xlDown).Row
If iRowNew = Rows.Count Then Exit Sub
Arr = Range(Cells(iRowOld, 1), Cells(iRowNew, 3))
For i = 1 To UBound(Arr)
      If Arr(i, 3) = "Купля" Then Cells(Hour(Arr(i, 1)) + 2, 7) = Cells(Hour(Arr(i, 1)) + 2, 7) + Arr(i, 2)
      If Arr(i, 3) = "Продажа" Then Cells(Hour(Arr(i, 1)) + 2, 8) = Cells(Hour(Arr(i, 1)) + 2, 8) + Arr(i, 2)
Next i
Cells(1, 6) = iRowNew + 1
End Sub
[/vba]
Для скорости еще можно добавить[vba]
Код
Application.ScreenUpdating = False
Application.ScreenUpdating = True
[/vba]

Автор - AlexM
Дата добавления - 03.04.2015 в 18:27
Denis_ Дата: Пятница, 03.04.2015, 18:34 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, то есть сочетание, а потом формулу?
 
Ответить
Сообщение_Boroda_, то есть сочетание, а потом формулу?

Автор - Denis_
Дата добавления - 03.04.2015 в 18:34
AlexM Дата: Пятница, 03.04.2015, 18:46 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4511
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
сочетание, а потом формулу?
Написали формулу в строке формул и вместо Enter нажимаете Ctrl+Shift+Enter



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
сочетание, а потом формулу?
Написали формулу в строке формул и вместо Enter нажимаете Ctrl+Shift+Enter

Автор - AlexM
Дата добавления - 03.04.2015 в 18:46
Denis_ Дата: Пятница, 03.04.2015, 19:09 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AlexM, похоже считает правильно. Единственно уперся в 65563 строки и не выполняет работу. Попробую перенести код в 2007 версию. В понедельник отпишусь. Я так понял, что без макросов здесь никак.


Сообщение отредактировал Denis_ - Пятница, 03.04.2015, 19:10
 
Ответить
СообщениеAlexM, похоже считает правильно. Единственно уперся в 65563 строки и не выполняет работу. Попробую перенести код в 2007 версию. В понедельник отпишусь. Я так понял, что без макросов здесь никак.

Автор - Denis_
Дата добавления - 03.04.2015 в 19:09
Denis_ Дата: Понедельник, 06.04.2015, 10:33 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AlexM, код работает, но проблема в том что процесс расчета должен идти непрерывно. А здесь получается что пересчет происходит только после нажатия кнопки пуск.
 
Ответить
СообщениеAlexM, код работает, но проблема в том что процесс расчета должен идти непрерывно. А здесь получается что пересчет происходит только после нажатия кнопки пуск.

Автор - Denis_
Дата добавления - 06.04.2015 в 10:33
AlexM Дата: Понедельник, 06.04.2015, 11:09 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4511
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Надо сделать его запуск по событию.
Когда-то сталкивался с задачей импорта данные сторонней программы в Excel. Событие изменения значений на листе при при импорте и ручном вводе не то же самое. У меня нет возможности предложить проверенный вариант. :(
Надеюсь коллеги подскажут решение.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Надо сделать его запуск по событию.
Когда-то сталкивался с задачей импорта данные сторонней программы в Excel. Событие изменения значений на листе при при импорте и ручном вводе не то же самое. У меня нет возможности предложить проверенный вариант. :(
Надеюсь коллеги подскажут решение.

Автор - AlexM
Дата добавления - 06.04.2015 в 11:09
Denis_ Дата: Понедельник, 06.04.2015, 11:53 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Тоже надеюсь.
 
Ответить
СообщениеТоже надеюсь.

Автор - Denis_
Дата добавления - 06.04.2015 в 11:53
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Работа функции СУММЕСЛИМН и загрузка процессора. (Формулы/Formulas)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!