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

Вход

Регистрация

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

 

= Мир MS Excel/Волатильные (Пересчитываемые или Летучие) функции. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: _Boroda_, Pelena, китин  
Мир MS Excel » Работа и общение » Неформальное общение » Волатильные (Пересчитываемые или Летучие) функции.
Волатильные (Пересчитываемые или Летучие) функции.
Serge_007 Дата: Суббота, 29.01.2011, 23:20 | Сообщение № 1
Группа: Админы
Ранг: Местный житель
Сообщений: 13305
Репутация: ±
Замечаний: ±

Excel 2010
Набрёл в нете на такую статью.
Заинтересовало smile
Вот вольный перевод части статьи:

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

Некоторые из функций Excel очевидно Волатильны: СЛЧИС (), ТДАТА (), СЕГОДНЯ () (от себя добавлю что с 2007 версии к этому списку добавляется СЛУЧМЕЖДУ(). Примечание админа).
Некоторые менее очевидно Волатильны: СМЕЩ (), ЯЧЕЙКА (), ДВССЫЛ (), ИНФОРМАЦИЯ ()
Некоторые Волатильны в некоторых версиях Excel, но не в других: ИНДЕКС () стал не пересчитываемым в Excel 97. (!!!)

Несколько функций, которые указаны в справке Microsoft как волатильные, фактически таковыми не являются:
ИНДЕКС (), СТРОКА (), СТОЛБЕЦ(), ОБЛАСТИ () (Пересчитываются только при удалении/добавлении строк/столбцов на листе.Примечание админа)
и наоборот ЯЧЕЙКА ("Имя файла") волатильна, хотя справка MS утверждает обратное.

Один особый синтаксис СУММЕСЛИ волатилен начиная с Excel 2002 (!!!):
=СУММЕСЛИ (A1:A4,"> 0", B1) волатилен, тогда как =СУММЕСЛИ (A1:A4,"> 0", B1:B4) не волатилен. Обе из этих формул сошлются на ячейки B1:B4. По-видимому пересчёт был добавлен, чтобы дать правильные результаты, когда в B2:B4 были изменения (Имеется ввиду столбец В. Примечание админа).



Яндекс-деньги:41001419691823 | WMR:126292472390
 
Ответить
СообщениеНабрёл в нете на такую статью.
Заинтересовало smile
Вот вольный перевод части статьи:

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

Некоторые из функций Excel очевидно Волатильны: СЛЧИС (), ТДАТА (), СЕГОДНЯ () (от себя добавлю что с 2007 версии к этому списку добавляется СЛУЧМЕЖДУ(). Примечание админа).
Некоторые менее очевидно Волатильны: СМЕЩ (), ЯЧЕЙКА (), ДВССЫЛ (), ИНФОРМАЦИЯ ()
Некоторые Волатильны в некоторых версиях Excel, но не в других: ИНДЕКС () стал не пересчитываемым в Excel 97. (!!!)

Несколько функций, которые указаны в справке Microsoft как волатильные, фактически таковыми не являются:
ИНДЕКС (), СТРОКА (), СТОЛБЕЦ(), ОБЛАСТИ () (Пересчитываются только при удалении/добавлении строк/столбцов на листе.Примечание админа)
и наоборот ЯЧЕЙКА ("Имя файла") волатильна, хотя справка MS утверждает обратное.

Один особый синтаксис СУММЕСЛИ волатилен начиная с Excel 2002 (!!!):
=СУММЕСЛИ (A1:A4,"> 0", B1) волатилен, тогда как =СУММЕСЛИ (A1:A4,"> 0", B1:B4) не волатилен. Обе из этих формул сошлются на ячейки B1:B4. По-видимому пересчёт был добавлен, чтобы дать правильные результаты, когда в B2:B4 были изменения (Имеется ввиду столбец В. Примечание админа).


Автор - Serge_007
Дата добавления - 29.01.2011 в 23:20
Юля Дата: Понедельник, 01.10.2012, 10:38 | Сообщение № 2
Группа: Гости
спасибо, очень помогло
 
