Умножение матриц — одна из ключевых операций в линейной алгебре, которая часто применяется в экономике, статистике и инженерных расчётах. Однако в Microsoft Excel эта задача требует особого подхода, так как стандартные функции не поддерживают прямую работу с матрицами как с едиными объектами. Если вы пытались просто перемножить две таблицы ячейками и получили ошибку #ЗНАЧ!, эта статья поможет разобраться, почему так происходит и как правильно выполнить операцию.
В отличие от элементарных арифметических действий, произведение матриц подчиняется специальным правилам: количество столбцов первой матрицы должно совпадать с количеством строк второй. Excel предлагает для этого две основные методики: использование функции МУМНОЖ (для старых версий) и динамические массивы (в Excel 365 и Excel 2021). Мы подробно разберём оба варианта, а также покажем, как избежать типичных ошибок и автоматизировать процесс для больших datasets.
Что такое произведение матриц и почему его нельзя посчитать обычным умножением
Прежде чем переходить к практике, важно понять математическую суть операции. Произведение двух матриц A (размером m×n) и B (размером n×p) — это новая матрица C (размером m×p), где каждый элемент cij вычисляется как сумма произведений элементов i-й строки матрицы A и j-го столбца матрицы B. Формула:
cij = ∑ (aik × bkj) для k = 1 до n
Например, если у вас есть матрицы:
| Матрица A (2×3) | Матрица B (3×2) | |||
|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 |
| 4 | 5 | 6 | 6 | 7 |
| 8 | 9 |
То элемент c11 результирующей матрицы будет равен: 1×4 + 2×6 + 3×8 = 40. Именно поэтому попытка перемножить матрицы побитово (ячейка на ячейку) в Excel приведёт к неверному результату — программа просто не понимает контекст матричной алгебры.
Метод 1: Функция МУМНОЖ для старых версий Excel (2019 и ранее)
В версиях Excel до 2021 года для умножения матриц используется функция МУМНОЖ (англ. MMULT). Она требует обязательного ввода как массива формул, что многих пользователей сбивает с толку. Вот пошаговая инструкция:
Введите первую матрицу в диапазон, например,
A1:C2(2 строки × 3 столбца).Вторую матрицу разместите так, чтобы количество её строк совпадало с количеством столбцов первой (например,
E1:F3для 3×2).Выделите диапазон для результата (в нашем случае — 2×2, например
H1:I2).Введите формулу:
=МУМНОЖ(A1:C2; E1:F3).Нажмите
Ctrl+Shift+Enter(вместо обычногоEnter) — это преобразрует формулу в массивную.
После этого в выделенном диапазоне появятся правильные значения результирующей матрицы. Обратите внимание: если забыть нажать Ctrl+Shift+Enter, Excel вернёт только первый элемент результата!
Проверьте совместимость размеров матриц (столбцы A = строки B)
Выделите диапазон для результата заранее
Используйте английскую версию функции MMULT, если у вас не русская локаль
Не забудьте нажать Ctrl+Shift+Enter-->
⚠️ Внимание: Если после ввода формулы вы видите фигурные скобки { } вокруг неё — это нормально, так Excel обозначает массивные формулы. Удалять их вручную нельзя!
Метод 2: Динамические массивы в Excel 365 и 2021 (без Ctrl+Shift+Enter)
С выходом Excel 365 и Excel 2021 появилась поддержка динамических массивов, которые автоматически "проливаются" на соседние ячейки. Теперь для умножения матриц достаточно:
Разместить матрицы на листе (например,
A1:B2иD1:F2).В любой ячейке (например,
H1) ввести:=МУМНОЖ(A1:B2; D1:F2).Нажать
Enter— результат автоматически заполнит нужный диапазон.
Преимущества этого метода:
- 🔹 Не нужно заранее выделять диапазон для результата.
- 🔹 Нет необходимости использовать
Ctrl+Shift+Enter. - 🔹 Формула автоматически обновляется при изменении исходных данных.
Однако есть и нюанс: если справа или снизу от ячейки с формулой есть другие данные, Excel может не показать полный результат. В этом случае придётся вручную очистить соседние ячейки.
Как отключить динамические массивы, если они мешают?
Если вам не нужны "проливающиеся" результаты, можно откатиться к старому поведению:
1. Перейдите в Файл → Параметры → Формулы.
2. Снимите галочку с пункта "Динамические массивы".
3. Перезапустите Excel.
Типичные ошибки и как их исправить
Даже опытные пользователи иногда сталкиваются с проблемами при умножении матриц. Вот самые распространённые ошибки и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! | Несовпадение размеров матриц | Проверьте, что количество столбцов первой матрицы равно количеству строк второй |
#ССЫЛКА! | Неверно указан диапазон | Убедитесь, что адреса ячеек в формуле корректны |
| Только одно значение в результате | Забыли Ctrl+Shift+Enter в старых версиях | Повторите ввод формулы как массива |
#ЧИСЛО! | Слишком большие числа | Используйте формат ячеек "Общий" или "Числовой" |
Особенно коварна ошибка, когда Excel не выдаёт никакого сообщения, но результат явно неверен. Например, если в одной из матриц есть пустые ячейки, они воспринимаются как нули, что искажает итог. Всегда проверяйте исходные данные на наличие пробелов или текстовых значений!
⚠️ Внимание: ФункцияМУМНОЖне работает с текстовыми данными. Если в матрице есть хотя бы одна ячейка с текстом (например, "N/A"), Excel вернёт ошибку#ЗНАЧ!. Преобразуйте все данные в числовой формат заранее.
Продвинутые приёмы: умножение матриц с условиями и автоматизация
Иногда требуется не просто перемножить матрицы, а сделать это с дополнительными условиями. Например, игнорировать нулевые значения или умножать только положительные элементы. Для этого можно комбинировать МУМНОЖ с другими функциями:
Пример 1. Умножение только положительных элементов:
=МУМНОЖ(
--(A1:C2>0)*A1:C2;
--(E1:F3>0)*E1:F3
)
Здесь двойной унарный минус (--) преобразует логические значения ИСТИНА/ЛОЖЬ в 1/0, а умножение на исходную матрицу обнуляет отрицательные элементы.
Пример 2. Автоматическое определение размера результирующей матрицы:
Если вы часто работаете с матрицами разного размера, можно использовать ИНДЕКС и ПОИСКПОЗ для динамического выделения диапазона:
=МУМНОЖ(
A1:ИНДЕКС(A:A; СЧЁТЗ(A:A); СЧЁТЗ(1:1));
E1:ИНДЕКС(E:E; СЧЁТЗ(E:E); СЧЁТЗ(1:1))
)
=МУМНОЖ(МУМНОЖ(A1:B2; D1:E2); G1:H2)
Это эквивалентно математической записи A × B × C.-->
Альтернативные способы: Power Query и VBA
Для обработки очень больших матриц (сотни строк и столбцов) стандартные функции Excel могут работать медленно. В таких случаях стоит рассмотреть:
- 📊 Power Query: Импортируйте матрицы как таблицы, затем используйте язык M для их умножения. Это особенно удобно, если данные хранятся во внешних источниках (SQL, CSV).
- 🤖 VBA: Напишите макрос для умножения матриц. Пример кода:
Function MatrixMultiply(rng1 As Range, rng2 As Range) As Variant' Код для умножения матриц
End Function
Такой подход даёт полный контроль над процессом и работает быстрее для больших datasets.
Power Query подходит для одноразовых операций, тогда как VBA удобен для повторяющихся задач. Если вы никогда не работали с макросами, начните с записи действия (Разработчик → Запись макроса) и модифицируйте полученный код.
Практические примеры применения умножения матриц
Давайте разберём реальные сценарии, где умножение матриц в Excel оказывается полезным:
Экономика: Расчёт затрат на производство, где матрица A — количество ресурсов на единицу продукции, а B — стоимость ресурсов. Результат покажет общую себестоимость.
Статистика: Преобразование данных (например, поворот матрицы корреляций) для факторного анализа.
Логистика: Оптимизация маршрутов, где матрицы описывают расстояния между пунктами и объёмы грузов.
Рассмотрим подробнее первый пример. Допустим, у вас есть:
- 📦 Матрица затрат (3×2): Строки — виды продукции (A, B), столбцы — ресурсы (материал, труд, энергия).
- 💰 Матрица цен (2×1): Стоимость каждого ресурса.
Тогда произведение этих матриц даст вектор себестоимости для каждого вида продукции.
Совет: Для наглядности используйте условное форматирование, чтобы выделить ячейки с максимальными значениями в результирующей матрице. Это поможет быстро идентифицировать самые затратные элементы.
FAQ: Ответы на частые вопросы
Можно ли умножить матрицу на число в Excel?
Да, для этого просто умножьте каждую ячейку матрицы на нужное число. Например, если число в ячейке D1, а матрица в A1:B2, используйте формулу массива: =A1:B2*D1 (не забудьте Ctrl+Shift+Enter в старых версиях).
Почему моя матрица после умножения содержит ошибки #ЧИСЛО!?
Это происходит, если в результате получаются слишком большие или слишком маленькие числа (переполнение). Попробуйте:
- Изменить формат ячеек на "Общий".
- Уменьшить масштаб исходных данных (например, делить все значения на 1000).
- Использовать функцию
ОКРУГЛдля приближённых вычислений.
Как умножить матрицу на транспонированную версию самой себя?
Сначала транспонируйте матрицу с помощью функции ТРАНСП, затем умножьте на оригинал. Пример:
=МУМНОЖ(A1:C2; ТРАНСП(A1:C2))
В Excel 365 транспонирование можно сделать динамически: =МУМНОЖ(A1:C2; ТРАНСП(A1:C2)).
Можно ли умножать матрицы в Google Sheets?
Да, в Google Таблицах используется та же функция MMULT, но она всегда работает как динамический массив (не требует Ctrl+Shift+Enter). Синтаксис: =MMULT(A1:C2; E1:F3).
Как проверить, правильно ли я умножил матрицы?
Вручную пересчитайте 2-3 элемента результирующей матрицы по формуле суммы произведений. Например, для c11 сложите произведения первой строки первой матрицы и первого столбца второй. Если значения совпадают — всё верно.