Ошибка в 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 реализуем первый способ, а в А2 – второй.

Задание 1. В ячейку А1 введите слово с форматирующим символом так: «’истина». Обязательно следует поставить в начале слова символ апострофа «’», который можно ввести с английской раскладки клавиатуры (в русской раскладке символа апострофа нет). Тогда Excel скроет первый символ и будет воспринимать слова «истина» как текст, а не логический тип данных.

Задание 2. Перейдите на ячейку А2 и вызовите диалоговое окно «Формат ячеек». Например, с помощью комбинации клавиш CTRL+1 или контекстным меню правой кнопкой мышки. На вкладке «Число» в списке числовых форматов выберите «текстовый» и нажмите ОК. После чего введите в ячейку А2 слово «истина».

Задание 3. Для сравнения напишите тоже слово в ячейке А3 без апострофа и изменений форматов.

Истина как текст.

Как видите, апостроф виден только в строке формул.

Примечание. В ячейках А1 и А2 символы текста не были сменены на большие, а значит не была выполнена авто-подстановка, потому что слово воспринято программой как текст.

Отображение формул

Заполните данными ячейки, так как показано ниже на рисунке:

Формула как текст.

Обычно комбинация символов набранных в B3 должна быть воспринята как формула и автоматически выполнен расчет. Но что если нам нужно записать текст именно таким способом и мы не желаем вычислять результат? Решить данную задачу можно аналогичным способом из примера описанного выше.

Бухгалтеры (и не только) знают одну «нехорошую» особенность 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

Причиной того, что результат вычисления вышеуказанной формулы равен не 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 реализуем первый способ, а в А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 отражал с точностью до двух знаков после запятой, а хранил число с максимальной точностью, просто задайте форматирование «два знака после запятой», и никакие дополнительные формулы не потребуются. Но… именно против этого и направлена статья, так как в бухгалтерских расчетах не допускается расхождение между суммой и слагаемыми…

Excel для бухгалтера: исправление ошибки округления

Бухгалтеры (и не только) знают одну «нехорошую» особенность 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’ем — при подсчете значений в столбце получается сумма, отличной от сложенной вручную на калькуляторе. В изображении ниже сумма должна получатся 83,35, но Excel почему-то суммирует это до 83,3, хотя и стоит опция, чтобы было 2 знака после запятой. Что сделать так, чтобы сумма считалась нормально? Использование СУММПРОИЗВ эффекта не дало. ОС Windows 7 X32, Excel 2010.

Так же помните что два знака после запятой — это только при выводе на экран. Число в ячейке может иметь больше знаков и фактически быть как больше так и меньше показаного округленного значения.

Например, число 1.185 будет показано как 1.19, но при сложении будет использовано именно 1.185.

Таким образом в ручную вы подсчитали сумму округленных значений, а эксел показывает округленную сумму изначальных величин. Это не всегда одно и то же.

This posting is provided «AS IS» with no warranties, and confers no rights.

  • Помечено в качестве ответа Жук MVP, Moderator 7 сентября 2015 г. 22:45

Так как ввод данных и формулы расчёта зависит от Вас, то можно сказать однозначно, что не правильно считаете Вы 😉 :))

Правильнее, разместить Ваш файл-пример руководствуясь разделом Q9 справки, в общедоступной папке бесплатного хранилища OneDrive и ссылку на папку с файлом-примером, вставить в своё сообщение:

83,35

Да, я Жук, три пары лапок и фасеточные глаза :))

  • Изменено Жук MVP, Moderator 5 сентября 2015 г. 0:04
  • Помечено в качестве ответа Жук MVP, Moderator 5 сентября 2015 г. 0:57

Все ответы

Промежуточные суммы посчитайте — это мопомет найти «битую» ячейку

Так же помните что два знака после запятой — это только при выводе на экран. Число в ячейке может иметь больше знаков и фактически быть как больше так и меньше показаного округленного значения.

Например, число 1.185 будет показано как 1.19, но при сложении будет использовано именно 1.185.

Таким образом в ручную вы подсчитали сумму округленных значений, а эксел показывает округленную сумму изначальных величин. Это не всегда одно и то же.

