Набрёл в нете на такую статью. Заинтересовало Вот вольный перевод части статьи:
Волатильные Функции. Волатильная Функция в формуле в ячейке заставляет эту ячейку всегда повторно вычисляться при каждом перерасчете, даже если у этого, кажется, нет причин. Избегайте Волатильные функции везде, где это возможно.
Некоторые из функций Excel очевидно Волатильны: СЛЧИС (), ТДАТА (), СЕГОДНЯ () (от себя добавлю что с 2007 версии к этому списку добавляется СЛУЧМЕЖДУ(). Примечание админа). Некоторые менее очевидно Волатильны: СМЕЩ (), ЯЧЕЙКА (), ДВССЫЛ (), ИНФОРМАЦИЯ () Некоторые Волатильны в некоторых версиях Excel, но не в других: ИНДЕКС () стал не пересчитываемым в Excel 97. (!!!)
Несколько функций, которые указаны в справке Microsoft как волатильные, фактически таковыми не являются: ИНДЕКС (), СТРОКА (), СТОЛБЕЦ(), ОБЛАСТИ () (Пересчитываются только при удалении/добавлении строк/столбцов на листе.Примечание админа) и наоборот ЯЧЕЙКА ("Имя файла") волатильна, хотя справка MS утверждает обратное.
Один особый синтаксис СУММЕСЛИ волатилен начиная с Excel 2002 (!!!): =СУММЕСЛИ (A1:A4,"> 0", B1) волатилен, тогда как =СУММЕСЛИ (A1:A4,"> 0", B1:B4) не волатилен. Обе из этих формул сошлются на ячейки B1:B4. По-видимому пересчёт был добавлен, чтобы дать правильные результаты, когда в B2:B4 были изменения (Имеется ввиду столбец В. Примечание админа).
Набрёл в нете на такую статью. Заинтересовало Вот вольный перевод части статьи:
Волатильные Функции. Волатильная Функция в формуле в ячейке заставляет эту ячейку всегда повторно вычисляться при каждом перерасчете, даже если у этого, кажется, нет причин. Избегайте Волатильные функции везде, где это возможно.
Некоторые из функций Excel очевидно Волатильны: СЛЧИС (), ТДАТА (), СЕГОДНЯ () (от себя добавлю что с 2007 версии к этому списку добавляется СЛУЧМЕЖДУ(). Примечание админа). Некоторые менее очевидно Волатильны: СМЕЩ (), ЯЧЕЙКА (), ДВССЫЛ (), ИНФОРМАЦИЯ () Некоторые Волатильны в некоторых версиях Excel, но не в других: ИНДЕКС () стал не пересчитываемым в Excel 97. (!!!)
Несколько функций, которые указаны в справке Microsoft как волатильные, фактически таковыми не являются: ИНДЕКС (), СТРОКА (), СТОЛБЕЦ(), ОБЛАСТИ () (Пересчитываются только при удалении/добавлении строк/столбцов на листе.Примечание админа) и наоборот ЯЧЕЙКА ("Имя файла") волатильна, хотя справка MS утверждает обратное.
Один особый синтаксис СУММЕСЛИ волатилен начиная с Excel 2002 (!!!): =СУММЕСЛИ (A1:A4,"> 0", B1) волатилен, тогда как =СУММЕСЛИ (A1:A4,"> 0", B1:B4) не волатилен. Обе из этих формул сошлются на ячейки B1:B4. По-видимому пересчёт был добавлен, чтобы дать правильные результаты, когда в B2:B4 были изменения (Имеется ввиду столбец В. Примечание админа).
Большинство функций пересчитываются при изменении исходных данных для этих функций. Так называемые летучие - при любых изменениях на листе. Большинство функций пересчитываются при изменении исходных данных для этих функций. Так называемые летучие - при любых изменениях на листе.vikttur
Значит они - волатильные?
Quote (vikttur)
Большинство функций пересчитываются при изменении исходных данных для этих функций. Так называемые летучие - при любых изменениях на листе. Большинство функций пересчитываются при изменении исходных данных для этих функций. Так называемые летучие - при любых изменениях на листе.vikttur
Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций. Так понятно?
Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций. Так понятно?vikttur
Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций. Так понятно? Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций. Так понятно?vikttur
То есть то, что сказал Serge 007 вначале темы - неправда?
Quote (vikttur)
Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций. Так понятно? Летучие (изменяемые, изменчивые, волатильные) - те, которые пересчитываются при любых изменениях на листе, независимо от того, поменялись ли исходные данные этих функций. Так понятно?vikttur
То есть то, что сказал Serge 007 вначале темы - неправда?Паттттт
Почти все функции пересчитывются при изменении данных в ячейках, - значит почсти все - волатильны. Или я что-то не понял?
Скорее всего "что-то не понял"
волатильные - пересчитываются всегда, при любом изменение на листе не волатильные - пересчитываются только когда изменяются исходные данные этих функций
Например: Формула =СМЕЩ(A1;;2) будет пересчитываться при любом изменении (в любой ячейке на листе) а =ИНДЕКС(A1:E1;3) будет пересчитыватся только при изменениях в ячейках A1:E1, и изменения в ячейках A2:E2 или других не заставят пересчитываться формулу
PS: Паттттт, зачем Вы постоянно цитируете сообщения целиком, от этого понятнее не становится, на что Вы отвечаете
Quote (Паттттт)
Почти все функции пересчитывются при изменении данных в ячейках, - значит почсти все - волатильны. Или я что-то не понял?
Скорее всего "что-то не понял"
волатильные - пересчитываются всегда, при любом изменение на листе не волатильные - пересчитываются только когда изменяются исходные данные этих функций
Например: Формула =СМЕЩ(A1;;2) будет пересчитываться при любом изменении (в любой ячейке на листе) а =ИНДЕКС(A1:E1;3) будет пересчитыватся только при изменениях в ячейках A1:E1, и изменения в ячейках A2:E2 или других не заставят пересчитываться формулу
PS: Паттттт, зачем Вы постоянно цитируете сообщения целиком, от этого понятнее не становится, на что Вы отвечаетеMCH
PS: Паттттт, зачем Вы постоянно цитируете сообщения целиком, от этого понятнее не становится, на что Вы отвечаете
Это такой баг цитирования - выделил текст для цитирования - он пишется, ав заним - весь текст поста, в том числе и уже написавшийся выделенный текст. А мне - лень чистить цитату.
Quote (MCH)
PS: Паттттт, зачем Вы постоянно цитируете сообщения целиком, от этого понятнее не становится, на что Вы отвечаете
Это такой баг цитирования - выделил текст для цитирования - он пишется, ав заним - весь текст поста, в том числе и уже написавшийся выделенный текст. А мне - лень чистить цитату.Паттттт
Вот в этом случае я с Патттттом согласен. У меня так тоже иногда бывает. Причем я так и не уловил закономерность - когда цитирует нормально, а когда с задвоением. А вот то, что "лень чистить цитату" - это не есть хорошо.
Вот в этом случае я с Патттттом согласен. У меня так тоже иногда бывает. Причем я так и не уловил закономерность - когда цитирует нормально, а когда с задвоением. А вот то, что "лень чистить цитату" - это не есть хорошо._Boroda_
эти волатильные сволочи пересчитываются не только при любом изменении, но даже без всяких изменений. открыл книгу - ниче не сделал - закрывать, а он у тебя такой "а не сохранить ли изменения?". и сиди думай, че ты там уже на изменял
эти волатильные сволочи пересчитываются не только при любом изменении, но даже без всяких изменений. открыл книгу - ниче не сделал - закрывать, а он у тебя такой "а не сохранить ли изменения?". и сиди думай, че ты там уже на изменялRez
Это не проблемы функции МАКС(), а проблема её применения. Andre TM правильно определил причину, хотя и ошибся с волатильностью функции МАКС() Эта функция не является волатильной и пересчитывается только в том случае, когда изменяются данные в диапазоне её использования. Что и происходит при удалении данных из столбца В. А когда 60 тысяч раз пересчитывается даже самая быстрая функция - быстроты не будет
KUDRIN, если Вам нравятся экстремальные ситуации, то заполните каким нибудь значением несколько листов Excel целиком. Вам понравится
Это не проблемы функции МАКС(), а проблема её применения. Andre TM правильно определил причину, хотя и ошибся с волатильностью функции МАКС() Эта функция не является волатильной и пересчитывается только в том случае, когда изменяются данные в диапазоне её использования. Что и происходит при удалении данных из столбца В. А когда 60 тысяч раз пересчитывается даже самая быстрая функция - быстроты не будет
KUDRIN, если Вам нравятся экстремальные ситуации, то заполните каким нибудь значением несколько листов Excel целиком. Вам понравится 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 раз...
В то же время, предложенное решение данной проблемы - очищать диапазон от конца к началу - не вызывает пересчет вообще ни разу.
Цитата (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 раз...
В то же время, предложенное решение данной проблемы - очищать диапазон от конца к началу - не вызывает пересчет вообще ни разу.AndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Пятница, 07.06.2013, 00:19
KUDRIN, если Вам нравятся экстремальные ситуации, то заполните каким нибудь значением несколько листов Excel целиком. Вам понравится
к чему эти колкости? лучше бы подсказали четвертый способ нахождения уникальных значений формулой (либо не только уникальных, а с любыми условиями, которые можно задать формулой ЕСЛИ) для столбика например всего в 100 тысяч строк в приёмах. ведь работа на большом количестве строк с формулой A10=если(ххх;макс(A$1:A9)+1) или A10=если(ххх;счет(A$1:A9)+1) неудобна
Цитата (Serge_007)
KUDRIN, если Вам нравятся экстремальные ситуации, то заполните каким нибудь значением несколько листов Excel целиком. Вам понравится
к чему эти колкости? лучше бы подсказали четвертый способ нахождения уникальных значений формулой (либо не только уникальных, а с любыми условиями, которые можно задать формулой ЕСЛИ) для столбика например всего в 100 тысяч строк в приёмах. ведь работа на большом количестве строк с формулой A10=если(ххх;макс(A$1:A9)+1) или A10=если(ххх;счет(A$1:A9)+1) неудобнаKUDRIN
Сообщение отредактировал KUDRIN - Четверг, 27.06.2013, 09:33