Как сравнить ячейку с числом с ячейкой в которой указано условие.

Автор Константин60, 6 марта 2014, 01:22

0 Пользователи и 1 гость просматривают эту тему.

Константин60

Доброго времени суток.
В таблице есть 2 ячейки с условием: >=3 и >5. С этими условиями нужно сравнивать ячейку с численным значением. Условия в ячейках и число могут меняться, поэтому в формулу это условие забить нельзя.
Подскажите начинающему пользователю, поиск на форуме не дал результата.

CyberDaemon

Цитата: Константин60 от  6 марта 2014, 01:22
Доброго времени суток.
В таблице есть 2 ячейки с условием: >=3 и >5. С этими условиями нужно сравнивать ячейку с численным значением. Условия в ячейках и число могут меняться, поэтому в формулу это условие забить нельзя.
Подскажите начинающему пользователю, поиск на форуме не дал результата.
А покажите как это выглядит в таблице, эти 2 ячейки с условием.

Константин60


VlhOwn

Насколько я понимаю, в столбце  "Количество бракованных деталей" Вам бы вполне подошли просто числа, но реально два условия ">" и ">=", которые все портят и которые нужно как-то отображать.
Предлагаю поступить следующим образом:
- если мы имеем условие "строго больше", то число положительное
- если "больше или равно", то число отрицательное
А чтобы они "нормально" отображались, то в формате ячеек задаем следующий: >#;>=#;#
Тогда положительные числа будут отображаться как ">5", а отрицательные - ">=3", но при этом это уже будут числа, а не строки, из которых нужно "выуживать" числа, и, стало быть, их можно использовать в формулах. При этом знак числа несет информацию о том, какое из условий применено.

UPD:
Числа, конечно, можно "выудить", например так (исходная строка - в ячейке A1)
отсекаем знак ">": =RIGHT(A1;LEN(A1)-1) - помещаем в ячейку B1
отсекаем, если есть, знак равенства: =IF(LEFT(B1;1)="=";VALUE(RIGHT(B1;LEN(B1)-1));VALUE(B1))
Можно объединить обе формулы в одну, но уж больно громоздко получается.
Но этого все равно не достаточно - мы теряем информацию об условии. Значит опять нужно придумывать какое-то кодирование, которое будет содержать в себе информацию и о числе, и об условии. Ну, например, >5 кодируем как 50, а >=5 - как 51, т.е. >n - n*10, а >=n - n*10+1. Но это ничем не лучше положительных и отрицательных чисел.

UPD2:
Все много проще, извините, что морочил голову.
Для Вашего скриншота:
=COUNTIF(B3:B3;C3) - даст 0, если условие не выполняется, и 1 - если выполняется.

JohnSUN

Хорошее решение, добротное. Только мне кажется, что положительные/отрицательные значения для разных условий могут запутать пользователя
Я бы ограничился просто функцией SUMIF()
=SUMIF(B3;C3;B3) - число
или
=(SUMIF(B3;C3;B3)>0) - ИСТИНА или ЛОЖЬ
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

VlhOwn

Влад, я вопрос неправильно прочитал, пригрезилось, что TS нужны сами значения. UPD2 - правильное решение.

Там, кстати, вообще все просто, если вдуматься - все условия легко приводятся к одному виду: ">n" <==> ">=n+1", и вообще никаких заморочек.

celler

Константин60, на мой взгляд у Вас принципиально неверный подход к составлению таблицы. Не нужно там никаких формул. Такие формулы это потенциальный источник грубейших ошибок, которые могут даже оказаться незамеченными. Так, мне почему-то думается, что Вы уже допустили ошибку в Ваших формулах. Первая формула должна быть двойная >=3 и <=5, не так ли? А иначе у Вас при 6-и бракованных деталях штраф может оказаться 30 процентов - десять за то что больше 3-х и двадцать за то, что больше 5-и. Лучше задавать границы диапазонов без всяких формул.

Hasim

Там вообще всё в таблице неправильно.
Столбец С вообще лишний.
Бракованных деталей всего 2 из 28, а штраф какой? 10%? Но это если брака >=3 деталей.
И что, штраф один и тот же за 3 бракованные детали из 28 и за 3 бракованные детали из 128 изготовленных?
Глупость какая-то.

Константин60

Столбец С был дан в задании. И 10% штраф налагается при 3-х, 4-х и 5-ти деталях, свыше 5-ти - 20%. Я надеялся, что есть простой способ с использованием этих условий, взятых из ячеек, а не забитых в формулы. И возможность менять условия, не лазя в формулы.

VlhOwn



Hasim

Цитата: Константин60 от  6 марта 2014, 22:14Столбец С был дан в задании.
О том и речь, что само задание глупое.

Изготовили 4 детали, из них 3 бракованных - штраф 10%
Изготовили 4000 детали, из них 3 бракованных - штраф те же самые 10%
Изготовили 4000000 детали, из них 3 бракованных - штраф те же самые 10%

Ну не глупость?

Hasim

Если отвлечься от самого задания, то возникает серьезная задача.

В самой функции =IF(7>=5;10;5) условие записано в виде строки 7>=5, но если эту строку-условие записать в отдельной ячейке В5, например, то подставить эту отдельно выписанную строку в функцию не получится, то есть, например, запись  =IF(В5;10;5) вызовет ошибку.

Задача: как подставить в функцию отдельно сформированную строку-условие?