Вычитание в Microsoft Excel кажется простой операцией — пока не сталкиваешься с ошибками типа #ЗНАЧ! или неожиданными результатами вроде даты вместо числа. На практике даже опытные пользователи иногда удивляются, почему =5-3-1 даёт не 1, а 24.01.1900 (подсказка: виноват формат ячейки!). Эта статья разберёт все нюансы: от базового вычитания чисел до работы с процентами, датами и массивами данных.
Мы не будем ограничиваться тривиальными примерами вроде =A1-B1. Вы узнаете, как вычитать:
- 🔢 Числа из разных ячеек (включая динамические диапазоны)
- 📅 Даты и время (с учётом выходных и праздников)
- 💰 Проценты и доли (включая НДС и скидки)
- 📊 Значения с условиями (функции
ЕСЛИ+ вычитание)
А ещё — как избежать 5 самых распространённых ошибок, которые портят 80% расчётов в Excel.
1. Базовое вычитание: числа, ячейки и диапазоны
Начнём с азов. В Excel вычитание выполняется через формулу, которая всегда начинается со знака =. Простейший пример:
=8-3
Но на практике чаще приходится вычитать значения из ячеек. Допустим, у вас в A1 записано 15, а в B1 — 7. Формула будет:
=A1-B1
Что если нужно вычесть одно и то же число из целого столбца? Не пишите формулу для каждой строки! Используйте абсолютную ссылку со знаком $:
=A1-$C$1
Здесь $C$1 — фиксированная ячейка, значение которой будет вычитаться из всех ячеек столбца A.
☑️ Проверка перед вычитанием
⚠️ Внимание: Если после вычитания видите ######, значит результат не помещается в ячейку по ширине. Растяните столбец или уменьшите шрифт — данные при этом не потеряются.
2. Вычитание дат и времени: расчёт дней, часов, минут
Excel хранит даты как числа (где 1 = 1 января 1900 года), а время — как доли суток (0,5 = 12:00). Это позволяет легко вычитать даты:
=B2-A2
Если в A2 записано 15.05.2026, а в B2 — 20.05.2026, результат будет 5 (дней). Но что если нужно узнать количество рабочих дней (без выходных)? Используйте функцию:
=ЧИСТРАБДНИ(A2; B2)
Для времени действует тот же принцип. Например, чтобы узнать разницу между 14:30 и 9:45:
=ВРЕМЯ(14;30;0)-ВРЕМЯ(9;45;0)
Результат отобразится как 4:45 (4 часа 45 минут). Если нужно получить ответ в часах или минутах, умножьте результат на 24 или 1440 соответственно.
| Формула | Пример данных | Результат | Формат ячейки |
|---|---|---|---|
=B1-A1 | A1=10.05.2026, B1=15.05.2026 | 5 | Общий |
=ЧИСТРАБДНИ(A1;B1) | A1=10.05.2026, B1=15.05.2026 | 3 | Общий |
=ВРЕМЗНАЧ("14:30")-ВРЕМЗНАЧ("9:45") | — | 0,2 (4:48) | Время |
=(B1-A1)*24 | A1=9:00, B1=17:30 | 8,5 | Числовой |
⚠️ Внимание: При вычитании времени, пересекающего полночь (например,23:00и2:00), Excel может вернуть отрицательное значение. Используйте формулу=ЕСЛИ(B1для корректного расчёта.
3. Вычитание процентов: скидки, НДС, изменение значений
Проценты в Excel — отдельная головная боль. Чтобы вычесть 20% из числа 100, нельзя просто написать =100-20% — это сработает, но неверно с точки зрения математики. Правильный вариант:
=100-(100*20%)
Или короче:
=100*80%
Для динамических расчётов (например, вычет НДС 20% из суммы в ячейке A1):
=A1-(A1*20%)
Или с использованием функции:
=A1*(1-20%)
А что если нужно узнать, на сколько процентов уменьшилось значение? Например, было 150, стало 120. Формула:
=(150-120)/150
Не забудьте установить для ячейки процентный формат (клавиши Ctrl+Shift+5).
Почему =100-20% даёт 80, а не 80%?
Excel сначала вычисляет 20% от 100 (то есть 20), затем выполняет 100-20. Чтобы получить 80% от числа, нужно умножать на (1-20%), а не вычитать проценты напрямую.
4. Вычитание с условиями: функции ЕСЛИ и СУММЕСЛИ
Допустим, вам нужно вычесть 10% от суммы только если она превышает 1000 рублей. Здесь поможет функция ЕСЛИ:
=ЕСЛИ(A1>1000; A1-A1*10%; A1)
Более сложный пример: вычесть фиксированную скидку 50 рублей, но не более 20% от цены:
=ЕСЛИ(A1*0,2<50; A1-50; A1*0,8)
Для работы с диапазонами используйте СУММЕСЛИ. Например, вычесть из общей суммы (B10) все значения из столбца B2:B9, которые больше 500:
=B10-СУММЕСЛИ(B2:B9; ">500")
А если нужно вычесть значения из одного диапазона, соответствующие критериям другого? Комбинируйте функции:
=СУММ(B2:B9)-СУММЕСЛИ(A2:A9; "Да"; B2:B9)
Здесь из суммы столбца B вычитаются только те значения, где в соответствующих ячейках столбца A стоит "Да".
5. Типичные ошибки и как их исправить
Даже в простом вычитании Excel может подложить "свинью". Вот 5 самых распространённых ошибок и их решения:
#ЗНАЧ!(Value) — появляется, когда пытаетесь вычесть текст из числа. Проверьте ячейки на скрытые символы (пробелы, апострофы) или используйте=ЗНАЧЕН(A1)для преобразования текста в число.#ДЕЛ/0!(Div/0) — возникает при вычитании дат, если одна из ячеек пуста. Используйте=ЕСЛИОШИБКА(B1-A1; "").- Некорректный результат (например,
15.01.1900вместо15) — проверьте формат ячейки. Выделите ячейку, нажмитеCtrl+1и выберите "Числовой". - Отрицательные числа отображаются как
######— расширьте столбец или измените формат на "Числовой" с разрешением отрицательных значений. - Формула не обновляется — включите автоматический пересчёт в
Формулы → Параметры вычислений → Автоматически.
Особенный случай — вычитание из пустой ячейки. Excel воспринимает её как 0, но это может искажать расчёты. Чтобы игнорировать пустые ячейки:
=ЕСЛИ(A1=""; ""; A1-B1)
6. Продвинутые техники: массивы, Power Query и VBA
Для сложных задач базовых формул недостаточно. Рассмотрим 3 продвинутых метода:
1. Вычитание с использованием массивов (для Excel 365 и 2021):
Допустим, нужно вычесть из каждого элемента диапазона A1:A5 соответствующее значение из B1:B5 и получить массив результатов:
=A1:A5-B1:B5
Введите формулу в одну ячейку и подтвердите Enter — результат "прольётся" на весь диапазон.
2. Power Query для вычитания столбцов:
- 📋 Выделите данные и нажмите
Данные → Из таблицы/диапазона. - 🔄 В редакторе Power Query выберите столбец, затем
Добавить столбец → Вычесть. - 💾 Нажмите
Закрыть и загрузить, чтобы вернуть результат в Excel.
3. VBA для автоматического вычитания:
Создайте макрос, который вычитает фиксированное значение (например, 10) из выделенного диапазона:
Sub SubtractValue()
Dim cell As Range
For Each cell In Selection
If IsNumeric(cell.Value) Then
cell.Value = cell.Value - 10
End If
Next cell
End Sub
Чтобы запустить, нажмите Alt+F8, выберите макрос и кликните Выполнить.
7. Вычитание в Google Таблицах: ключевые отличия
Формулы вычитания в Google Sheets работают почти так же, как в Excel, но есть нюансы:
- 🔹 Функции на английском: вместо
ЧИСТРАБДНИиспользуйте=NETWORKDAYS. - 🔹 Формат дат: по умолчанию начинается с
30.12.1899(в Excel — с01.01.1900). - 🔹 Горячие клавиши: для вставки текущей даты используйте
Ctrl+;(как в Excel), а для времени —Ctrl+Shift+;. - 🔹 Массивы: формулы массивов работают без
Ctrl+Shift+Enter(как в Excel 365).
Пример вычитания с условием в Google Таблицах:
=IF(A1>1000; A1-A1*10%; A1)
Обратите внимание на запятые вместо точек с запятой в разделителях аргументов (зависит от региональных настроек).
FAQ: Частые вопросы о вычитании в Excel
❓ Почему формула =A1-B1 возвращает дату вместо числа?
Excel воспринял значения в ячейках A1 или B1 как даты. Проверьте формат ячеек (Ctrl+1) и измените его на "Числовой". Если данные импортированы из внешнего источника, используйте функцию =ЗНАЧЕН() для преобразования текста в число.
❓ Как вычесть время с учётом ночного периода (например, 23:00 до 7:00)?
Используйте формулу:
=ЕСЛИ(B1
Где 1 — это один полный день (24 часа). Умножьте результат на 24, чтобы получить часы.
❓ Можно ли вычесть значения из закрытой книги?
Да, но с ограничениями. В формуле укажите полный путь:
='C:\Путь\[Книга.xlsx]Лист1'!A1-B1
Excel предложит открыть источник для обновления данных. Для автоматического обновления без открытия используйте Power Query.
❓ Как вычесть из числа случайное значение в заданном диапазоне?
Используйте функции СЛЧИС и ЦЕЛОЕ:
=A1-(ЦЕЛОЕ(СЛЧИС()*10)+1)
Эта формула вычтет из A1 случайное число от 1 до 10. Для обновления значения нажмите F9.
❓ Почему после вычитания появляется #ИМЯ? в английской версии Excel?
Ошибка #NAME? означает, что Excel не распознаёт имя функции. Проверьте:
- 🔹 Правильность написания функции (например,
SUMIF, а неСУММЕСЛИв английской версии). - 🔹 Отсутствие лишних пробелов или символов в формуле.
- 🔹 Региональные настройки (в некоторых версиях разделитель — запятая, а не точка с запятой).