Как посчитать произведение матриц в Excel: формулы, примеры и лайфхаки

Умножение матриц — одна из ключевых операций в линейной алгебре, которая часто применяется в экономике, статистике и инженерных расчётах. Однако в 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)
12345
45667
89

То элемент c11 результирующей матрицы будет равен: 1×4 + 2×6 + 3×8 = 40. Именно поэтому попытка перемножить матрицы побитово (ячейка на ячейку) в Excel приведёт к неверному результату — программа просто не понимает контекст матричной алгебры.

📊 Как часто вы работаете с матрицами в Excel?
Ежедневно
Несколько раз в месяц
Рядом
Никогда

Метод 1: Функция МУМНОЖ для старых версий Excel (2019 и ранее)

В версиях Excel до 2021 года для умножения матриц используется функция МУМНОЖ (англ. MMULT). Она требует обязательного ввода как массива формул, что многих пользователей сбивает с толку. Вот пошаговая инструкция:

  1. Введите первую матрицу в диапазон, например, A1:C2 (2 строки × 3 столбца).

  2. Вторую матрицу разместите так, чтобы количество её строк совпадало с количеством столбцов первой (например, E1:F3 для 3×2).

  3. Выделите диапазон для результата (в нашем случае — 2×2, например H1:I2).

  4. Введите формулу: =МУМНОЖ(A1:C2; E1:F3).

  5. Нажмите 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 появилась поддержка динамических массивов, которые автоматически "проливаются" на соседние ячейки. Теперь для умножения матриц достаточно:

  1. Разместить матрицы на листе (например, A1:B2 и D1:F2).

  2. В любой ячейке (например, H1) ввести: =МУМНОЖ(A1:B2; D1:F2).

  3. Нажать 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 оказывается полезным:

  1. Экономика: Расчёт затрат на производство, где матрица A — количество ресурсов на единицу продукции, а B — стоимость ресурсов. Результат покажет общую себестоимость.

  2. Статистика: Преобразование данных (например, поворот матрицы корреляций) для факторного анализа.

  3. Логистика: Оптимизация маршрутов, где матрицы описывают расстояния между пунктами и объёмы грузов.

Рассмотрим подробнее первый пример. Допустим, у вас есть:

  • 📦 Матрица затрат (3×2): Строки — виды продукции (A, B), столбцы — ресурсы (материал, труд, энергия).
  • 💰 Матрица цен (2×1): Стоимость каждого ресурса.

Тогда произведение этих матриц даст вектор себестоимости для каждого вида продукции.

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

FAQ: Ответы на частые вопросы

Можно ли умножить матрицу на число в Excel?

Да, для этого просто умножьте каждую ячейку матрицы на нужное число. Например, если число в ячейке D1, а матрица в A1:B2, используйте формулу массива: =A1:B2*D1 (не забудьте Ctrl+Shift+Enter в старых версиях).

Почему моя матрица после умножения содержит ошибки #ЧИСЛО!?

Это происходит, если в результате получаются слишком большие или слишком маленькие числа (переполнение). Попробуйте:

  1. Изменить формат ячеек на "Общий".
  2. Уменьшить масштаб исходных данных (например, делить все значения на 1000).
  3. Использовать функцию ОКРУГЛ для приближённых вычислений.
Как умножить матрицу на транспонированную версию самой себя?

Сначала транспонируйте матрицу с помощью функции ТРАНСП, затем умножьте на оригинал. Пример:

=МУМНОЖ(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 сложите произведения первой строки первой матрицы и первого столбца второй. Если значения совпадают — всё верно.