Ответить
Сообщениеспасибо, очень помогло

Автор - Юля
Дата добавления - 01.10.2012 в 10:38
Паттттт Дата: Понедельник, 01.10.2012, 13:30 | Сообщение № 3
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

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

Автор - Паттттт
Дата добавления - 01.10.2012 в 13:30
vikttur Дата: Понедельник, 01.10.2012, 13:41 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2925
Репутация: 525 ±
Замечаний: 0% ±

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

Автор - vikttur
Дата добавления - 01.10.2012 в 13:41
Паттттт Дата: Понедельник, 01.10.2012, 13:52 | Сообщение № 5
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Quote (vikttur)
Большинство функций пересчитываются при изменении исходных данных для этих функций.
Так называемые летучие - при любых изменениях на листе. Большинство функций пересчитываются при изменении исходных данных для этих функций.
Так называемые летучие - при любых изменениях на листе.vikttur


Значит они - волатильные?
 
Ответить
Сообщение
Quote (vikttur)
Большинство функций пересчитываются при изменении исходных данных для этих функций.
Так называемые летучие - при любых изменениях на листе. Большинство функций пересчитываются при изменении исходных данных для этих функций.
Так называемые летучие - при любых изменениях на листе.vikttur


Значит они - волатильные?

Автор - Паттттт
Дата добавления - 01.10.2012 в 13:52
vikttur Дата: Понедельник, 01.10.2012, 13:55 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2925
Репутация: 525 ±
Замечаний: 0% ±

Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций.
Так понятно?
 
Ответить
СообщениеЛетучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций.
Так понятно?

Автор - vikttur
Дата добавления - 01.10.2012 в 13:55
Паттттт Дата: Понедельник, 01.10.2012, 13:57 | Сообщение № 7
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Quote (vikttur)
Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций.
Так понятно? Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций.
Так понятно?vikttur

То есть то, что сказал Serge 007 вначале темы - неправда?
 
Ответить
Сообщение
Quote (vikttur)
Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций.
Так понятно? Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций.
Так понятно?vikttur

То есть то, что сказал Serge 007 вначале темы - неправда?

Автор - Паттттт
Дата добавления - 01.10.2012 в 13:57
MCH Дата: Понедельник, 01.10.2012, 17:15 | Сообщение № 8
Группа: Админы
Ранг: Старожил
Сообщений: 1943
Репутация: 723 ±
Замечаний: ±

Quote (Паттттт)
Почти все функции пересчитывются при изменении данных в ячейках, - значит почсти все - волатильны. Или я что-то не понял?

Скорее всего "что-то не понял"

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

Например:
Формула =СМЕЩ(A1;;2) будет пересчитываться при любом изменении (в любой ячейке на листе)
а =ИНДЕКС(A1:E1;3) будет пересчитыватся только при изменениях в ячейках A1:E1, и изменения в ячейках A2:E2 или других не заставят пересчитываться формулу

PS: Паттттт, зачем Вы постоянно цитируете сообщения целиком, от этого понятнее не становится, на что Вы отвечаете
 
Ответить
Сообщение
Quote (Паттттт)
Почти все функции пересчитывются при изменении данных в ячейках, - значит почсти все - волатильны. Или я что-то не понял?

Скорее всего "что-то не понял"

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

Например:
Формула =СМЕЩ(A1;;2) будет пересчитываться при любом изменении (в любой ячейке на листе)
а =ИНДЕКС(A1:E1;3) будет пересчитыватся только при изменениях в ячейках A1:E1, и изменения в ячейках A2:E2 или других не заставят пересчитываться формулу

PS: Паттттт, зачем Вы постоянно цитируете сообщения целиком, от этого понятнее не становится, на что Вы отвечаете

Автор - MCH
Дата добавления - 01.10.2012 в 17:15
Паттттт Дата: Понедельник, 01.10.2012, 17:29 | Сообщение № 9
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Quote (MCH)
PS: Паттттт, зачем Вы постоянно цитируете сообщения целиком, от этого понятнее не становится, на что Вы отвечаете

