Страницы: 1
RSS
Разницу между соседними числами учесть в формуле
 
Добрый день всем обитателям Планеты!!!  
Подскажите пожалуйста, никак не додумаюсь: есть ряд чисел, как вывести в ячейке цифру 2, если разница между некоторыми соседними числами меньше 2-х, в противном случае цифру 1.  
Желательно без доп.ячеек.  
Пример прикрепил.
 
Формула массива:  
=(МИН(C3:I3-B3:H3)<2)+1
 
Спасибо, но не подойдёт, т.к. числа могут быть и дробные и отрицательные.  
Надо что-то типа    
=ЕСЛИ(ABS(C3:I3-B3:H3)<2;2;1)  
но так не работает.
 
Строка заполняется слева направо и последние ячейки могут быть пустыми.
 
Конкретнее. "2" и "-5":  
Разница между ними 2-(-5)=7, зачем модуль числа?  
В правилах математики есть разница между разностью дробных или целых чисел?
 
{quote}{login=vikttur}{date=14.04.2011 10:36}{thema=}{post}Конкретнее. "2" и "-5":  
Разница между ними 2-(-5)=7, зачем модуль числа?  
В правилах математики есть разница между разностью дробных или целых чисел?{/post}{/quote}  
Извините, получилась тавтология со словами "разница" и "разность".
 
А если -2 и -5, то разница уже 3 или -3.  
Я придумал на основе Вашей идеи, Виктор, вот так массивом. Вроде работает.  
=ЕСЛИ(МИН(ABS(C4:СМЕЩ(C4;0;СЧЁТЗ(C4:I4)-1;1;1)-B4:СМЕЩ(B4;0;СЧЁТЗ(B4:H4)-2;1;1)))<2;2;1)  
Можно проще?
 
Формула массива  
=ИЛИ((ABS(C3:I3-B3:H3))<2)+1
 
на базе формулы Виктора (массив):  
=(МИН(ABS(C4:I4-B4:H4))<2)+1
 
Vlad, судя по таблице, числа расположены в возрастающем порядке, поэтому x-y при x>y покажет правильный результат.  
Или все-таки что-то скрываете?  
И что с вопросом о дробных числах? неужели они не подчиняются логике x-y?
 
Спасибо большое!  
Работает.    
Не сообразил, что массивом возвращается не массив разностей чисел, а массив ИСТИНА, ЛОЖЬ после сравнения с 2-кой. И к ним прибавляется 1.  
Виктор, числа могут быть в произвольном порядке, но с помощью ABS это не важно.  
 
Позвольте ещё спросить - как вместо 2-ки вывести текст, например А, при выполнении условия (смежные числа по модулю отличаются менее, чем на 2)  
и текст Б в противном случае?  
 
Ведь к ИСТИНЕ и ЛОЖЬ их не прибавить.
 
На базе формулы МСН  :)  
=ЕСЛИ(ИЛИ(ABS(C3:I3-B3:H3)<2);"А";"Б")
 
{quote}{login=vikttur}{date=14.04.2011 11:11}{thema=}{post}На базе формулы МСН{/post}{/quote}  
Мне с ИЛИ больше нравится. МАКС пересчитает весь диапазон, ИЛИ остановится на найденном. Или я не прав?
 
По моему, одинаково.    
По количеству шагов вычислений формулы совпадают.  
В обоих случаях создаются массивы и целиком подвергаются функциям ИЛИ и МИН.  
Спасибо большое за помощь!
 
Караул!  
Не совсем так, как надо работают формулы.  
Если в ряду есть две пустые ячейки подряд, они считаются за нули и разница меж ними <2.  
 
Как это обойти?  
 
У меня пустые ячейки будут только подряд в конце ряда справа.  
 
Вот пример.
 
Нужные диапазоны можно найти через ИНДЕКС:  
=ЕСЛИ(ИЛИ(ABS(C4:ИНДЕКС(B4:I4;СЧЁТ(B4:I4))-B4:ИНДЕКС(B4:I4;СЧЁТ(B4:I4)-1))<2);2;1)
 
=ИЛИ((ABS(C4:ИНДЕКС(C4:I4;ПОИСКПОЗ(E9+307;C4:I4;1))-B4:ИНДЕКС(B4:H4;ПОИСКПОЗ(E9+307;B4:I4;1)-1))<2))+1
 
Спасибо!  
Так я и предполагал в одном из предыдущих постов, только через СМЕЩ.  
Через ИНДЕКС то, конечно, покороче будет.
 
через СМЕЩ как раз чуть короче можно, но не желательно:  
=ЕСЛИ(ИЛИ(ABS(СМЕЩ(C4;;;;СЧЁТ(B4:I4)-1)-СМЕЩ(B4;;;;СЧЁТ(B4:I4)-1))<2);2;1)
 
Позвольте уточнить, когда считаем СМЕЩ от B4, надо отнимать 2, а не 1  
 
СМЕЩ(B4;;;;СЧЁТ(B4:I4)-2)  
 
так как диапазон от В4 должен захватывать на 1 ячейку меньше, чем от С4, чтобы у них была одинаковая размерность.  
 
А почему через СМЕЩ нежелательно?
 
{quote}{login=Vlad}{date=14.04.2011 12:14}{thema=}{post}Позвольте уточнить, когда считаем СМЕЩ от B4, надо отнимать 2, а не 1  
СМЕЩ(B4;;;;СЧЁТ(B4:I4)-2)  
так как диапазон от В4 должен захватывать на 1 ячейку меньше, чем от С4, чтобы у них была одинаковая размерность.  
А почему через СМЕЩ нежелательно?{/post}{/quote}  
Вичитать нужно как раз 1, а не 2 при этом размеры диапазона будут одинаковыми.  
СМЕЩ не желательна, т.к. она является, так называемой, "летучей" функцией, пересчитывается при любом изменении на листе. Когда формул мало то это не заметно, но если данных много, то постоянный пересчет формул может сильно тормозить работу Excel
 
Без определения диапазона (формула массива):  
=ИЛИ(ЕСЛИ(C4:I4;ABS(C4:I4-B4:H4)<2);)+1
Страницы: 1
Читают тему
Наверх