Умножение массивов в Microsoft Excel — задача, с которой сталкиваются и новички, и профессионалы. Кто-то пытается перемножить две колонки по строкам, кому-то нужно получить матричное произведение, а третьим требуется поэлементное умножение с последующим суммированием. В этой статье разберём все актуальные способы — от базовых формул до современных функций MMULT и BYROW, которые появились в последних версиях Excel.
Многие ошибочно думают, что для работы с массивами обязательно знать VBA или устанавливать надстройки. На самом деле, 90% задач решаются стандартными инструментами программы. Главное — понимать разницу между поэлементным умножением (когда каждый элемент первого массива умножается на соответствующий элемент второго) и матричным (где результат зависит от суммы произведений строк и столбцов). Мы покажем оба подхода с реальными примерами.
В статье вы найдёте:
- 🔹 Базовые формулы для умножения колонок (
SUMPRODUCT,ARRAYFORMULA) - 🔹 Матричные операции с
MMULTи правила размерностей - 🔹 Динамические массивы в Excel 365:
BYROW,MAP,LAMBDA - 🔹 Типичные ошибки и как их избежать (включая
#VALUE!и#N/A)
Все примеры протестированы в Excel 2019 и Microsoft 365 (2026 год). Если вы используете более старую версию (2016 или ранее), некоторые функции могут быть недоступны — мы отдельно укажем аналоги.
1. Поэлементное умножение массивов: формула для каждой ячейки
Самая простая задача — умножить два массива одинакового размера поэлементно. Например, у вас есть цены в колонке A и количества в колонке B, а нужно получить сумму заказа в колонке C. Здесь не требуется матричная математика: достаточно перемножить A1*B1, A2*B2 и так далее.
Для этого:
- Введите в первую ячейку результата (например,
C1) формулу:=A1*B1. - Протяните формулу вниз до конца данных (зацепите правый нижний угол ячейки и потяните).
Если массивы расположены в строках (например, A1:D1 и A2:D2), используйте ту же логику, но протягивайте формулу вправо. Этот метод работает во всех версиях Excel, включая Excel 2003.
Для массивов с разными размерами поэлементное умножение невозможно — Excel выдаст ошибку #N/A. В этом случае используйте SUMPRODUCT (разберём далее) или дополните массивы до одинакового размера нулями.
2. Умножение массивов с суммированием: функция SUMPRODUCT
Функция SUMPRODUCT — универсальный инструмент для работы с массивами. Она не только перемножает элементы, но и суммирует результаты. Классический пример: расчёт общей стоимости заказа, где цены и количества хранятся в отдельных колонках.
Синтаксис:
=SUMPRODUCT(массив1; [массив2]; [массив3]; ...)
Примеры использования:
- 📌
=SUMPRODUCT(A1:A10; B1:B10)— сумма произведенийA1*B1 + A2*B2 + ... + A10*B10. - 📌
=SUMPRODUCT((A1:A5=10)*B1:B5)— сумма значений изB1:B5, где вA1:A5стоит число 10 (здесь(A1:A5=10)возвращает массив{ИСТИНА;ЛОЖЬ;...}, который Excel преобразует в{1;0;...}). - 📌
=SUMPRODUCT(A1:A3; B1:B3; C1:C3)— умножение трёх массивов с последующим суммированием.
Важное преимущество SUMPRODUCT — она работает как формула массива без необходимости нажимать Ctrl+Shift+Enter (в отличие от старых версий Excel). Также она игнорирует текстовые значения, что полезно для "грязных" данных.
⚠️ Внимание: Если в массивах разное количество элементов,SUMPRODUCTиспользует минимальную длину. Например,=SUMPRODUCT(A1:A10; B1:B5)просуммирует только первые 5 пар (A1*B1доA5*B5).
3. Матричное умножение: функция MMULT
Когда требуется матричное произведение (как в математике), используйте функцию MMULT. Она возвращает матрицу, где элемент на позиции [i,j] равен сумме произведений элементов i-й строки первого массива и j-го столбца второго.
Синтаксис:
=MMULT(массив1; массив2)
Правила работы с MMULT:
- 🔢 Число столбцов первого массива должно совпадать с числом строк второго массива. Например, если первый массив имеет размер
3×4, второй должен быть4×N(гдеN— любое число). - 📏 Результат будет иметь размер
M×N, гдеM— число строк первого массива. - 🔄 В старых версиях Excel (до 2019)
MMULTтребует ввода как формулы массива (нажатьCtrl+Shift+Enter). В Excel 365 это не нужно.
Пример: умножим матрицу 2×3 на 3×2.
| Матрица 1 (A1:C2) | Матрица 2 (E1:F3) | Результат (G1:H2) | |
|---|---|---|---|
| 1 2 3 | 5 6 7 | 8 9 10 | 1×5+2×8+3×7=43 1×6+2×9+3×10=54 |
| 4 5 6 | 11 12 13 | 14 15 16 | 4×11+5×14+6×13=188 4×12+5×15+6×16=217 |
Формула в ячейке G1 (затем протянуть вправо и вниз):
=MMULT(A1:C2; E1:F3)
⚠️ Внимание: Если после вводаMMULTвы видите только одно значение, а не матрицу — вы забыли протянуть формулу на нужный диапазон или не нажалиCtrl+Shift+Enterв старых версиях Excel.
4. Динамические массивы в Excel 365: BYROW, MAP, LAMBDA
В Microsoft 365 и Excel 2021 появились динамические массивы — функции, которые автоматически "проливаются" на соседние ячейки. Для умножения массивов полезны:
- 🔹
BYROW— применяет формулу к каждой строке массива. - 🔹
MAP— поэлементная обработка (аналог "векторных" операций в Python). - 🔹
LAMBDA— создание пользовательских функций для массивов.
Пример 1: Умножить каждую строку массива A1:B3 на вектор D1:D3 (поэлементно по строкам):
=BYROW(A1:B3; LAMBDA(строка; строка*D1:D3))
Пример 2: Поэлементное умножение двух массивов A1:B3 и D1:E3:
=MAP(A1:B3; D1:E3; LAMBDA(a; b; a*b))
Преимущества динамических массивов:
- ✅ Нет нужды протягивать формулы — результат автоматически заполняет нужный диапазон.
- ✅ Поддержка
LAMBDAпозволяет создавать сложные вычисления без VBA. - ✅ Работают с пролитыми диапазонами (spill ranges), что упрощает анализ данных.
Как отключить "проливание" динамических массивов?
В Excel 365 можно заблокировать автоматическое заполнение соседних ячеек. Для этого перейдите в Файл → Параметры → Формулы и снимите галочку с пункта Динамические массивы. Однако это отключит функционал для всех формул, поэтому используйте осторожно.
5. Умножение массивов с условиями: FILTER и LET
Если нужно умножать массивы с фильтрацией (например, только положительные значения), используйте комбинацию FILTER + MMULT или SUMPRODUCT.
Пример: Перемножить массивы A1:A10 и B1:B10, но только для строк, где A1:A10 > 5:
=SUMPRODUCT(--(A1:A10>5); A1:A10; B1:B10)
Здесь --(A1:A10>5) преобразует логические значения {ИСТИНА;ЛОЖЬ;...} в {1;0;...}.
В Excel 365 можно использовать FILTER:
=SUM(FILTER(A1:A10; A1:A10>5) * FILTER(B1:B10; A1:A10>5))
Для сложных вычислений удобна функция LET, которая позволяет назначать промежуточные переменные:
=LET(
отфильтрованный_A; FILTER(A1:A10; A1:A10>5);
отфильтрованный_B; FILTER(B1:B10; A1:A10>5);
SUM(отфильтрованный_A * отфильтрованный_B)
)
🔲 Убедитесь, что ваша версия Excel поддерживает FILTER (365 или 2021)
🔲 Проверьте, что условие фильтрации возвращает хотя бы одну строку
🔲 Для больших массивов (>10 000 строк) используйте SUMPRODUCT вместо FILTER
-->
6. Типичные ошибки и их решения
При работе с массивами в Excel пользователи часто сталкиваются с ошибками. Разберём самые распространённые:
| Ошибка | Причина | Решение |
|---|---|---|
#VALUE! | Несовпадение размеров массивов для MMULT или текстовые значения в данных. | Проверьте размеры матриц (число столбцов 1-й = числу строк 2-й). Удалите текст или используйте IFERROR. |
#N/A | Отсутствуют данные для фильтрации (например, FILTER не нашёл ни одной строки). | Добавьте обработку ошибок: =IFERROR(FILTER(...); 0). |
#SPILL! | На пути "проливания" динамического массива есть непустые ячейки. | Очистите ячейки справа/снизу или переместите формулу в свободное место. |
| Неправильный результат | Забыли нажать Ctrl+Shift+Enter в Excel 2016/2019 для формул массива. | Повторите ввод формулы с правильной комбинацией клавиш. |
Критическая ошибка: если в результате MMULT вы видите одно значение вместо матрицы, это означает, что Excel не распознаёт формулу как массива. В Excel 365 проверьте, не отключены ли динамические массивы в настройках. В старых версиях — перевведите формулу с Ctrl+Shift+Enter.
Ещё одна частая проблема — округление результатов. Например, MMULT может возвращать значения вроде 1.23E-14 вместо нуля. Это связано с особенностями вычислений с плавающей запятой. Чтобы исправить:
=IF(ABS(MMULT(A1:B2; D1:E2))<1E-10; 0; MMULT(A1:B2; D1:E2))
FAQ: Ответы на частые вопросы
Можно ли умножить массивы разного размера?
Для поэлементного умножения (например, A1:A5 * B1:B3) — нет, Excel выдаст ошибку. Но можно:
- Дополнить меньший массив нулями до размера большего.
- Использовать
SUMPRODUCTдля суммирования произведений (он берёт минимальную длину).
Как умножить массив на число?
Просто умножьте диапазон на число:
- Для статического результата:
=A1:A10*5(в Excel 365 "прольётся" автоматически). - В старых версиях: введите
=A1:A10*5и нажмитеCtrl+Shift+Enter.
Почему MMULT возвращает #VALUE! даже при правильных размерах?
Проверьте:
- В массивах нет текстовых значений (например, пустых ячеек или надписей "N/A").
- Нет скрытых символов (пробелов, неразрывных пробелов). Используйте
TRIMдля очистки. - В Excel 2016/2019 вы забыли ввести формулу как массива (
Ctrl+Shift+Enter).
Как умножить три массива?
Используйте вложенные функции:
- Для поэлементного умножения:
=A1:A5 B1:B5 C1:C5(в Excel 365). - Для матричного умножения:
=MMULT(MMULT(A1:B2; D1:E3); G1:H2).
Порядок важен: MMULT(A; MMULT(B; C)) не то же самое, что MMULT(MMULT(A; B); C)!
Можно ли умножать массивы в Google Sheets?
Да, в Google Таблицах поддерживаются:
ARRAYFORMULAвместоCtrl+Shift+Enter(например,=ARRAYFORMULA(A1:A5*B1:B5)).MMULTс теми же правилами размерностей.BYROW,MAP,LAMBDA(аналогично Excel 365).
Отличие: в Google Sheets нет "проливания" динамических массивов — нужно явно указывать диапазон вывода.