Это такой баг цитирования - выделил текст для цитирования - он пишется, ав заним - весь текст поста, в том числе и уже написавшийся выделенный текст. А мне - лень чистить цитату.
 
Ответить
Сообщение
Quote (MCH)
PS: Паттттт, зачем Вы постоянно цитируете сообщения целиком, от этого понятнее не становится, на что Вы отвечаете

Это такой баг цитирования - выделил текст для цитирования - он пишется, ав заним - весь текст поста, в том числе и уже написавшийся выделенный текст. А мне - лень чистить цитату.

Автор - Паттттт
Дата добавления - 01.10.2012 в 17:29
Полковник МВД Дата: Понедельник, 01.10.2012, 22:15 | Сообщение № 10
Группа: Гости
Quote (Паттттт)
Это такой баг цитирования - выделил текст для цитирования - он пишется, ав заним - весь текст поста

Не болтайте ерундой!
Если у кого-то кривые руки, то
Quote (Паттттт)
лень чистить цитату
придётся побороть, иначе остальным станет лень Вам отвечать
 
Ответить
Сообщение
Quote (Паттттт)
Это такой баг цитирования - выделил текст для цитирования - он пишется, ав заним - весь текст поста

Не болтайте ерундой!
Если у кого-то кривые руки, то
Quote (Паттттт)
лень чистить цитату
придётся побороть, иначе остальным станет лень Вам отвечать

Автор - Полковник МВД
Дата добавления - 01.10.2012 в 22:15
Hugo Дата: Понедельник, 01.10.2012, 22:16 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2971
Репутация: 653 ±
Замечаний: 0% ±

Паттттт, у меня бага нет.
Вот выделил
Quote (Паттттт)
текст для цитирования

он и процитировался.
И не нужно троллить - постарайтесь не отвечать многословно на моё сообщение. Лучше вообще не отвечайте smile


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеПаттттт, у меня бага нет.
Вот выделил
Quote (Паттттт)
текст для цитирования

он и процитировался.
И не нужно троллить - постарайтесь не отвечать многословно на моё сообщение. Лучше вообще не отвечайте smile

Автор - Hugo
Дата добавления - 01.10.2012 в 22:16
Паттттт Дата: Вторник, 02.10.2012, 13:14 | Сообщение № 12
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

А я тоже не вру:
К сообщению приложен файл: 0890498.jpg(72.6 Kb)
 
Ответить
СообщениеА я тоже не вру:

Автор - Паттттт
Дата добавления - 02.10.2012 в 13:14
Паттттт Дата: Вторник, 02.10.2012, 13:15 | Сообщение № 13
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Цитирование работает плохо - даже по два раза пост пишет (см. скрин в предыдущем посте).
 
Ответить
СообщениеЦитирование работает плохо - даже по два раза пост пишет (см. скрин в предыдущем посте).

Автор - Паттттт
Дата добавления - 02.10.2012 в 13:15
_Boroda_ Дата: Среда, 03.10.2012, 04:08 | Сообщение № 14
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15946
Репутация: 6201 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вот в этом случае я с Патттттом согласен. У меня так тоже иногда бывает. Причем я так и не уловил закономерность - когда цитирует нормально, а когда с задвоением.
А вот то, что "лень чистить цитату" - это не есть хорошо.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВот в этом случае я с Патттттом согласен. У меня так тоже иногда бывает. Причем я так и не уловил закономерность - когда цитирует нормально, а когда с задвоением.
А вот то, что "лень чистить цитату" - это не есть хорошо.

Автор - _Boroda_
Дата добавления - 03.10.2012 в 04:08
Rez Дата: Четверг, 08.11.2012, 11:26 | Сообщение № 15
Группа: Гости
эти волатильные сволочи пересчитываются не только при любом изменении, но даже без всяких изменений. открыл книгу - ниче не сделал - закрывать, а он у тебя такой "а не сохранить ли изменения?". и сиди думай, че ты там уже на изменял
 
