Страницы: 1
RSS
В продолжение темы про формулы массива работающие поячеячно и не работающие поячеячно
 
Здравствуйте, всем доброго дня.
Начало темы здесь
Короткая предыстория, где год назад потребовалось формула которая присваивает уникальные номера, и повторяет эти номера в случае повторения этих данных.
Решение было найдено как формулами, так и UDF.
Пользовался формулами, но пришло время заменить формулы на UDF, правда требовалась некоторая доработка существующей UDF. Обратился к автору UDF HUGO, он изменил UDF, под новые условия. В итоге полученная UDF выполняла поставленную задачу, но она стала массивной. Причем именно массивной с обязательным вводом UDF в весь диапазон. Однако предыдущая формула, то же была массивной, но она могла работать без ввода её в диапазон, а путем протягивания. Пример можно посмотреть в приложении.
Мне было изначально непонятно почему одна формула массива должна вводиться в весь диапазон, а другую  можно просто протянуть вниз. В итоге после долгих разъяснений HUGO (за что ему спасибо), стало понятно что формула массива введенная в весь массив обрабатывает все ячейки как одни массив данных, а формула массива которую протягиваем, обрабатывает ячейки поячеячно, не как массив данных. Поэтому есть разница в скорости работы формул.
Вот прошу пояснить правильно ли я понял разницу в работе формул массива которые можно протягивать и которые обязательно вводить в весь массив данных.  
 
Я бы сказал так - "поячеечная" формула может обрабатывать данные как один массив (или как несколько массивов), но выводит результат в одну ячейку.
Соответственно она (они) срабатывает столько раз, сколько этих формул пересчитывается.
Массивная UDF с обязательным вводом в весь диапазон обрабатывает тоже такие же массивы, но выводит результат как массив данных и сразу во все ячейки, куда она введена.
И срабатывает только один раз.
 
Цитата
Массивная UDF с обязательным вводом в весь диапазон обрабатывает тоже такие же массивы, но выводит результат как массив данных и сразу во все ячейки, куда она введена.
И срабатывает только один раз.
Игорь, формулы массива делают тоже самое ;)
 
Это если вводить сразу в диапазон из нескольких ячеек.
А если ввести в одну и затем протянуть  - это останется одна формула, или их будет много? Я думаю что много, и у каждой свои аргументы.
 
Цитата
Я думаю что много
Верно, но я отвечал на твое:
Цитата
Массивная UDF с обязательным вводом в весь диапазон обрабатывает тоже такие же массивы, но выводит результат как массив данных и сразу во все ячейки, куда она введена
Собственно, все-равно, UDF это или формула, если вводятся сразу в диапазон ячеек
 
Всем всех благ!
Изменено: Алексей Сидоркин - 22.01.2014 11:48:00
 
Правдиво одно: выводится результат в формуле массива один раз для формулы, введенной в диапазон ячеек. Но вот вычисления происходят для каждой отдельной ячейки. Т.е. экономим по факту только на выводе результата махом и вызове формулы. Что иногда может увеличить общую скорость вычисления формул на листе.
Пример: есть много формул, все завязаны друг на друга. Если вводить формулы массива поячеечно - то при вычислении они будут менять значения ячеек, что может повлечь пересчет летучих функций(некий цикл). И вычисления эти будут повторяться столько раз, сколько формул массива. Если же ввести формулу массива одну на диапазон - то и пересчет всяких там летучих функций будет только один раз.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, для ясности - UDF, которая по ссылке в начале темы, как результат выводит один массив значений, и не отрабатывает по разу на ячейку - она за один проход по исходным данным (ну или какой там алгоритм) подготавливает один массив данных, который и выгружает в этот свой диапазон.
Страницы: 1
Наверх