Страницы: 1
RSS
Поиск первого отрицательного значения
 
Здравствуйте. Есть таблица с данными, первая строка каждого столбца - дата, даты идут в возрастающем порядке, остальные строчки содержат числовые данные как положительные, так и отрицательные.  
Вопрос: Подскажите, пожалуйста, возможно ли написать формулу для каждой строки с помощью, которой можно определить дату первого отрицательного значения просматривая диапазон начиная с текущей даты и до конца таблицы.
 
Судя по Вашему примеру, вопрос сформулирован неправильно. Нужно найти первое максимальное отрицательное значение. Так?  
 
=ИНДЕКС($B$2:$R$2;ПОИСКПОЗ(МАКС(ЕСЛИ(B3:R3<0;$B3:$R3));B3:R3;0))
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Для А3, ф-ла массива, копируется вниз.  
 
=ИНДЕКС($B$2:$R$2;ПОИСКПОЗ(1;($B$2:$R$2>=СЕГОДНЯ())*(B3:R3<0);))
 
Можно без массива, если не будет нулей:  
=ИНДЕКС($B$2:$R$2;ПОИСКПОЗ(;$B3:$R3;-1)+1)
 
"начиная с текущей даты" :)
 
Тады ой, Казанский уже сделал :)  
Чего-то я опаздываю в последнее время...
 
Если без нулей, то не массивный гибрид kim'а и Казанского (вернее, их формул) :)  
=ИНДЕКС(B$2:R$2;ПОИСКПОЗ(;ИНДЕКС(B3:R3;ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2;0)):R3;-1)+ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2;0))
 
Всем, большое спасибо за помощь, правда, вчера ADSL-модем - гад, не дал прочитать ответы, но сегодня мне эта информация еще нужнее. Особенно порадовало количество ответов, проанализировав все формулы, я не просто получил ответ на конкретный вопрос, я получил знания необходимые для написание подобных формул в будущем самостоятельно. Всем респект)
 
{quote}{login=vikttur}{date=11.08.2010 02:03}{thema=}{post}Если без нулей, то не массивный гибрид kim'а и Казанского (вернее, их формул) :)  
=ИНДЕКС(B$2:R$2;ПОИСКПОЗ(;ИНДЕКС(B3:R3;ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2;0)):R3;-1)+ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2;0)){/post}{/quote}  
Если я все правильно усвоил, то победить нули можно так  
=ИНДЕКС(B$2:R$2;ПОИСКПОЗ(-0,001;ИНДЕКС(B3:R3;ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2;0)):R3;-1)+ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2;0))  
Верно, или я что-то упустил?
 
Нуль - да, но если пустая?
 
Про пустые не подумал, их в нужном мне файле нету, но все же может измениться. Что получается, написать "немассивную" формулу для таблицы содержащую пустые ячейки нереально?
 
Используйте доп. столбец.
 
{quote}{login=vikttur}{date=11.08.2010 02:54}{thema=}{post}Используйте доп. столбец.{/post}{/quote}  
Все ясно. Спасибо)
 
Ну почему нельзя? Можно. Вопрос только - зачем?  
 
=ИНДЕКС($2:$2;НАИБОЛЬШИЙ(ИНДЕКС((СМЕЩ(A3;;ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2)):R3<0)*СТОЛБЕЦ(СМЕЩ(A3;;ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2)):R3););СЧЕТЕСЛИ(СМЕЩ(A3;;ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2)):R3;"<0")))
KL
 
Не, слегка покороче :-)  
 
=ИНДЕКС($A$2:$R$2;НАИБОЛЬШИЙ(ИНДЕКС(СТОЛБЕЦ($B$2:$R$2)*($B3:$R3<0););СЧЁТЕСЛИ(СМЕЩ(A3;;ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2)):R3;"<0")))
KL
 
KL и летучие формулы - совместимо? :)
 
Мда, мне тоже это показалось странным :) - ИНДЕКС() же работает  
=ИНДЕКС($A$2:$R$2;НАИБОЛЬШИЙ(ИНДЕКС(СТОЛБЕЦ($B$2:$R$2)*($B3:$R3<0););СЧЁТЕСЛИ(ИНДЕКС($B3:$R3;;ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2)):R3;"<0")))
 
Если уж без "летучек"..  
 
=ИНДЕКС(B$2:R$2;;ПОИСКПОЗ(0=0;ИНДЕКС(ИНДЕКС($B3:$R3;;ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2)):R3<0;);)-1+ПОИСКПОЗ(СЕГОДНЯ();B$2:R$2;))
 
Без летучих не выйдет все равно: есть  СЕГОДНЯ(), и, имхо, дальше без разницы,  формула хоть так, хоть так - пересчитывается
 
А ну да, за СЕГОДНЯ() забыл :)
 
Можно, наверно, СЕГОДНЯ() вывести в отдельную ячейку, и далее ссылаться на неё...  
 
ЗЫ. Кто-то сгодня уже говорил -по две пары так и прёт ;))    
95759
 
Все равно, интересно, если по скорости сравнить...  
Вроде СМЕЩ() хоть и летучая, но шустрая.  
Надо у Кирилла поинтересоваться.
 
Михаил попал в самую точку - искать нелетучий вариант не имело смысла из-за СЕГОДНЯ(). Выносить ее в другую ячейку бесполезно, т.к. формулы с летучими precedents по определению летучи :-) Я употребил СМЕЩ() потому, что в русском варианте она короче :-)    
Насколько мне известно, функции СМЕЩ() и ИНДЕКС() считатают с приблизительно одинаковой скоростью. Просто с такими малыми величинами любая помеха сильно влияет на процентное соотношение, т.ч. я предпочитаю делать промеры для 500 ячеек с формулами раз по 5 для каждого варианта и выводить среднее.
KL
Страницы: 1
Читают тему
Наверх