Ответить
Сообщениеэти волатильные сволочи пересчитываются не только при любом изменении, но даже без всяких изменений. открыл книгу - ниче не сделал - закрывать, а он у тебя такой "а не сохранить ли изменения?". и сиди думай, че ты там уже на изменял

Автор - Rez
Дата добавления - 08.11.2012 в 11:26
Serge_007 Дата: Четверг, 08.11.2012, 11:40 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 13305
Репутация: ±
Замечаний: ±

Excel 2010
Quote (Rez)
...открыл книгу...

Этого достаточно. При открытии лист пересчитывается и при наличии волатильных функций Excel будет просить сохранить изменения


Яндекс-деньги:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Rez)
...открыл книгу...

Этого достаточно. При открытии лист пересчитывается и при наличии волатильных функций Excel будет просить сохранить изменения

Автор - Serge_007
Дата добавления - 08.11.2012 в 11:40
KUDRIN Дата: Четверг, 06.06.2013, 20:43 | Сообщение № 17
Группа: Проверенные
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
выявили проблемы в функции МАКС()
подробности на планете http://www.planetaexcel.ru/forum/?PAGE_NAME=message&FID=1&TID=48759
 
Ответить
Сообщениевыявили проблемы в функции МАКС()
подробности на планете http://www.planetaexcel.ru/forum/?PAGE_NAME=message&FID=1&TID=48759

Автор - KUDRIN
Дата добавления - 06.06.2013 в 20:43
Serge_007 Дата: Четверг, 06.06.2013, 21:09 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 13305
Репутация: ±
Замечаний: ±

Excel 2010
Это не проблемы функции МАКС(), а проблема её применения. Andre TM правильно определил причину, хотя и ошибся с волатильностью функции МАКС()
Эта функция не является волатильной и пересчитывается только в том случае, когда изменяются данные в диапазоне её использования. Что и происходит при удалении данных из столбца В. А когда 60 тысяч раз пересчитывается даже самая быстрая функция - быстроты не будет wink

KUDRIN, если Вам нравятся экстремальные ситуации, то заполните каким нибудь значением несколько листов Excel целиком. Вам понравится smile


Яндекс-деньги:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЭто не проблемы функции МАКС(), а проблема её применения. Andre TM правильно определил причину, хотя и ошибся с волатильностью функции МАКС()
Эта функция не является волатильной и пересчитывается только в том случае, когда изменяются данные в диапазоне её использования. Что и происходит при удалении данных из столбца В. А когда 60 тысяч раз пересчитывается даже самая быстрая функция - быстроты не будет wink

KUDRIN, если Вам нравятся экстремальные ситуации, то заполните каким нибудь значением несколько листов Excel целиком. Вам понравится smile

Автор - Serge_007
Дата добавления - 06.06.2013 в 21:09
AndreTM Дата: Четверг, 06.06.2013, 23:42 | Сообщение № 19
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 497 ±
Замечаний: 0% ±

2003 & 2010
Цитата (Serge_007)
А когда 60 тысяч раз пересчитывается даже самая быстрая функция - быстроты не будет
Да, с волатильностью - это я просто предположил. А вот функция будет пересчитываться отнюдь не 60000 раз, а намного, намного более... сколько? Давайте посмотрим:
Например, мы имеем пять ячеек (A1:A5) , в которых есть одна функция, использующая ссылку на предшествующий диапазон (предположим, это будет =МАКС(A$1:A1) ). Что же происходит при очистке ячеек в направлении сверху-вниз, от A1 к A5?
1. Очищаем A1. A1 входит в диапазон расчета для ячеек A2:A5 - пересчитываются четыре функции в четырех ячейках.
2. Очищаем A2. A2 входит в диапазон расчета для ячеек A3:A5 - пересчитываются три функции.
3. Очищаем A3. A3 входит в диапазон расчета для ячеек A4:A5 - пересчитываются две функции.
4. Очищаем A4. A4 входит в диапазон расчета для ячейки A5 - пересчитывается одна функция.
5. Очищаем A5.
Считаем: для очистки k=5 ячеек одна функция пересчиталась 4+3+2+1=10 раз. Формула известна - сумма арифметической прогрессии для n=k-1: S=(a1+an)*n/2=(1+k-1)*(k-1)/2=k*(k-1)/2.
k=60000; S=60000*59999/2= 1 799 970 000 раз... cool

