Операторы вычислений и их приоритеты в Excel
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel для iPad Excel Web App Excel для iPhone Excel для планшетов с Android Excel 2010 Excel 2007 Excel для Mac 2011 Excel для телефонов с Android Excel для Windows Phone 10 Excel Mobile Еще. Меньше
Операторы указывают тип вычисления, который требуется выполнить с элементами формулы, такими как сложения, вычитания, умножения или деления. В этой статье вы узнаете порядок по умолчанию, в котором операторы работают с элементами в вычислении. Вы также узнаете, как изменить этот порядок с помощью скобок.
Типы операторов
Приложение Microsoft Excel поддерживает четыре типа операторов: арифметические, текстовые, операторы сравнения и операторы ссылок.
Арифметические операторы
Для выполнения основных математических операций, таких как сложения, вычитания или умножения или объединения чисел, и получения числовых результатов, используйте арифметические операторы в этой таблице.
Арифметический оператор
Возведение в степень
Операторы сравнения
С помощью операторов в таблице ниже можно сравнить два значения. При сравнении двух значений с помощью этих операторов результатом является логическое значение TRUE или FALSE.
Оператор сравнения
>= (знак «больше или равно»)
Больше или равно
Меньше или равно
Текстовый оператор конкатенации
Используйте амперсанд (&) для объединения или объединения одной или нескольких текстовых строк для создания одного фрагмента текста.
Текстовый оператор
Соединяет или сцепляет два значения для получения одного непрерывного текстового значения.
Операторы ссылок
Объедините диапазоны ячеек для вычислений с этими операторами.
Оператор ссылки
Оператор диапазона, который образует одну ссылку на все ячейки, находящиеся между первой и последней ячейками диапазона, включая эти ячейки.
Оператор Union, объединяющий несколько ссылок в одну ссылку.
Оператор пересечения, который создает ссылку на ячейки, общие для двух ссылок.
Символ #используется в нескольких контекстах:
- Используется как часть имени ошибки.
- Используется, чтобы указать недостаточно места для отрисовки. В большинстве случаев столбец можно расширить до тех пор, пока содержимое не отобразится должным образом.
- Оператор пролитого диапазона, который используется для ссылки на весь диапазон в формуле динамического массива.
Оператор ссылки, который используется для определения неявного пересечения в формуле.
Порядок выполнения действий в формулах Excel
В некоторых случаях порядок выполнения вычисления может повлиять на возвращаемое значение формулы, поэтому важно понимать порядок и способ изменения порядка для получения ожидаемых результатов.
Порядок вычислений
Формулы вычисляют значения в определенном порядке. Формула в Excel всегда начинается со знака равенства (=). Знак равенства сообщает Excel, что следующие символы составляют формулу. После этого знака равенства можно вычислить ряд элементов (операндов), разделенных операторами вычислений. Excel вычисляет формулу слева направо в соответствии с определенным порядком для каждого оператора в формуле.
Приоритет операторов
Если в одной формуле используется несколько операторов, Microsoft Excel выполняет операции в порядке, указанном в приведенной ниже таблице. Если формула содержит операторы с одинаковым приоритетом — например, операторы деления и умножения, — они выполняются слева направо.
Возведение в степень
Умножение и деление
Сложение и вычитание
Объединение двух текстовых строк в одну
Использование круглых скобок
Чтобы изменить порядок вычисления формулы, заключите ее часть, которая должна быть выполнена первой, в скобки. Например, приведенная ниже формула возвращает значение 11, так как Excel вычисляет умножение перед добавлением. Формула сначала умножает 2 на 3, а затем добавляет 5 к результату.
Напротив, если для изменения синтаксиса используются круглые скобки, Excel 5 и 2, а затем умножает результат на 3, чтобы получить 21.
В приведенном ниже примере скобки, включаемые в первую часть формулы, принудит Excel сначала вычислить B4+25, а затем разделить результат на сумму значений в ячейках D5, E5 и F5.
Просмотрите это видео по порядку операторов в Excel, чтобы узнать больше.
Преобразование Excel значений в формулах
При вводе формулы Excel ожидает определенные типы значений для каждого оператора. Если ввести значение, отличное от ожидаемого, Excel может преобразовать это значение.
При использовании знака «плюс» (+) Excel числа в формуле. Хотя кавычки означают, что «1» и «2» являются текстовыми значениями, Excel автоматически преобразует текстовые значения в числа.
Если формула ожидает числа, Excel преобразует текст, если он имеет формат, который обычно принимается для числа.
Excel интерпретирует текст как дату в формате мм/дд/дд/yyyy, преобразует даты в серийные числа, а затем вычисляет разницу между ними.
Excel не удается преобразовать текст в число, так как текст «8+1» не может быть преобразован в число. Для преобразования текста в число и возврата результата 3 можно использовать «9» или «8»+»1″ вместо «8+1».
Если текст ожидается, Excel преобразует числа и логические значения, такие как TRUE и FALSE, в текст.
Дополнительные сведения
Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.
См. также
- Базовые математические Excel
- Использование Excel в качестве калькулятора
- Полные сведения о формулах в Excel
- Рекомендации, позволяющие избежать появления неработающих формул
- Поиск ошибок в формулах
- Сочетания клавиш и горячие клавиши в Excel
- Функции Excel (по алфавиту)
- Функции Excel (по категориям)
Эксель почему одинаковый текст не равен
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 | ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Эксель почему одинаковый текст не равен
Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Пользователь
Регистрация: 02.08.2011
Сообщений: 42
Во вложении. Если открыть книгу в формате .csv, то там отображается знак вопроса.
Лист Microsoft Excel.xlsx (8.3 Кб, 18 просмотров) |
Пользователь
Регистрация: 02.08.2011
Сообщений: 42
Проблема решена. Есть 255 символов, которые могут быть косячными.
В данном случае, невидимый символ знака вопроса имел номер 63. Проверяем номер последнего символа в ячейке.
Макрос точно такой-же. Перебираем символы ячейки, и проверяем номер каждого символа.
Msgbox Asc(символ), сверяем с нужным номером( можно сделать цикл по всем косячным) и пропускаем его, записывая в переменную только нужные символы)
Кода под рукой нет, сори. Писать текста не умею, надеюсь понятно, если кому-то пригодится.
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
только символ(63) = ?
такой же нормальный как и соседние
62 = >
64 = @
а с 65 начинаются большие латинские буквы.
а не печатные символы до 31
Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Пользователь
Регистрация: 02.08.2011
Сообщений: 42
Нормальный, но только он не отображается
Регистрация: 11.05.2010
Сообщений: 5,166
Да, интересный символ. И не каждая формула его покажет — через
=CODE(MID($A$1;COLUMN()-2;1))
не получилось его вытянуть, только через
=CODE(RIGHT(A2))
Но вот зато макросом легко его наглядно увидеть:
Изображения
Screenshot_3.jpg (21.5 Кб, 151 просмотров) |
webmoney: E265281470651 Z422237915069 R418926282008
Excel неправильно считает. Почему?
Часто при вычислении разницы двух ячеек в Excel можно видеть, что она не равна нулю, хотя числа одинаковые. Например, в ячейках A1 и B1 записано одно и тоже число 10,7 , а в C1 мы вычитаем из одного другое:
И самое странное то, что в итоге мы не получаем 0! Почему?
И еще одна ситуация — я её называю «Куда пропала копейка?!». На скрине ниже изображена достаточно частая ситуация в Excel:
Слева числа получены формулами и сложены в единую сумму при помощи функции СУММ (SUM) , а правее они же посчитаны на калькуляторе. Как видно — суммы различаются на копейку. На самом деле различаться суммы в итоге могут и более чем на копейку.
Разберем причины подобного поведения и главное — как эту проблему можно решить.
Причина очевидная — формат ячеек
Сначала самый очевидный ответ: если идет сравнение значений двух ячеек, то необходимо убедиться, что числа там действительно равны и не округлены форматом ячеек. Например, если взять те же числа из примера выше, то если выделить их -правая кнопка мыши —Формат ячеек (Format cells) -вкладка Число (Number) -выбираем формат Числовой и выставляем число десятичных разрядов равным 7:
Теперь все становится очевидным — числа отличаются и были просто округлены форматом ячеек. И естественно не могут быть равны. В данном случае оптимальным будет понять почему числа именно такие, а уже потом принимать решение. И если уверены, что числа надо реально округлять до десятых долей — то можно применить в формуле функцию ОКРУГЛ:
=ОКРУГЛ( B1 ;1)-ОКРУГЛ( A1 ;1)=0
=ROUND(B1,1)-ROUND(A1,1)=0
Но как быть, если таких формул десять, двадцать и более? Не прописывать же вручную для каждой формулу ОКРУГЛ. Можно использовать одну из функций моей надстройки MulTEx, которая двумя кликами мыши все сделает за вас. Достаточно будет выделить все ячейки с «неверными» числами, которые надо округлить, перейти на вкладку MulTEx -группа Ячейки/Диапазоны —Ячейки —Функции и выбрать Округлить (см. подробное описание функции). Указать количество знаков 2 и все. Там, где были формулы, будет добавлена функция ОКРУГЛ, а где реальные числа — будет произведено округление.
Но есть и более кардинальный метод , если сторонние утилиты и надстройки использовать нельзя или нет желания:
- Excel 2007:Кнопка офис —Параметры Excel (Excel options) —Дополнительно (Advanced) —Задать точность как на экране (Set precision as displayed)
- Excel 2010:Файл (File) —Параметры (Options) —Дополнительно (Advanced) —Задать точность как на экране (Set precision as displayed)
- Excel 2013 и выше:Файл (File) —Параметры (Options) —Дополнительно (Advanced) —Задать указанную точность (Set precision as displayed)
Это запишет все числа на всех листах книги ровно так, как они отображены форматом ячеек. Данное действие лучше выполнять на копии книги, т.к. оно приводит все числовые данные во всех листах книги к тому виду, как они отображены на экране. Т.е. если само число содержит 5 десятичных разрядов, а форматом ячеек задан только 1 — то после применения данной опции число будет округлено до 1 знака после запятой. При этом отменить данную операцию нельзя, если только не закрыть книгу без сохранения.
Причина программная
Но нередко в Excel можно наблюдать более интересный «феномен»: разница двух дробных чисел, полученная формулой не равна точно такому же числу, записанному напрямую в ячейку. Для примера, запишите в ячейку такую формулу:
=10,8-10,7=0,1
по виду результатом должен быть ответ ИСТИНА (TRUE) . Но по факту будет ЛОЖЬ (FALSE) . И этот пример не единственный — такое поведение Excel далеко не редкость при вычислениях. Его можно встретить и в менее явной форме — когда вычисления основаны на значении других ячеек, которые тоже в свою очередь вычисляются формулами и т.д. Но причина во всех случаях одна.
Почему с виду одинаковые числа не равны?
Сначала разберемся почему Excel считает приведенное выше выражение ложным. Ведь если вычесть из 10,8 число 10,7 — в любом случае получится 0,1 . Значит где-то по пути что-то пошло не так. Запишем в отдельную ячейку левую часть выражения: =10,8-10,7 . В ячейке появится 0,1 . А теперь выделяем эту ячейку -правая кнопка мыши —Формат ячеек (Format cells) -вкладка Число (Number) -выбираем формат Числовой и выставляем число десятичных разрядов равным 15:
и теперь видно, что на самом деле в ячейке не ровно 0,1 , а 0,100000000000001 . Т.е. в 15 значащем разряде у нас появился «хвостик» в виде лишней единицы.
А теперь будем разбираться откуда этот «хвостик» появился, ведь и логически и математически его там быть не должно. Рассказать я постараюсь очень кратко и без лишних заумностей — их на эту тему при желании можно найти в интернете немало.
Все дело в том, что в те далекие времена(это примерно 1970-е годы), когда ПК был еще чем-то вроде экзотики, не было единого стандарта работы с числами с плавающей запятой(дробных, если по простому). Зачем вообще этот стандарт? Затем, что компьютерные программы видят числа по своему, а дробные так вообще со статусом «все сложно». И при этом одно и то же дробное число можно представить по-разному и обрабатывать операции с ним тоже. Поэтому в те времена одна и та же программа, при работе с числами, могла выдать различный результат на разных ПК. Учесть все возможные подводные камни каждого ПК задача не из простых, поэтому в один прекрасный момент началась разработка единого стандарта для работы с числами с плавающей запятой. Опуская различные подробности, нюансы и интересности самой истории скажу лишь, что в итоге все это вылилось в стандарт IEEE754. А в соответствии с его спецификацией в десятичном представлении любого числа допускаются ошибки в 15-м значащем разряде. Что и приводит к неизбежным ошибкам в вычислениях. Чаще всего это можно наблюдать именно в операциях вычитания, т.к. именно вычитание близких между собой чисел ведет к потере значимых разрядов.
Подробнее про саму спецификацию так же можно узнать в статье Microsoft: Результаты арифметических операций с плавающей точкой в Excel могут быть неточными
Вот это как раз и является виной подобного поведения Excel. Хотя справедливости ради надо отметить, что не только Excel, а всех программ, основанных на данном стандарте. Конечно, напрашивается логичный вопрос: а зачем же приняли такой глючный стандарт? Я бы сказал, что был выбран компромисс между производительностью и функциональностью. Хотя возможно, были и другие причины.
Куда важнее другое: как с этим бороться?
По сути никак, т.к. это программная «ошибка». И в данном случае нет иного выхода, как использовать всякие заплатки вроде ОКРУГЛ и ей подобных функций. При этом ОКРУГЛ здесь надо применять не как в было продемонстрировано в самом начале, а чуть иначе:
=ОКРУГЛ( 10,8 — 10,7 ;1)=0,1
=ROUND(10.8-10.7,1)=0,1
т.е. в ОКРУГЛ мы должны поместить само «глючное» выражение, а не каждый его аргумент отдельно. Если поместить каждый аргумент — то эффекта это не даст, ведь проблема не в самом числе, а в том, как его видит программа. И в данном случае 10,8 и 10,7 уже округлены до одного разряда и понятно, что округление отдельно каждого числа не даст вообще никакого эффекта. Здесь и еще один нюанс — вполне достаточно, зная эту особенность, округлить до 14 знаков и проблема тоже исчезнет. В чем здесь плюс — как правило очень мало задач для решения требуют 15 знаков после запятой и этот 15-ый можно просто «игнорировать», но при этом не убирать более значимые разряды(ведь не всегда известно до какого разряда можно округлять без потерь):
=ОКРУГЛ( 10,8 — 10,7 ;14)=0,1
=ROUND(10.8-10.7,14)=0,1
Можно, правда, выкрутиться и иначе. Умножить каждое число на некую величину(скажем на 1000, чтобы 100% убрать знаки после запятой) и после этого производить вычитание и сравнение:
=((10,8*1000)-(10,7*1000))/1000=0,1
Хочется верить, что хоть когда-нибудь описанную особенность стандарта IEEE754 Microsoft сможет победить или хотя бы сделать заплатку, которая будет производить простые вычисления не хуже 50-рублевого калькулятора 🙂
Статья помогла? Поделись ссылкой с друзьями!