Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Оптимизация расчетов

Автор Dsor, 15.08.2011, 14:46

« назад - далее »

Dsor

В процессе нагромождения формулами очередной книги, появилась мысль как увеличить скорость расчетов. Во всех формулах которые предполагают проверки массива данных в например =ЕСЛИ(ЕЧИСЛО(A5);ЕСЛИ(СЧЁТЕСЛИ('Первая проверка'!$E$10:$E$11;$Q$5:$Q$10000);"v";"err");"") в ссылках  ($E$11;$Q$5:$Q$10000) заменить каким-нибудь образом 10000 на ссылку в другую ячейку, где просто посчитать число ячеек имеющих значения СЧЁТ(A5:A10000). Таким образом получить на выходе $E$11;$Q$5:$Q$53 например. Если кто знает, подскажите есть ли способ и возможно ли это вообще реализовать ?

Serge 007

Цитата: Dsor от 15.08.2011, 14:46
Если кто знает, подскажите есть ли способ и возможно ли это вообще реализовать ?
Есть. Причём Вы его собственно почти и предложили.
Вашу СЧЁТ(A5:A10000) принимаем как аргумент Высота функции СМЕЩ, т.е. так:
=СМЕЩ($А$5;;;СЧЁТ($A$5:$A$10000))
Эту формулу в именованный диапазон, а сам диапазон - в ту формулу, которую необходимо оптимизировать.

Вот только станет ли считать она быстрее - большой вопрос...
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Dsor

Большое спасибо, мне кажется толк все же есть, если в отдельной ячейке С3 посчитать СЧЁТ(A5:A10000), а уже в самой формуле только ссылаться на нее например так VLOOKUP3($Q$5:СМЕЩ($Q$5:$R$5;;;C3);1;'Вторая проверка'!$D$14;AG5;2) :)

Serge 007

INDIRECT и OFFSET - "летучие", т.е. пересчитываемые функции.
Они пересчитываются при ЛЮБОМ изменении на листе.
Вот и подумайте - будет ли это быстрее ;)
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Dsor

Если кому будет интересно, переведя все имеющиеся формулы вышеописанным способом мне удалось существенно сократить время их пересчета. :)

kimtan

Оптимальнее будет заменить конструкцию:
VLOOKUP3($Q$5:СМЕЩ($Q$5:$R$5;;;C3);1;'Вторая проверка'!$D$14;AG5;2)
На:
VLOOKUP3($Q$5:ИНДЕКС($R$5:$R$10000;C3);1;'Вторая проверка'!$D$14;AG5;2)
а в ячейку C3 формулу:
=ПОИСКПОЗ(9E+307;A5:A10000)
Так же можно заменить конструкцию:
СЧЁТЕСЛИ(диапазон;диапазон)
На:
ПОИСКПОЗ(диапазон;диапазон;) - она быстрее...

Webmoney: E350157549801 Z116603216205 R268084006579