В то же время, предложенное решение данной проблемы - очищать диапазон от конца к началу - не вызывает пересчет вообще ни разу.


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Пятница, 07.06.2013, 00:19
 
Ответить
Сообщение
Цитата (Serge_007)
А когда 60 тысяч раз пересчитывается даже самая быстрая функция - быстроты не будет
Да, с волатильностью - это я просто предположил. А вот функция будет пересчитываться отнюдь не 60000 раз, а намного, намного более... сколько? Давайте посмотрим:
Например, мы имеем пять ячеек (A1:A5) , в которых есть одна функция, использующая ссылку на предшествующий диапазон (предположим, это будет =МАКС(A$1:A1) ). Что же происходит при очистке ячеек в направлении сверху-вниз, от A1 к A5?
1. Очищаем A1. A1 входит в диапазон расчета для ячеек A2:A5 - пересчитываются четыре функции в четырех ячейках.
2. Очищаем A2. A2 входит в диапазон расчета для ячеек A3:A5 - пересчитываются три функции.
3. Очищаем A3. A3 входит в диапазон расчета для ячеек A4:A5 - пересчитываются две функции.
4. Очищаем A4. A4 входит в диапазон расчета для ячейки A5 - пересчитывается одна функция.
5. Очищаем A5.
Считаем: для очистки k=5 ячеек одна функция пересчиталась 4+3+2+1=10 раз. Формула известна - сумма арифметической прогрессии для n=k-1: S=(a1+an)*n/2=(1+k-1)*(k-1)/2=k*(k-1)/2.
k=60000; S=60000*59999/2= 1 799 970 000 раз... cool

В то же время, предложенное решение данной проблемы - очищать диапазон от конца к началу - не вызывает пересчет вообще ни разу.

Автор - AndreTM
Дата добавления - 06.06.2013 в 23:42
KUDRIN Дата: Четверг, 27.06.2013, 09:11 | Сообщение № 20
Группа: Проверенные
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Цитата (Serge_007)
KUDRIN, если Вам нравятся экстремальные ситуации, то заполните каким нибудь значением несколько листов Excel целиком. Вам понравится

к чему эти колкости? лучше бы подсказали четвертый способ нахождения уникальных значений формулой (либо не только уникальных, а с любыми условиями, которые можно задать формулой ЕСЛИ) для столбика например всего в 100 тысяч строк в приёмах. ведь работа на большом количестве строк с формулой A10=если(ххх;макс(A$1:A9)+1) или A10=если(ххх;счет(A$1:A9)+1) неудобна


Сообщение отредактировал KUDRIN - Четверг, 27.06.2013, 09:33
 
Ответить
Сообщение
Цитата (Serge_007)
KUDRIN, если Вам нравятся экстремальные ситуации, то заполните каким нибудь значением несколько листов Excel целиком. Вам понравится

к чему эти колкости? лучше бы подсказали четвертый способ нахождения уникальных значений формулой (либо не только уникальных, а с любыми условиями, которые можно задать формулой ЕСЛИ) для столбика например всего в 100 тысяч строк в приёмах. ведь работа на большом количестве строк с формулой A10=если(ххх;макс(A$1:A9)+1) или A10=если(ххх;счет(A$1:A9)+1) неудобна

Автор - KUDRIN
Дата добавления - 27.06.2013 в 09:11
Мир MS Excel » Работа и общение » Неформальное общение » Волатильные (Пересчитываемые или Летучие) функции.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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