This posting is provided «AS IS» with no warranties, and confers no rights.

  • Помечено в качестве ответа Жук MVP, Moderator 7 сентября 2015 г. 22:45

Так как ввод данных и формулы расчёта зависит от Вас, то можно сказать однозначно, что не правильно считаете Вы 😉 :))

Правильнее, разместить Ваш файл-пример руководствуясь разделом Q9 справки, в общедоступной папке бесплатного хранилища OneDrive и ссылку на папку с файлом-примером, вставить в своё сообщение:

83,35

Да, я Жук, три пары лапок и фасеточные глаза :))

  • Изменено Жук MVP, Moderator 5 сентября 2015 г. 0:04
  • Помечено в качестве ответа Жук MVP, Moderator 5 сентября 2015 г. 0:57

Судя по Вашему вопросу, Вы не загружали Ваш файл-пример, ссылку на который Вам дал в предыдущем сообщении. Загрузите по ссылке данный Вам, файл-пример.

Формула суммирования =СУММ(A1:A35)

Да, я Жук, три пары лапок и фасеточные глаза :))

  • Изменено Жук MVP, Moderator 7 сентября 2015 г. 9:41

Так же помните что два знака после запятой — это только при выводе на экран. Число в ячейке может иметь больше знаков и фактически быть как больше так и меньше показаного округленного значения.

Например, число 1.185 будет показано как 1.19, но при сложении будет использовано именно 1.185.

Таким образом в ручную вы подсчитали сумму округленных значений, а эксел показывает округленную сумму изначальных величин. Это не всегда одно и то же.

This posting is provided «AS IS» with no warranties, and confers no rights.

:))) я помница лет 10 назад битых 3 часа пытался обьяснить похожую ситуацию начальнице финотдела в банке, когда она с калькулятором в руке пересчитывала значения за экслем.

Excel неправильно считает. Почему?

Часто при вычислении разницы двух ячеек в Excel можно видеть, что она не равна нулю, хотя числа одинаковые. Например, в ячейках A1 и B1 записано одно и тоже число 10,7 , а в C1 мы вычитаем из одного другое:

И самое странное то, что в итоге мы не получаем 0! Почему?

Причина очевидная — формат ячеек
Сначала самый очевидный ответ: если идет сравнение значений двух ячеек, то необходимо убедиться, что числа там действительно равны и не округлены форматом ячеек. Например, если взять те же числа из примера выше, то если выделить их -правая кнопка мыши —Формат ячеек (Format cells) -вкладка Число (Number) -выбираем формат Числовой и выставляем число десятичных разрядов равным 7:

Теперь все становится очевидным — числа отличаются и были просто округлены форматом ячеек. И естественно не могут быть равны. В данном случае оптимальным будет понять почему числа именно такие, а уже потом принимать решение. И если уверены, что числа надо реально округлять до десятых долей — то можно применить в формуле функцию ОКРУГЛ:
=ОКРУГЛ( B1 ;1)-ОКРУГЛ( A1 ;1)=0
=ROUND(B1,1)-ROUND(A1,1)=0
Так же есть более кардинальный метод:

  • 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 уже округлены до одного разряда и понятно, что округление отдельно каждого числа не даст вообще никакого эффекта. Можно, правда, выкрутиться и иначе. Умножить каждое число на некую величину(скажем на 1000, чтобы 100% убрать знаки после запятой) и после этого производить вычитание и сравнение:
=((10,8*1000)-(10,7*1000))/1000=0,1

Хочется верить, что хоть когда-нибудь описанную особенность стандарта IEEE754 Microsoft сможет победить или хотя бы сделать заплатку, которая будет производить простые вычисления не хуже 50-рублевого калькулятора 🙂

Статья помогла? Поделись ссылкой с друзьями!

Компьютер + Интернет + блог = Статьи, приносящие деньги

Забирайте в подарок мой многолетний опыт — книгу «Автопродажи через блог»

Эксель неправильно считает сумму, не вычитает, причины

Я много пишу о работе в программе Еxcel, есть и статья о том, как производить суммирование. Но, после этого ко мне стали поступать вопросы, почему Эксель неправильно считает сумму.

