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

Вход

Регистрация

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

 

= Мир MS Excel/Как заставить формулу не обращаться к динамичным данным? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как заставить формулу не обращаться к динамичным данным?
operkote Дата: Среда, 17.10.2012, 15:54 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте. Помогите, пожалуйста, найти решение проблемы.

Допустим, в некоторую ячейку №1 поступают данные через DDE-сервер из торгового биржевого терминала. Данные обновляются не реже 1 раза в секунду, то есть, можно сказать, что бесперерывно.

В другой ячейке №2 написана формула, которая, при определенном значении статичной третьей ячейки №3, выполняет свой расчет с участием динамичной первой ячейки №1, а при всех остальных условиях расчет ведется по статичным данным, то есть, обновляемая первая ячейка №1 более не влияет на результат второй ячейки №2.
Иными словами, если указать, к примеру, в третьей ячейке - "1", то вторая ячейка будет постоянно пересчитываться по мере поступления данных в первую ячейку. Как только я впишу в третью ячейку не "1", а что либо другое, - вторая ячейка станет статичной, так как более в ее расчете не будет участвовать обновляемая ячейка.

Вооот. Теперь сама проблема.

Даже когда в третьей ячейке находятся данные, при которых вторая ячейка становится статичной и ее результат более не зависит от обновляемой первой, эксель все равно пересчитывает ее, т.к. в самой формуле участвует обновляемая ячейка. Его не волнует, что при данных условиях обновляемая ячейка более не влияет на результат, - пересчет все равно происходит.
Надо сделать так, чтобы как только я указал в ячейке №3 - "1", ячейка №2 более не пересчитывалась вместе с поступлением котировок в ячейку №1. Может, как-то по-другому написать формулу, нежели у меня, или что-то в таком роде.

Буду очень-очень благодарен за помощь в данном вопросе. Схематичный вариант проблемы прилагаю к сообщению.
К сообщению приложен файл: 5906470.xlsx (11.6 Kb)
 
Ответить
СообщениеЗдравствуйте. Помогите, пожалуйста, найти решение проблемы.

Допустим, в некоторую ячейку №1 поступают данные через DDE-сервер из торгового биржевого терминала. Данные обновляются не реже 1 раза в секунду, то есть, можно сказать, что бесперерывно.

В другой ячейке №2 написана формула, которая, при определенном значении статичной третьей ячейки №3, выполняет свой расчет с участием динамичной первой ячейки №1, а при всех остальных условиях расчет ведется по статичным данным, то есть, обновляемая первая ячейка №1 более не влияет на результат второй ячейки №2.
Иными словами, если указать, к примеру, в третьей ячейке - "1", то вторая ячейка будет постоянно пересчитываться по мере поступления данных в первую ячейку. Как только я впишу в третью ячейку не "1", а что либо другое, - вторая ячейка станет статичной, так как более в ее расчете не будет участвовать обновляемая ячейка.

Вооот. Теперь сама проблема.

Даже когда в третьей ячейке находятся данные, при которых вторая ячейка становится статичной и ее результат более не зависит от обновляемой первой, эксель все равно пересчитывает ее, т.к. в самой формуле участвует обновляемая ячейка. Его не волнует, что при данных условиях обновляемая ячейка более не влияет на результат, - пересчет все равно происходит.
Надо сделать так, чтобы как только я указал в ячейке №3 - "1", ячейка №2 более не пересчитывалась вместе с поступлением котировок в ячейку №1. Может, как-то по-другому написать формулу, нежели у меня, или что-то в таком роде.

Буду очень-очень благодарен за помощь в данном вопросе. Схематичный вариант проблемы прилагаю к сообщению.

Автор - operkote
Дата добавления - 17.10.2012 в 15:54
ZORRO2005 Дата: Среда, 17.10.2012, 16:07 | Сообщение № 2
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
operkote,
Попробуйте в ячейке №3:
Code
=СМЕЩ(B7;;G7>0)+1


Сообщение отредактировал ZORRO2005 - Среда, 17.10.2012, 16:07
 
Ответить
Сообщениеoperkote,
Попробуйте в ячейке №3:
Code
=СМЕЩ(B7;;G7>0)+1

Автор - ZORRO2005
Дата добавления - 17.10.2012 в 16:07
operkote Дата: Среда, 17.10.2012, 16:20 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

ZORRO2005,
Спасибо, сейчас попробую.


Сообщение отредактировал operkote - Среда, 17.10.2012, 16:20
 
Ответить
СообщениеZORRO2005,
Спасибо, сейчас попробую.

Автор - operkote
Дата добавления - 17.10.2012 в 16:20
ZORRO2005 Дата: Среда, 17.10.2012, 16:21 | Сообщение № 4
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
Если быть точнее:
Code
=СМЕЩ(B7;;G7>0)+1+(G7<=0)
 
