Страницы: 1
RSS
Проверка ЕСЛИ больше, меньше или равно
 
У меня стоит задача:  
Если А1<=100, то определённое знасчение. Если А1>100, но <200,  то другое. И т.д. :(  
Помогите сформировать формулу, а проверяет их 10.
sprasolov@mail.ru
 
Файл с исходными данными можете выложить?
 
На днях ТУРБО-ЁЖ предлагал неплохую замену функции ЕСЛИ функцией ВЫБОР.  
Пробуйте или пример покажите.
 
{quote}{login=prasol}{date=24.12.2008 11:53}{thema=Проверка ЕСЛИ больше, меньше или равно}{post}У меня стоит задача:  
Если А1<=100, то определённое знасчение. Если А1>100, но <200,  то другое. И т.д. :(  
Помогите сформировать формулу, а проверяет их 10.{/post}{/quote}  
Проще сделать при помощи ВПР()  
Создается таблица условий:  
Значение Действие  
<100      10  
>100<200  20  
>200<300  30  
и т.д.  
Потм пишете Формулу F2*ВПР(Значение;ТаблУсловий;2;1!!!)  
И все получится
 
{quote}{login=КАДР}{date=24.12.2008 12:00}{thema=}{post}Файл с исходными данными можете выложить?{/post}{/quote}
sprasolov@mail.ru
 
{quote}{login=Микки}{date=24.12.2008 12:13}{thema=Re: Проверка ЕСЛИ больше, меньше или равно}{post}{quote}{login=prasol}{date=24.12.2008 11:53}{thema=Проверка ЕСЛИ больше, меньше или равно}{post}У меня стоит задача:  
Если А1<=100, то определённое знасчение. Если А1>100, но <200,  то другое. И т.д. :(  
Помогите сформировать формулу, а проверяет их 10.{/post}{/quote}  
Проще сделать при помощи ВПР()  
Создается таблица условий:  
Значение Действие  
<100      10  
>100<200  20  
>200<300  30  
и т.д.  
Потм пишете Формулу F2*ВПР(Значение;ТаблУсловий;2;1!!!)  
И все получится{/post}{/quote}  
 
Объясните тупому поподробнее, не смог понять :(
sprasolov@mail.ru
 
=ВЫБОР(10-(C2<100)-(C2<200)-(C2<300)-(C2<400)-(C2<500)-(C2<600)-(C2<700)-(C2<800)-(C2<900);"СОТНЯ";"ДВЕСТИ";300;400;500;600;700;800;900;1000)  
Лень было слова вписывать :)  
И подправьте, где нужно - куда относить, если =100, =200 и т.д.
 
решение во вложении
 
{quote}{login=vikttur}{date=24.12.2008 12:31}{thema=}{post}=ВЫБОР(10-(C2<100)-(C2<200)-(C2<300)-(C2<400)-(C2<500)-(C2<600)-(C2<700)-(C2<800)-(C2<900);"СОТНЯ";"ДВЕСТИ";300;400;500;600;700;800;900;1000)  
Лень было слова вписывать :)  
И подправьте, где нужно - куда относить, если =100, =200 и т.д.{/post}{/quote}  
 
Я ОБОЖАЮ ЭТОТ САЙТ!!!  
При помощи этой функции, получается, что можно объединить до 29 условий? o.O???
 
{quote}{login=vikttur}{date=24.12.2008 12:31}{thema=}{post}=ВЫБОР(10-(C2<100)-(C2<200)-(C2<300)-(C2<400)-(C2<500)-(C2<600)-(C2<700)-(C2<800)-(C2<900);"СОТНЯ";"ДВЕСТИ";300;400;500;600;700;800;900;1000)  
{/post}{/quote}  
vikttur, пожалуйста, на пальцах объясните чайнику, как считается индекс: 10-(C2<100)-(C2<200)-(C2<300)-(C2<400)-(C2<500)-(C2<600)-(C2<700)-(C2<800)-(C2<900).
 
Это не я догадался - ТУРБО_ЕЖ просветил :)  
Набор условий. При C2=333  не выполняются три условия: C2<100, C2<200, C2<300, остальные верны, т.е. каждый из верных - единица. 10-6 единичек = 4 аргумент-значение.  
Таким фокусом функцией ВЫБОР можно задать до 28 условий. Почувствуйте разницу с ЕСЛИ!
 
Спасибо!  
Во встроенной справке ничего нет, про возможность задания таких условий :-/
 
У нас есть справка получше Мелкомягких - форум!  
"Нетрадиционное применение" СУММПРОИЗВ, СТРОКА, МУМНОЖ, редкое применение "--"...
 
Нелюбителям традиций:  
 
=ЕСЛИ(C2>0;ПРОСМОТР(2;1/(C2>({0;1;2;3;4;5;6;7;8;9}*100));{"до100";"до200";"до300";"до400";"до500";"до600";"до700";"до800";"до900";"до1000"});"Ноль")  
 
Градация, как и требовалось в условии: до 100 включительно, больше 100 и до 200 включительно, и т.д.  Количество условий в такой формуле может быть более 30.  
 
-------  
Немного о нетрадиционности функции, часто вызываюшей вопросы:  
=ПРОСМОТР(БольшоеЧисло;просматриваемый_вектор;вектор_результатов)  
Используется свойство бинарного поиска для большИх чисел (заведомо бОльших любого элемента массива), при котором находится последнее числовое значение просматриваемого массива (вектора), с игнорированием элементов с ошибками.  
 
Просматриваемый массив для С2=150 выглядит так:  
1/{ИСТИНА;ИСТИНА;ЛОЖЬ;...;ЛОЖЬ}  
Учитывая что для Excel ИСТИНА=1, а  ЛОЖЬ=0 получаем массив:  
1;1;#ДЕЛ/0!;#ДЕЛ/0!;#ДЕЛ/0!;...;#ДЕЛ/0!  
 
Элементы #ДЕЛ/0! игнорируются бинарным поиском.  
Число 2 по сравнению с любым элементом массива является большИм числом, поэтому результатом функции ПРОСМОТР() является последний (2-й) неошибочный элемент.  
 
Кстати, для обработки строк можно использовать так называемые большие строки (255 символов "z"): ПОВТОР("z";255)
 
Практически то же, но традиционно:  
=ЕСЛИ(C2>0;ГПР(C2-0.000000000001;{0;100;200;300;400;500;600;700;800;900:"до100";"до200";"до300";"до400";"до500";"до600";"до700";"до800";"до900";"до1000"};2);"Ноль")  
 
Так же может быть более 30 условий
 
ПРОСМОТР - ++! В копилку :)  
В ГПР в искомом значении можно убрать отнимаемое число, тогда при равенстве сотням будет работать корректнее (700 - до 800).  
Естественное ограничение формулы - нельзя вводить числа,которые больше максимального в массиве (вернее, можно, но будет ошибка).
 
