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

Вход

Регистрация

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

 

= Мир MS Excel/Оптиизация формулы, как снизить нагрузку файла? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Оптиизация формулы, как снизить нагрузку файла? (Формулы/Formulas)
Оптиизация формулы, как снизить нагрузку файла?
negodyaj Дата: Понедельник, 24.06.2019, 14:56 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 115
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем доброго дня!

Формула расчет экспоненциальной скользящей средней, при динамическом периоде расчета.
Код
=ЕСЛИ(A16>=$I$3;ЕСЛИ(D15=ЛОЖЬ;СРЗНАЧ($C$2:ДВССЫЛ("C"&$I$3+1));(2/($I$3+1))*C16+(1-(2/($I$3+1)))*D15);ЛОЖЬ)

Период записан в ячейке
Код
=I3
и равен 15

Алгоритм
В первых D+"I3-1" ячейках написать ЛОЖЬ
В ячейке D+"I3" записать ср.значение последних "I3" ячеек по столбцу C
в D+"I3+1" записать формулу "
Код
=(2/($I$3+1))*C17+(1-(2/($I$3+1)))*E16
"

Проблема в то что эта формула грузит сильно систему если растянуть в 15.000 строк, как можно ее оптимизировать?
Файле более наглядно все выглядит.
К сообщению приложен файл: _EMA.xlsx (12.2 Kb)


Сообщение отредактировал negodyaj - Понедельник, 24.06.2019, 14:58
 
Ответить
СообщениеВсем доброго дня!

Формула расчет экспоненциальной скользящей средней, при динамическом периоде расчета.
Код
=ЕСЛИ(A16>=$I$3;ЕСЛИ(D15=ЛОЖЬ;СРЗНАЧ($C$2:ДВССЫЛ("C"&$I$3+1));(2/($I$3+1))*C16+(1-(2/($I$3+1)))*D15);ЛОЖЬ)

Период записан в ячейке
Код
=I3
и равен 15

Алгоритм
В первых D+"I3-1" ячейках написать ЛОЖЬ
В ячейке D+"I3" записать ср.значение последних "I3" ячеек по столбцу C
в D+"I3+1" записать формулу "
Код
=(2/($I$3+1))*C17+(1-(2/($I$3+1)))*E16
"

Проблема в то что эта формула грузит сильно систему если растянуть в 15.000 строк, как можно ее оптимизировать?
Файле более наглядно все выглядит.

Автор - negodyaj
Дата добавления - 24.06.2019 в 14:56
_Boroda_ Дата: Понедельник, 24.06.2019, 15:10 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
ДВССЫЛ и прочие волатильные функции пересчитываются при любом изменении, поэтому их лучше без крайней необходимости не использовать. Попробуйте вот так
Код
=ЕСЛИ(A2>=$I$3;ЕСЛИ(D1=ЛОЖЬ;СРЗНАЧ($C$2:ИНДЕКС($C:$C;$I$3+1));(2/($I$3+1))*C2+(1-(2/($I$3+1)))*D1);ЛОЖЬ)

Остальную часть формулы оставил как есть
К сообщению приложен файл: _EMA_1.xlsx (12.4 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДВССЫЛ и прочие волатильные функции пересчитываются при любом изменении, поэтому их лучше без крайней необходимости не использовать. Попробуйте вот так
Код
=ЕСЛИ(A2>=$I$3;ЕСЛИ(D1=ЛОЖЬ;СРЗНАЧ($C$2:ИНДЕКС($C:$C;$I$3+1));(2/($I$3+1))*C2+(1-(2/($I$3+1)))*D1);ЛОЖЬ)

Остальную часть формулы оставил как есть

Автор - _Boroda_
Дата добавления - 24.06.2019 в 15:10
китин Дата: Понедельник, 24.06.2019, 15:10 | Сообщение № 3
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Так?
Код
=ЕСЛИ($A2=$I$3;СРЗНАЧ($C$2:ИНДЕКС($C$2:$C$1000;$I$3));ЕСЛИ($A2>$I$3;(2/($I$3+1))*C2+(1-(2/($I$3+1)))*D1;ЛОЖЬ))
К сообщению приложен файл: 3386007.xlsx (12.6 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеТак?
Код
=ЕСЛИ($A2=$I$3;СРЗНАЧ($C$2:ИНДЕКС($C$2:$C$1000;$I$3));ЕСЛИ($A2>$I$3;(2/($I$3+1))*C2+(1-(2/($I$3+1)))*D1;ЛОЖЬ))

Автор - китин
Дата добавления - 24.06.2019 в 15:10
китин Дата: Понедельник, 24.06.2019, 15:14 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
[offtop]Саша дык у кого там мысли сходятся???? :D :p


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение[offtop]Саша дык у кого там мысли сходятся???? :D :p

Автор - китин
Дата добавления - 24.06.2019 в 15:14
_Boroda_ Дата: Понедельник, 24.06.2019, 15:18 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
[offtop]Дык у мы, молодцов таких[/offtop]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[offtop]Дык у мы, молодцов таких[/offtop]

Автор - _Boroda_
Дата добавления - 24.06.2019 в 15:18
negodyaj Дата: Понедельник, 24.06.2019, 17:32 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 115
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо! Формула _Boroda_ даже еще быстрее работает!
 
Ответить
СообщениеСпасибо! Формула _Boroda_ даже еще быстрее работает!

Автор - negodyaj
Дата добавления - 24.06.2019 в 17:32
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Оптиизация формулы, как снизить нагрузку файла? (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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