Ответить
СообщениеЕсли быть точнее:
Code
=СМЕЩ(B7;;G7>0)+1+(G7<=0)

Автор - ZORRO2005
Дата добавления - 17.10.2012 в 16:21
operkote Дата: Среда, 17.10.2012, 17:14 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Очень помогли - проблема решена. Спасибо.
 
Ответить
СообщениеОчень помогли - проблема решена. Спасибо.

Автор - operkote
Дата добавления - 17.10.2012 в 17:14
operkote Дата: Среда, 17.10.2012, 17:51 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Если можно, я бы хотел задать еще один небольшой вопрос.

Как оставить данную формулу в силе, отказавшись от массива?

{=СУММ(ЕСЛИ((D:D="Buy")*(R:R="")*(H:H<P:P)*(K:K>0);F:F))}

Массив этот жутко садит производительность. Та же история была с другим массивом, но там было от него отказаться легко, и глючить перестало. Здесь же мне из-за этой части условий суммы, как новичку в экселе, непонятно, как убрать массив:

(H:H<P:P)

Заранее большое спасибо за помощь.


Сообщение отредактировал operkote - Среда, 17.10.2012, 17:55
 
Ответить
СообщениеЕсли можно, я бы хотел задать еще один небольшой вопрос.

Как оставить данную формулу в силе, отказавшись от массива?

{=СУММ(ЕСЛИ((D:D="Buy")*(R:R="")*(H:H<P:P)*(K:K>0);F:F))}

Массив этот жутко садит производительность. Та же история была с другим массивом, но там было от него отказаться легко, и глючить перестало. Здесь же мне из-за этой части условий суммы, как новичку в экселе, непонятно, как убрать массив:

(H:H<P:P)

Заранее большое спасибо за помощь.

Автор - operkote
Дата добавления - 17.10.2012 в 17:51
ABC Дата: Среда, 17.10.2012, 17:59 | Сообщение № 7
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
operkote, так же работает без массивных формул {}
берите просто диапазон, а не вес столбик
Code
=СУММ(ЕСЛИ((D$1:D$10="Buy")*(R$1:R$10="")*(H$1:H$10<P$1:P$10)*(K$1:K$10>0);F$1:F$10))


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
Сообщениеoperkote, так же работает без массивных формул {}
берите просто диапазон, а не вес столбик
Code
=СУММ(ЕСЛИ((D$1:D$10="Buy")*(R$1:R$10="")*(H$1:H$10<P$1:P$10)*(K$1:K$10>0);F$1:F$10))

Автор - ABC
Дата добавления - 17.10.2012 в 17:59
operkote Дата: Среда, 17.10.2012, 18:06 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

ABC,

Без массива работать не хочет - выдает ноль, хотя на самом деле это не так. С массивом все работает как надо.

Вообще, я, конечно, новичок, но ведь в массивах логические "и" и "или" можно (или нужно?) заменять на знаки умножения и сложения соответственно. Если же массив убрать и просто вставить эту формулу в ячейку, то умножение и сложение более не будут логическими функциями.


Сообщение отредактировал operkote - Среда, 17.10.2012, 18:06
 
Ответить
Сообщение ABC,

Без массива работать не хочет - выдает ноль, хотя на самом деле это не так. С массивом все работает как надо.

Вообще, я, конечно, новичок, но ведь в массивах логические "и" и "или" можно (или нужно?) заменять на знаки умножения и сложения соответственно. Если же массив убрать и просто вставить эту формулу в ячейку, то умножение и сложение более не будут логическими функциями.

Автор - operkote
Дата добавления - 17.10.2012 в 18:06
ZORRO2005 Дата: Среда, 17.10.2012, 18:30 | Сообщение № 9
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
operkote,
где пример?
 
Ответить
Сообщениеoperkote,
где пример?

Автор - ZORRO2005
Дата добавления - 17.10.2012 в 18:30
operkote Дата: Среда, 17.10.2012, 18:36 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Прилагаю. Извиняюсь, просто мне показалось, что в данном вопросе это необязательно.
К сообщению приложен файл: 6844180.xlsx (9.5 Kb)
 
Ответить
СообщениеПрилагаю. Извиняюсь, просто мне показалось, что в данном вопросе это необязательно.

Автор - operkote
Дата добавления - 17.10.2012 в 18:36
ABC Дата: Среда, 17.10.2012, 19:27 | Сообщение № 11
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
Code
=СУММПРОИЗВ((G3:G6="Buy")*(H3:H6="")*(I3:I6<J3:J6)*(K3:K6>0)*L3:L6)


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
Сообщение
Code
=СУММПРОИЗВ((G3:G6="Buy")*(H3:H6="")*(I3:I6<J3:J6)*(K3:K6>0)*L3:L6)

