Главная » Статьи » Excel » Формулы рабочего листа |
Хочу рассказать о своей небольшой находке, связанной с логическими формулами. Безусловно, если начать искать, то окажется, что я буду далеко не первым, кто так делает, поэтому ни о каком авторстве тут, конечно, речи идти не может. Часто в свои файлы Excel приходится вживлять множество формул, которые могут принимать 2 значения, противоположных друг другу. Например, мне часто требуется иметь набор ячеек для столбцов/строк, которые бы хранили статус их (строк/столбцов) видимости. Скажем, если A5 (люблю под это выделять первый столбец) содержит 1, то строка 5:5 должна быть видна и, если VBA программа обнаружит, что строка скрыта, то она сделает её видимой, и - наоборот. Для таких вещей в Excel есть логический (булевый) тип, который состоит из двух констант: ИСТИНА (TRUE) и ЛОЖЬ (FALSE). Существуют также логические выражения, которые возвращают логический тип, как результат своего вычисления. Возвращаясь к примеру про видимость строки 5:5, в A5 могла бы находиться такая формула: = D5 <> ""при этом, если D5 не пуста, то она вернёт значение ИСТИНА, в противном случае ЛОЖЬ. Можно было бы так и оставить, но уж больно эти константы занимают много места на экране, поэтому лично мне с эстетической точки зрения больше нравится в подобных ячейках иметь значения 1 или 0. Традиционно этого добиваются так: = ЕСЛИ( D5 <> "" ; 1 ; 0 )Однако, мне в последнее время нравится такой способ: = ( D5 <> "" ) + 0Данный метод имеет более лаконичную форму и, полагаю, чуть быстрее вычисляется. Обратите внимание, что скобки тут необходимы, в противном случае порядок вычислений будет нарушен. Excel в начале вычисляет логическое выражение в скобках, а затем вынуждено его преобразовать в число, так как завершающая операция - операция сложения. Как известно значение ИСТИНА преобразуется в 1, а ЛОЖЬ - в 0, поэтому прибавление нуля тут ничего изменить не может (впрочем как и умножение на 1, возведение в степень 1, вычитание 0, деление на 1). Кстати, то обстоятельство, что у меня в A5 теперь числа (0 или 1), а не логические константы (ЛОЖЬ или ИСТИНА), никак не повлияет на возможность использования ячейки A5 в логических операторах. Точно так же будут отлично работать такие формулы: = ЕСЛИ( A5 ; "Видима" ; "Скрыта" )или = И( A5 ; A1 > 0 )Это происходит, так как 1 преобразуется в ИСТИНА, а 0 - в ЛОЖЬ. На самом деле в ИСТИНА будет преобразовано ЛЮБОЕ ЧИСЛОВОЕ значение, отличное от нуля. Любое! Кстати последнюю формулу так же очень удобно переводить в числовую форму: = И( A5 ; A1 > 0 ) + 0и дополнительных скобок уже не потребуется, достаточно тех, что уже есть у оператора И (AND). Вот такая небольшая хитрость :) Читайте также: | |
Просмотров: 18631 | Комментарии: 7 | | |
Всего комментариев: 7 | ||||||||
| ||||||||