Страницы: 1
RSS
Скорость расчета ячеек
 
Здравствуйте.  
Часто использую такого вида формулу:  
В ячейках А2:А3000:  
=ЕСЛИ(ЕОШИБКА(ВПР(что-нибудь ищу)=ИСТИНА;0;ВПР(ищу тоже самое))  
Использую для того, чтобы избавиться от #Н/Д. Т.к. на другом листе применяю формулу массива СУММ по этому столбцу, а если в ячейке #Н/Д, то формула выводит ошибку. При 0 считает верно.  
 
Насколько знаю, ВПР одна из самых медленных функций. Получается, что я лишний раз вэпээрю.    
Один из выходов, как я вижу, использовать дополнительный столбец.  
В столбце А – ВПР  
В столбце В - =ЕСЛИ(ЕОШИБКА(А2)=ИСТИНА;0;А2)  
 
Возник вопрос. А в смысле скорости, не тоже ли самое получится?  
И вообще, как в такой ситуации урезать лишние ВПР?  
 
P.S.  
Мог бы сам ручками проверить и посмотреть скорость, но файл здоровенный. Менять формулы в столбцах буду часа два.  
А уменьшить скорость вычисления очень хочется. :)
 
так может тогда просто применить другой способ, если ВПР тормозит производтственный процесс?    
мы тут как-то путем шурмового мозга... нет, скорее мозгового штурма :-)  
собрали в кучу несколько разных методов.  
попробуйте, может будет быстрее какой работать?  
файл прилагаю
 
по моим расчетам разница времени расчета - 1.5%
 
mazayZR, спасибо!  
Интересно сравнить методы. Сейчас буду разбираться. (Улыбнуло – я тоже в одном из столбце ищу ТФОМС. :) )  
 
To Слэн:  
На 1,5%?  
Эх жаль! Вот как чувствовал, что моё предложение мало что изменит. :) Спасибо.
 
или даже меньше, но насчет точности моей модели я не поручусь.  
 
попробовать бы на реальных данных.
 
Если я правильно понял, когда читал один умный книжка, лучше загнать несколько формул в 1 более ацкую, чем плодить их по ячейкам. Расчет идет быстрее.    
А еще, результатом выполнения функции ЕОШИБКА(А2) будет ИСТИНА или ЛОЖЬ.  
Тогда, наверное проверять ее в ЕСЛИ еще раз чему она равна и потом уходить на ветвление просто нет смысла.  
А при больших массивах данных и слабых машинах видеть сороку расчет ячеек бла-бла% нормальное явление.
 
{quote}{login=Igor67}{date=20.06.2008 06:47}{thema=}{post}Если я правильно понял, когда читал один умный книжка, лучше загнать несколько формул в 1 более ацкую, чем плодить их по ячейкам. Расчет идет быстрее.    
А еще, результатом выполнения функции ЕОШИБКА(А2) будет ИСТИНА или ЛОЖЬ.  
Тогда, наверное проверять ее в ЕСЛИ еще раз чему она равна и потом уходить на ветвление просто нет смысла.  
А при больших массивах данных и слабых машинах видеть сороку расчет ячеек бла-бла% нормальное явление.{/post}{/quote}  
 
Игорь, а как избавиться от #Н/Д? Формула массива СУММ, тогда не работает.  
Попробовал НЕ(ЕОШИБКА(ВПР(…..)))*ВПР(…..). Все равно #Н/Д выводит.
 
Вероятно у нас легкое недопонимание.    
Имел в виду при использовании данной функции в ЕСЛИ()  
Сама функция ЕСЛИ(логическое выражение; если истина;если ложь)  
Вот в логическом выражении можно использовать только проверку свойств и значений без дополнительного =ИСТИНА так, как результат проверки уже ИСТИНА или ЛОЖЬ.
 
Ааа.. Спасибо. Буду знать. :)  
Кстати, так же спасибо за разъяснение по поводу громоздких формул. Я их раньше дробил (чтобы ошибки искать было легче), а теперь соединять буду. Все-таки скорость важней в данном случае.
 
ИМХО лучшее при проверке применять ЕОШ() т.е. на любую ошибку, чем на конкретную.
 
Так и делаю. :)
 
{quote}{login=Igor67}{date=23.06.2008 12:28}{thema=}{post}ИМХО лучшее при проверке применять ЕОШ() т.е. на любую ошибку, чем на конкретную.{/post}{/quote}  
а если еще расширить тему ошибок, то тогда не ЕОШ надо использовать, поскольку оно проверяет все, кроме нет данных, а ЕОШИБКА
 
Согласен, промахнулся....    
Но там реально меньше печатать...
Страницы: 1
Читают тему
Наверх