Хочу срезу сказать, что программа не может считать неправильно, за каждой такой ошибкой стоит наша невнимательность.

Причин, по которым вы получаете неверный результат, или вовсе не получаете ничего, достаточно много. Сегодня мы постараемся разобраться со всеми проблемами. Начнём, как обычно, с наиболее распространённых ошибок.

Эксель неправильно считает сумму

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

Ошибки допускаемые при подсчёте:

  • В столбце используют значения нескольких видов: чистые числа и числа с рублями, долларами, евро. Например, 10, 30, 5 руб, $4 и так далее. Или где-то не целые числа, а дробные;
  • В таблице присутствуют скрытые ячейки (строки), которые добавляются к общей сумме;
  • Ошибочная формула. Высока вероятность того, что допущена ошибка при вводе выражения;
  • Ошибка в округлении. Задайте для всех ячеек, содержащих числа, числовой формат с 3 или 4 знаками после запятой;
  • В качестве разделения целого значения используют точку вместо запятой.

Как видите, все причины ошибок — это людской фактор, а программа лишь выполняет то, что заложено в её задачах.

Эксель отказывается подсчитывать сумму

Иногда можно столкнуться с тем, что программа вообще не выполняет каких либо вычислений, даже не показывает промежуточную сумму при выделении столбца.

И опять, таки, всё дело в нашей невнимательности или в неверных настройках. А для получения верных расчётов, необходима правильная настройка Excel для финансовых расчётов.

Давайте пройдём по порядку, по всем пунктам.

Текстовые и числовые значения

Часто копируя и вставляя данные из разных источников в программу Эксель, пользователь сталкивается с проблемой в расчётах.

Причина, чаще всего, лежит на поверхности — Эксель воспринимает введённые данные как текст. Переведите все ячейки с цифрами в числовой формат — всё заработает.

Посмотрите внимательно на ячейки с цифрами, если вы заметили в левом верхнем углу треугольник — то это текстовая ячейка.

Соответственно, программа видит текст и не определяет числа. Для того, чтобы это изменить, нужно выделить ячейки с числами.

Появится значок с восклицательным знаком. Клик по нему — преобразовать в число.

Обычно этого достаточно для того, чтобы программа стала работать. Но, если этого не случилось, двигаемся далее.

Автоматический расчёт формул в Excel

Если программа не хочет считать, проверьте в настройках указание на автоматические расчёты. иногда этот параметр может быть отключен самой программой, в целях экономии мощностей.

Пройдите по пути — файл — параметры — формулы — установите галочку — автоматически.

После изменения данной настройки программа подсчитает всё, что вам нужно.

Сумма не совпадает с калькулятором

Опять же, вся проблема в округлении. Например, при подсчёте на калькуляторе, как правило, считаем 2 знака после запятой.

Получается один результат, а в таблице может быть настроено знаков гораздо больше. Получается расчёт точнее, но он не совпадает с «калькуляторным».

Для того, чтобы проверить настройки, откройте формат ячеек. Нажмите на вкладку — число, выбрав числовой формат. Здесь можно указать требуемое число десятичных знаков.

В заключение хочу сказать, что программа Excel никогда не ошибается, ошибаются люди. Иногда всё дело в настройках программы.

Поэтому, если вы заметили, что Эксель неправильно считает сумму, не спеша проверьте всё то, о чём я сегодня написал для вас.

Поиск ошибки в вычислениях


Выясняем, к чему может привести тот факт, что результат вычисления формулы

=1,324-1,319

равен 0,00500000000000012, а не 0,005.

Рассмотрим результат вычисления в EXCEL 2007 формулы:

=1,324-1,319

Результат равен не 0,005, а 0, 00500000000000012.

Возникает 2 вопроса:

  • почему результат равен не 0,005, а 0,00500000000000012 ?
  • может ли это привести к ошибкам вычисления ?

Причиной того, что результат вычисления вышеуказанной формулы равен не 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,29*100-0-ЦЕЛОЕ(0,29*100)

вернет результат =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 несогласующаяся формула
  • Ошибка в excel недопустимый формат файла
  • Ошибка в excel недопустимое имя поля сводной таблицы