Бухгалтеры (и не только) знают одну «нехорошую» особенность Excel – «неумение» правильно суммировать. 🙂 Иногда это приводит к казусам в бухгалтерских документах, сформированных в Excel (рис. 1)
Рис. 1. Фрагмент счет-фактуры с «неверным» суммированием
Скачать заметку в формате Word, примеры в формате Excel
Видно, что общий итог по налогу (значение в ячейке G7) и стоимости товаров (Н7) отличаются на копейку от суммы по строкам (G4:G6 и Н4:Н6, соответственно). Это ошибка является следствием округления. Дело в том, что значения только отображаются в формате с двумя десятичными знаками. Фактические значения в этих ячейках содержат больше десятичных знаков (рис. 2). Excel суммирует не отображаемые значения, а фактические.
Рис. 2. Тот же счет-фактура с большим числом знаков после запятой
Чтобы значение в ячейке G7 равнялось сумме отображаемых значений в ячейках G4:G6, можно применить формулу массива, проводящую округление значений до двух десятичных знаков перед суммированием: {=СУММ(ОКРУГЛ(G4:G6;2))} (рис. 3). [1]
Рис. 3. «Правильное» суммирование с использованием формулы массива
Чуть подробнее, как работает эта формула. Excel формирует виртуальный массив (в памяти компьютера), состоящий из трех элементов: ОКРУГЛ(G4;2), ОКРУГЛ(G5;2), ОКРУГЛ(G6;2), то есть значений в ячейках G4:G6, округленных до двух десятичных знаков, а затем суммирует эти три элемента. Вуаля! 🙂
Ошибки округления можно также исключить, применив функцию ОКРУГЛ в каждой из ячеек диапазона G4:G6. Этот прием не требует применения формулы массива, однако требует многократного использования функции ОКРУГЛ. Вам судить, что проще!
[1] Идея подсмотрена в книге Джона Уокенбаха «MS Excel 2007. Библия пользователя». Если вы не использовали ранее формулы массива, рекомендую начать с заметки Excel. Введение в формулы массива.
Содержание
- Особенности округления чисел Excel
- Округление с помощью кнопок на ленте
- Округление через формат ячеек
- Установка точности расчетов
- Применение функций
- Вопросы и ответы
При выполнении деления или работе с дробными числами, Excel производит округление. Это связано, прежде всего, с тем, что абсолютно точные дробные числа редко когда бывают нужны, но оперировать громоздким выражением с несколькими знаками после запятой не очень удобно. Кроме того, существуют числа, которые в принципе точно не округляются. В то же время, недостаточно точное округление может привести к грубым ошибкам в ситуациях, где требуется именно точность. К счастью, в программе имеется возможность пользователям самостоятельно устанавливать, как будут округляться числа.
Все числа, с которыми работает Microsoft Excel, делятся на точные и приближенные. В памяти хранятся числа до 15 разряда, а отображаются до того разряда, который укажет сам пользователь. Все расчеты выполняются согласно хранимых в памяти, а не отображаемых на мониторе данных.
С помощью операции округления Эксель отбрасывает некоторое количество знаков после запятой. В нем применяется общепринятый способ округления, когда число меньше 5 округляется в меньшую сторону, а больше или равно 5 – в большую сторону.
Округление с помощью кнопок на ленте
Самый простой способ изменить округление — это выделить ячейку или группу ячеек и, находясь на вкладке «Главная», нажать на ленте на кнопку «Увеличить разрядность» или «Уменьшить разрядность». Обе кнопки располагаются в блоке инструментов «Число». Будет округляться только отображаемое число, но для вычислений при необходимости будут задействованы до 15 разрядов чисел.
При нажатии на кнопку «Увеличить разрядность» количество внесенных знаков после запятой увеличивается на один.
Кнопка «Уменьшить разрядность», соответственно, уменьшает на одну количество цифр после запятой.
Округление через формат ячеек
Есть возможность также выставить округление с помощью настроек формата ячеек. Для этого нужно выделить диапазон ячеек на листе, кликнуть правой кнопкой мыши и в появившемся меню выбрать пункт «Формат ячеек».
В открывшемся окне настроек формата ячеек следует перейти на вкладку «Число». Если формат данных указан не числовой, необходимо выставить именно его, иначе вы не сможете регулировать округление. В центральной части окна около надписи «Число десятичных знаков» просто укажите цифрой то количество знаков, которое желаете видеть при округлении. После этого примените изменения.
Установка точности расчетов
Если в предыдущих случаях устанавливаемые параметры влияли только на внешнее отображения данных, а при расчетах использовались более точные показатели (до 15 знака), то сейчас мы расскажем, как изменить саму точность расчетов.
- Перейдите на вкладку «Файл», оттуда — в раздел «Параметры».
- Откроется окно параметров Excel. В этом окне зайдите в подраздел «Дополнительно». Отыщите блок настроек под названием «При пересчете этой книги». Настройки в этом блоке применяются не к одному листу, а к книге в целом, то есть ко всему файлу. Поставьте галочку напротив параметра «Задать точность как на экране» и нажмите «OK».
- Теперь при расчете данных будет учитываться отображаемая величина числа на экране, а не та, которая хранится в памяти Excel. Настройку же отображаемого числа можно провести любым из двух способов, о которых мы говорили выше.
Применение функций
Если же вы хотите изменить величину округления при расчете относительно одной или нескольких ячеек, но не хотите понижать точность расчетов в целом для документа, в этом случае лучше всего воспользоваться возможностями, которые предоставляет функция «ОКРУГЛ» и различные ее вариации, а также некоторые другие функции.
Среди основных функций, которые регулируют округление, следует выделить такие:
Функция | Описание |
---|---|
ОКРУГЛ | Округляет до указанного числа десятичных знаков согласно общепринятым правилам округления |
ОКРУГЛВВЕРХ | Округляет до ближайшего числа вверх по модулю |
ОКРУГЛВНИЗ | Округляет до ближайшего числа вниз по модулю |
ОКРУГЛТ | Округляет число с заданной точностью |
ОКРВВЕРХ | Округляет число с заданной точностью вверх по модулю |
ОКРВНИЗ | Округляет число вниз по модулю с заданной точностью |
ОТБР | Округляет данные до целого числа |
ЧЕТН | Округляет данные до ближайшего четного числа |
НЕЧЕТН | Округляет данные до ближайшего нечетного числа |
Для функций «ОКРУГЛ», «ОКРУГЛВВЕРХ» и «ОКРУГЛВНИЗ» используется следующий формат ввода: Наименование функции (число;число_разрядов)
. То есть если вы, к примеру, хотите округлить число 2,56896 до трех разрядов, то применяете функцию «ОКРУГЛ(2,56896;3)». В итоге получается число 2,569.
Для функций «ОКРУГЛТ», «ОКРВВЕРХ» и «ОКРВНИЗ» применяется такая формула округления: Наименование функции(число;точность)
. Так, чтобы округлить цифру 11 до ближайшего числа, кратного 2, вводим функцию «ОКРУГЛТ(11;2)». На выходе получается результат 12.
Функции «ОТБР», «ЧЕТН» и «НЕЧЕТ» используют следующий формат: Наименование функции(число)
. Для того чтобы округлить цифру 17 до ближайшего четного, применяем функцию «ЧЕТН(17)». Получаем результат 18.
Функцию можно вводить, как в ячейку, так и в строку функций, предварительно выделив ту ячейку, в которой она будет находиться. Перед каждой функцией следует ставить знак «=».
Существует и несколько другой способ введения функций округления. Его особенно удобно использовать, когда есть таблица со значениями, которые нужно преобразовать в округленные числа в отдельном столбике.
- Переходим во вкладку «Формулы» и кликаем по кнопке «Математические». В открывшемся списке выбираем подходящую функцию, например, «ОКРУГЛ».
- После этого открывается окно аргументов функции. В поле «Число» можно ввести число вручную, но если мы хотим автоматически округлить данные всей таблицы, тогда кликаем по кнопке справа от окна введения данных.
- Окно аргументов функции сворачивается. Теперь щелкнуте по самой верхней ячейке столбца, данные которого мы собираемся округлить. После того, как значение занесено в окно, жмем по кнопке справа от этого значения.
- Опять открывается окно аргументов функции. В поле «Число разрядов» записываем разрядность, до которой нам нужно сокращать дроби и применяем изменения.
- Число округлилось. Чтобы таким же образом округлить и все другие данные нужного столбца, наводим курсор на нижний правый угол ячейки с округленным значением, жмем на левую кнопку мыши, и протягиваем ее вниз до конца таблицы.
- Теперь все значения в столбце будут округлены.
Как видим, существуют два основных способа округлить видимое отображение числа: с помощью кнопки на ленте и путем изменения параметров формата ячеек. Кроме того, можно изменить и округление реально рассчитываемых данных. Это также можно сделать по-разному: изменением настроек книги в целом или применением специальных функций. Выбор конкретного метода зависит от того, собираетесь ли вы применять подобный вид округления для всех данных в файле или только для определенного диапазона ячеек.
Проблемы округления в EXCEL
Причиной того, что результат вычисления вышеуказанной формулы равен не 0,005, а 0,00500000000000012 в том, что EXCEL хранит и проводит вычисления с числами на основе стандарта IEEE 754 (стандарта двоичной арифметики с плавающей запятой). Этот стандарт предписывает хранить числа с плавающей запятой в двоичном формате. Это означает, что перед тем как значение будет использовано в вычислениях, его необходимо конвертировать в десятичный формат. Проблема в том, что не все числа могут быть абсолютно точно представлены в двоичном формате с плавающей запятой. Например, 0,1 не может быть представлено в виде конечного дробного двоичного числа, т.к. 0,1 соответствует 0,0001100110011 с периодом 0011. Т.к. EXCEL оперирует с точностью до 15 значащих цифр, то округление неизбежно. Хотя точность округления из-за конвертации из двоичного формата примерно 2,8Е-17, но как показывает практика, вполне можно получить вместо 0,005 число 0,00500000000000012, а это в некоторых случаях далеко не одно и тоже.
Приведем еще один пример: =0,29*100-ЦЕЛОЕ(0,29*100)=0
Результат равен ЛОЖЬ, а не ИСТИНА, не как следовало ожидать. Обратите внимание, что формула =0,27*100-ЦЕЛОЕ(0,27*100)=0 возвращает правильный результат (ИСТИНА).
Если переписать формулу в другом виде =0,29*100-ЦЕЛОЕ(0,29*100)-0 , то результат будет -3,5527136788005E-15, что и указывает на источник ошибки (значение, хотя и мало, но совсем не равно 0).
Источник ошибки Представим ситуацию, когда, например, в Условном форматировании , задано правило форматирования для результатов вычислений. Если значение ячейки равно 0, то, результат должен быть выделен красным фоном. В случае формулы =0,27*100-ЦЕЛОЕ(0,27*100) , этого не произойдет, т.к. 0 не равен числу -3,5527136788005E-15 (см. выше).
В итоге легко получить неправильный результат работы Условного форматирования : пользователь может при просмотре таблицы с результатами вычислений легко пропустить нулевое значение.
Вывод : при сравнении результатов вычисления формул с константами никогда не полагайтесь на встроенную в EXCEL точность вычисления .
Лучше использовать следующий подход – задавайте точность округления самостоятельно, прямо в формуле. Для нашего случая это будет выглядеть так: =0,29*100-ЦЕЛОЕ(0,29*100)<0,001
Результат будет всегда ИСТИНА, даже если указать фантастическую точность =0,29*100-ЦЕЛОЕ(0,29*100)<1E-204
Другой подход – использовать явное округление =ЦЕЛОЕ(0,29*100)
Напоследок покажем, что коммутативный закон сложения (сумма не меняется от перестановки её слагаемых) в EXCEL работает не всегда (см. Файл примера ).
вернет результат =0, а не -3,55Е-15. А ведь мы просто переставили 0 из формулы =0,29*100-ЦЕЛОЕ(0,29*100)-0
=0,29*100-0,29-0 (результат -3,5527136788005E-15) =1*(0,5-0,4-0,1) (результат -2,77555756156289E-17)
Весьма вероятно, что таких арифметических операций в природе существует множество.
Ошибки Excel при округлении и введении данных в ячейки
Excel старается облегчить наш труд разными подсказками и авто-подстановками. Если все это выполняется вместе с нашими ожиданиями мы в восторге от этой программы. Но если авто-подстановка является ошибочной мы просто выходим из себя.
Например, ошибки при округлении дробных чисел и т.п. Давайте разберемся почему часто возникают ошибки при скруглениях чисел? Ведь данная операция играет очень важную роль в процессе формирования цен и расчетов. Поэтому лучше как можно раньше разобраться в данной особенности программы.
Ошибки при округлении дробных чисел
Как правильно округлить и суммировать числа в Excel?
Для наглядного примера выявления подобного рода ошибок ведите дробные числа 1,3 и 1,4 так как показано на рисунке, а под ними формулу для суммирования и вычисления результата.
Дальше нужно выделить все числа и формулу, чтобы уменьшить разрядность для округления.
Как видите, в результате получаем абсурд: 1+1=3. Никакие форматы здесь не помогут. Решить данный вопрос поможет только функция «ОКРУГЛ». Запишите формулу с функцией так: =ОКРУГЛ(A1;0)+ОКРУГЛ(A2;0)
Как правильно округлить и суммировать числа в столбце таблицы Excel? Если этих чисел будет целый столбец, то для быстрого получения точных расчетов следует использовать массив функций. Для этого мы введем такую формулу: =СУММ(ОКРУГЛ(A1:A7;0)). После ввода массива функций следует нажимать не «Enter», а комбинацию клавиш Ctrl+Shifi+Enter. В результате Excel сам подставит фигурные скобки «» – это значит, что функция выполняется в массиве. Результат вычисления массива функций на картинке:
Можно пойти еще более рискованным путем, но его применять крайне не рекомендуется! Можно заставить Excel изменять содержимое ячейки в зависимости от ее формата. Для этого следует зайти «Файл»-«Параметры»-«Дополнительно» и в разделе «При пересчете этой книги:» указать «задать точность как на экране». Появиться предупреждение: «Данные будут изменены — точность будет понижена!»
Внимание. Работая в таком режиме, изменив один раз количество разрядов, уже нельзя вернуть исходные данные обратно. Это путь только в одну сторону. Поэтому лучше его не использовать. А массив функций прекрасно и безопасно справляется с данной задачей.
Здесь мы забегаем вперед, но иногда без этого сложно объяснить решение важных задач.
Пишем в Excel слово ИСТИНА или ЛОЖЬ как текст
- Вначале вписать форматирующий символ.
- Изменить формат ячейки на текстовый.
В ячейке А1 реализуем первый способ, а в А2 – второй.
Задание 1. В ячейку А1 введите слово с форматирующим символом так: «’истина». Обязательно следует поставить в начале слова символ апострофа «’», который можно ввести с английской раскладки клавиатуры (в русской раскладке символа апострофа нет). Тогда Excel скроет первый символ и будет воспринимать слова «истина» как текст, а не логический тип данных.
Задание 2. Перейдите на ячейку А2 и вызовите диалоговое окно «Формат ячеек». Например, с помощью комбинации клавиш CTRL+1 или контекстным меню правой кнопкой мышки. На вкладке «Число» в списке числовых форматов выберите «текстовый» и нажмите ОК. После чего введите в ячейку А2 слово «истина».
Задание 3. Для сравнения напишите тоже слово в ячейке А3 без апострофа и изменений форматов.
Как видите, апостроф виден только в строке формул.
Примечание. В ячейках А1 и А2 символы текста не были сменены на большие, а значит не была выполнена авто-подстановка, потому что слово воспринято программой как текст.
Отображение формул
Заполните данными ячейки, так как показано ниже на рисунке:
Обычно комбинация символов набранных в B3 должна быть воспринята как формула и автоматически выполнен расчет. Но что если нам нужно записать текст именно таким способом и мы не желаем вычислять результат? Решить данную задачу можно аналогичным способом из примера описанного выше.
Excel для бухгалтера: исправление ошибки округления
Видно, что общий итог по налогу (значение в ячейке G7) и стоимости товаров (Н7) отличаются на копейку от суммы по строкам (G4:G6 и Н4:Н6, соответственно). Это ошибка является следствием округления. Дело в том, что значения только отображаются в формате с двумя десятичными знаками. Фактические значения в этих ячейках содержат больше десятичных знаков (рис. 2). Excel суммирует не отображаемые значения, а фактические.
Рис. 2. Тот же счет-фактура с большим числом знаков после запятой
Чтобы значение в ячейке G7 равнялось сумме отображаемых значений в ячейках G4:G6, можно применить формулу массива, проводящую округление значений до двух десятичных знаков перед суммированием: (рис. 3). [1]
Рис. 3. «Правильное» суммирование с использованием формулы массива
Чуть подробнее, как работает эта формула. Excel формирует виртуальный массив (в памяти компьютера), состоящий из трех элементов: ОКРУГЛ(G4;2), ОКРУГЛ(G5;2), ОКРУГЛ(G6;2), то есть значений в ячейках G4:G6, округленных до двух десятичных знаков, а затем суммирует эти три элемента. Вуаля!
Ошибки округления можно также исключить, применив функцию ОКРУГЛ в каждой из ячеек диапазона G4:G6. Этот прием не требует применения формулы массива, однако требует многократного использования функции ОКРУГЛ. Вам судить, что проще!
[1] Идея подсмотрена в книге Джона Уокенбаха «MS Excel 2007. Библия пользователя». Если вы не использовали ранее формулы массива, рекомендую начать с заметки Excel. Введение в формулы массива .
50 комментариев для “Excel для бухгалтера: исправление ошибки округления”
Для полноты картины можно упомянуть еще об одном варианте, в параметрах Excel указать «точность как на экране» (Файл-Параметры-Дополнительно-При пересчете этой книги: задать точность как на экране)
Спасибо за статью. «соответсвенно» лучше исправить
а как быть, если в документе производится большое количество вычислений, и числа «завязаны» друг за друга. использование формул ОКРУГЛ и т.п. немного неудобно.
как можно отключить округление отображаемого числа? как сделать, чтобы ексель показывал то что есть? пример — число 12345.6789, с точностью после запятой 2, он не округлял 12345.68, а отображал 12345.67, но значение оставалось 12345.6789?
Александр, если Вы хотите, чтобы Excel отражал с точностью до двух знаков после запятой, а хранил число с максимальной точностью, просто задайте форматирование «два знака после запятой», и никакие дополнительные формулы не потребуются. Но… именно против этого и направлена статья, так как в бухгалтерских расчетах не допускается расхождение между суммой и слагаемыми…
Формула выделения для копеек и рублей отдельно |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
serpan Пользователь Сообщений: 178 |
Здравствуйте! Подскажите пожалуйста как решить вот такую задачу: в определённую ячейку введена сумма 2563,78; Необходимо, чтобы в соседней ячейке выводилось значение 2563 руб. 78 коп. |
anvg Пользователь Сообщений: 11878 Excel 2016, 365 |
Добрый день. |
serpan Пользователь Сообщений: 178 |
|
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
|
serpan Пользователь Сообщений: 178 |
#5 22.04.2014 06:30:00
К сожалению в новом формате даже не открывается… А форматах 2003 нет такого рубли-копейки… Изменено: serpan — 22.04.2014 06:32:27 |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Понял. В файле применён такой формат: # ##0″ руб. «,00″ коп.» |
serpan Пользователь Сообщений: 178 |
На этом форуме нашёл вот такую формулу: =ЗАМЕНИТЬ(ТЕКСТ(C3;»0,00″ Скобки почему то здесь в виде смайликов отразились… Изменено: serpan — 22.04.2014 07:15:09 |
Nic70y Пользователь Сообщений: 3289 Win7 MSO 2013 |
#8 22.04.2014 07:45:47
|
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#9 22.04.2014 07:51:19
Пишете формулу — отключайте смайлы. |
||
serpan Пользователь Сообщений: 178 |
Nic70y, формула работает, только одна проблема если нужно разбить значение например: 10675,10; то получается 10675 руб. 1 коп., а не 10 как нужно… |
китин Пользователь Сообщений: 931 |
#11 22.04.2014 08:12:36 а если так
Вполне такой нормальный кинжальчик. Процентов на 100 |
||
anvg Пользователь Сообщений: 11878 Excel 2016, 365 |
#12 22.04.2014 08:32:42 Формула, ещё одна
|
||
serpan Пользователь Сообщений: 178 |
китин, всё работает отлично… Спасибо!!! И ещё есть одна проблема: |
Nic70y Пользователь Сообщений: 3289 Win7 MSO 2013 |
#14 22.04.2014 08:39:32
|
||||
serpan Пользователь Сообщений: 178 |
Спасибо большое!!! Всё работает отлично!!! |
vikttur Пользователь Сообщений: 47199 |
=ЦЕЛОЕ(A1)&» руб. «&ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;2) & » коп.» |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
|
serpan Пользователь Сообщений: 178 |
Юрий М, тоже отлично работает!!! Спасибо!!! |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#19 22.04.2014 19:55:09 Это не я — это anvg )) |