Автор - ABC
Дата добавления - 17.10.2012 в 19:27
operkote Дата: Среда, 17.10.2012, 19:32 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Большое спасибо.
 
Ответить
СообщениеБольшое спасибо.

Автор - operkote
Дата добавления - 17.10.2012 в 19:32
vikttur Дата: Четверг, 18.10.2012, 02:08 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

operkote, Вы заблуждаетесь. Ускоряет вычисления не отказ от красивых скобок.
Вы применяете ссылки на весь столбец (на что Вам уже указали), добавляя лишние вычисления.
СУММПРОИЗВ() вводится без массивного ввода, но это не ускоряет обработку таких же массивов данных.
Стоит заметить, что СУММ() работает немного медленнее, но не на столько, как Вы подумали, отказавшись от трехпальцевого ввода.
Формулу можно ускорить существенно - до 20-25% (проверено, Serge_007 может подтвердить):
Code
=СУММПРОИЗВ(--(G3:G6="Buy");--(H3:H6="");--(I3:I6<J3:J6);--(K3:K6>0);L3:L6)


Сообщение отредактировал vikttur - Четверг, 18.10.2012, 02:15
 
Ответить
Сообщение operkote, Вы заблуждаетесь. Ускоряет вычисления не отказ от красивых скобок.
Вы применяете ссылки на весь столбец (на что Вам уже указали), добавляя лишние вычисления.
СУММПРОИЗВ() вводится без массивного ввода, но это не ускоряет обработку таких же массивов данных.
Стоит заметить, что СУММ() работает немного медленнее, но не на столько, как Вы подумали, отказавшись от трехпальцевого ввода.
Формулу можно ускорить существенно - до 20-25% (проверено, Serge_007 может подтвердить):
Code
=СУММПРОИЗВ(--(G3:G6="Buy");--(H3:H6="");--(I3:I6<J3:J6);--(K3:K6>0);L3:L6)

Автор - vikttur
Дата добавления - 18.10.2012 в 02:08
operkote Дата: Пятница, 19.10.2012, 11:34 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

vikttur,
Спасибо - формулой воспользовался.

По поводу того, что я выбираю большой диапазон для массива: я заменил целые столбцы на тысячестрочные диапазоны, но уменьшить не могу - формул и зависимостей в книге довольно много, поэтому не хотелось бы после 50 строчек снова лезть и расширять диапазоны.

Или я не знаю очевидной истины, как заставить диапазон суммирования в формуле саморасширяться при удлинении таблицы? То есть, не в той формуле, что расширяется вместе с таблицей, а в той, что стоит рядом и суммирует все данные в столбце таблицы.
 
Ответить
Сообщениеvikttur,
Спасибо - формулой воспользовался.

По поводу того, что я выбираю большой диапазон для массива: я заменил целые столбцы на тысячестрочные диапазоны, но уменьшить не могу - формул и зависимостей в книге довольно много, поэтому не хотелось бы после 50 строчек снова лезть и расширять диапазоны.

Или я не знаю очевидной истины, как заставить диапазон суммирования в формуле саморасширяться при удлинении таблицы? То есть, не в той формуле, что расширяется вместе с таблицей, а в той, что стоит рядом и суммирует все данные в столбце таблицы.

Автор - operkote
Дата добавления - 19.10.2012 в 11:34
vikttur Дата: Пятница, 19.10.2012, 11:40 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Quote (operkote)
...как заставить диапазон суммирования в формуле саморасширяться при удлинении таблицы?

Этого не знаете. Но оно есть! smile
Коротко:
Ctrl+F3 - диспетчер имен, где формулой создается динамическое имя. Ищите по этому словосочетанию,
 
Ответить
Сообщение
Quote (operkote)
...как заставить диапазон суммирования в формуле саморасширяться при удлинении таблицы?

Этого не знаете. Но оно есть! smile
Коротко:
Ctrl+F3 - диспетчер имен, где формулой создается динамическое имя. Ищите по этому словосочетанию,

Автор - vikttur
Дата добавления - 19.10.2012 в 11:40
Serge_007 Дата: Пятница, 19.10.2012, 11:44 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (operkote)
...как заставить диапазон суммирования в формуле саморасширяться при удлинении таблицы?

Для Excel, версий младше 2003 - используйте инструмент Таблица


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (operkote)
...как заставить диапазон суммирования в формуле саморасширяться при удлинении таблицы?

Для Excel, версий младше 2003 - используйте инструмент Таблица

Автор - Serge_007
Дата добавления - 19.10.2012 в 11:44
operkote Дата: Пятница, 19.10.2012, 12:36 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Спасибо, разобрался.
 
Ответить
СообщениеСпасибо, разобрался.

Автор - operkote
Дата добавления - 19.10.2012 в 12:36
  • Страница 1 из 1
  • 1
Поиск:

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