Наверное, не полностью проснулся :)  
Никакого естественного ограничения, "просто добавь воды" - дополнительное условие:  
=ЕСЛИ(C2>0;ГПР(C2;{0;100;200;300;400;500;600;700;800;900;1000:"до100";"до200";"до300";"до400";"до500";"до600";"до700";"до800";"до900";"до1000";">1000"};2);"Ноль")
 
{quote}{login=ZVI}{date=26.12.2008 05:40}{thema=}{post}Нелюбителям традиций:  
 
=ЕСЛИ(C2>0;ПРОСМОТР(2;1/(C2>({0;1;2;3;4;5;6;7;8;9}*100));{"до100";"до200";"до300";"до400";"до500";"до600";"до700";"до800";"до900";"до1000"});"Ноль")  
 
Градация, как и требовалось в условии: до 100 включительно, больше 100 и до 200 включительно, и т.д.  Количество условий в такой формуле может быть более 30.  
 
-------  
Немного о нетрадиционности функции, часто вызываюшей вопросы:  
=ПРОСМОТР(БольшоеЧисло;просматриваемый_вектор;вектор_результатов)  
Используется свойство бинарного поиска для большИх чисел (заведомо бОльших любого элемента массива), при котором находится последнее числовое значение просматриваемого массива (вектора), с игнорированием элементов с ошибками.  
 
Просматриваемый массив для С2=150 выглядит так:  
1/{ИСТИНА;ИСТИНА;ЛОЖЬ;...;ЛОЖЬ}  
Учитывая что для Excel ИСТИНА=1, а  ЛОЖЬ=0 получаем массив:  
1;1;#ДЕЛ/0!;#ДЕЛ/0!;#ДЕЛ/0!;...;#ДЕЛ/0!  
 
Элементы #ДЕЛ/0! игнорируются бинарным поиском.  
Число 2 по сравнению с любым элементом массива является большИм числом, поэтому результатом функции ПРОСМОТР() является последний (2-й) неошибочный элемент.  
 
Кстати, для обработки строк можно использовать так называемые большие строки (255 символов "z"): ПОВТОР("z";255){/post}{/quote}  
 
 
Как хорошо, что есть этот сайт, и как плохо, что нам про это не говорили в универе!  
Спасибо Вам, ZVI!
Страницы: 1
Наверх