Произведение матриц в Excel: 5 способов с примерами и формулами

Перемножение матриц в Microsoft Excel — задача, с которой сталкиваются студенты, инженеры и аналитики данных. Хотя программа не имеет встроенной кнопки "Умножить матрицы", она предоставляет несколько мощных инструментов для выполнения этой операции: от стандартной функции МУМНОЖ до использования массивов формул и даже VBA-скриптов. В этой статье мы разберём все актуальные методы с пошаговыми инструкциями, нюансами и типичными ошибками.

Важно понимать, что умножение матриц отличается от поэлементного умножения: здесь каждое значение результирующей матрицы вычисляется как сумма произведений элементов строки первой матрицы и столбца второй. Например, для матриц 2×3 и 3×2 результат будет 2×2. Если вы никогда не работали с матричными операциями, рекомендуем сначала ознакомиться с основами в конце статьи.

1. Способ: функция МУМНОЖ (для Excel 2019 и старше)

Самый простой метод — использовать встроенную функцию МУМНОЖ (англ. MMULT). Она доступна во всех версиях Excel начиная с 2007 года, но в новых редакциях (2019+) работает стабильнее и поддерживает динамические массивы.

Инструкция:

  • 📌 Выделите область для результата (количество строк = строкам 1-й матрицы, столбцов = столбцам 2-й).
  • 📝 Введите формулу: =МУМНОЖ(массив1; массив2), где массив1 и массив2 — диапазоны ячеек с матрицами.
  • ⌨️ Нажмите Ctrl+Shift+Enter (для старых версий) или просто Enter (для Excel 365).

Пример: если первая матрица в A1:C2, а вторая в E1:F3, формула будет =МУМНОЖ(A1:C2; E1:F3). Результат автоматически заполнит диапазон 2×2.

⚠️ Внимание: Если количество столбцов первой матрицы не равно количеству строк второй, Excel вернёт ошибку #ЗНАЧ!. Проверьте размерности заранее.

2. Способ: массивы формул (для старых версий Excel)

В Excel 2016 и более ранних версиях функция МУМНОЖ требует ввода как формула массива. Это означает, что после ввода нужно нажать Ctrl+Shift+Enter, а не просто Enter.

Пошаговый алгоритм:

  1. Выделите диапазон для результата (например, G1:H2 для матриц 2×3 и 3×2).
  2. Введите формулу: =МУМНОЖ(A1:C2; E1:F3).
  3. Завершите ввод комбинацией Ctrl+Shift+Enter.

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

Почему не работает Ctrl+Shift+Enter?

Если комбинация не срабатывает, проверьте:

1. Выделен ли правильный диапазон результата (размер должен совпадать с ожидаемой матрицей).

2. Нет ли в ячейках результата других данных (они должны быть пустыми).

3. Не используется ли Excel Online — там массивы не поддерживаются.

3. Способ: ручное умножение с функцией СУММПРОИЗВ

Если вам нужно понять как именно вычисляется произведение матриц, используйте функцию СУММПРОИЗВ (англ. SUMPRODUCT). Она позволяет вручную умножить строку на столбец и просуммировать результаты.

Пример для ячейки G1 (первый элемент результирующей матрицы):

=СУММПРОИЗВ(A1:C1; E1:E3)

Здесь A1:C1 — первая строка первой матрицы, а E1:E3 — первый столбец второй матрицы. Скопируйте формулу на остальные ячейки, корректируя диапазоны.

Матрица 1 (A)×Матрица 2 (B)=Результат (C)
[1 2 3]×[4 7]=[32 50]
[4 5 6][5 8][77 122]
[6 9]

В этом примере элемент C11 (32) вычисляется как 1×4 + 2×5 + 3×6.

📊 Какой способ умножения матриц вы используете чаще?
Функция МУМНОЖ
Ручной ввод СУММПРОИЗВ
VBA-скрипты
Другие программы (Python, MATLAB)
Не работал с матрицами

4. Способ: умножение матриц через Power Query

Для обработки больших матриц (100×100 и более) удобно использовать Power Query — инструмент ETL (извлечение, преобразование, загрузка) в Excel. Он позволяет умножать матрицы без формул, что ускоряет вычисления.

Алгоритм:

  • 📊 Преобразуйте обе матрицы в таблицы (Ctrl+T).
  • 🔄 Перейдите на вкладку Данные → Получить данные → Из таблицы/диапазона.
  • 🛠️ В редакторе Power Query используйте Мердж таблиц (Merge Queries) с операцией умножения.
  • 📥 Загрузите результат обратно в Excel.

Этот метод требует навыков работы с Power Query, но подходит для обработки данных объёмом более 10 000 ячеек, где стандартные формулы тормозят.

Убедитесь, что матрицы имеют одинаковое количество столбцов/строк

Преобразуйте диапазоны в таблицы (Ctrl+T)

Проверьте отсутствие пустых ячеек

Сохраните файл перед началом работы-->

5. Способ: VBA-скрипт для автоматизации

Если вам нужно умножать матрицы регулярно, напишите макрос на VBA. Это ускорит процесс и позволит обрабатывать динамические данные.

Пример кода для умножения матриц:

Sub MultiplyMatrices()

Dim Matrix1 As Variant, Matrix2 As Variant, Result() As Double

Dim i As Long, j As Long, k As Long

Dim Rows1 As Long, Cols1 As Long, Rows2 As Long, Cols2 As Long

' Задаём диапазоны матриц

Matrix1 = Range("A1:C2").Value

Matrix2 = Range("E1:F3").Value

Rows1 = UBound(Matrix1, 1)

Cols1 = UBound(Matrix1, 2)

Rows2 = UBound(Matrix2, 1)

Cols2 = UBound(Matrix2, 2)

' Проверяем совместимость размеров

If Cols1 <> Rows2 Then

MsgBox "Количество столбцов первой матрицы не равно количеству строк второй!", vbCritical

Exit Sub

End If

' Инициализируем результирующую матрицу

ReDim Result(1 To Rows1, 1 To Cols2)

' Умножение матриц

For i = 1 To Rows1

For j = 1 To Cols2

For k = 1 To Cols1

Result(i, j) = Result(i, j) + Matrix1(i, k) * Matrix2(k, j)

Next k

Next j

Next i

' Выводим результат

Range("G1").Resize(Rows1, Cols2).Value = Result

End Sub

Чтобы использовать этот скрипт:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Запустите макрос через F5 или кнопку Run.
⚠️ Внимание: Макрос перезапишет данные в диапазоне G1 и далее. Убедитесь, что там нет важной информации, или измените диапазон вывода в коде.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel допускают ошибки при умножении матриц. Вот самые распространённые:

  • 🔢 Несовпадение размеров: количество столбцов первой матрицы должно равняться количеству строк второй. Проверяйте это правило перед вычислениями.
  • 📉 Округление результатов: Excel может округлять большие числа. Используйте формат ячеек Числовой с максимальной точностью.
  • 🔄 Копирование формул: при ручном умножении через СУММПРОИЗВ легко ошибиться в диапазонах. Фиксируйте их с помощью $ (например, $A1:$C1).
  • 🚫 Пустые ячейки: если в матрице есть пустые ячейки, Excel воспримет их как 0, что исказит результат. Заполняйте все ячейки или используйте ЕСЛИОШИБКА.

Excel не поддерживает умножение матриц размером более 2^20 элементов (около 1 млн ячеек). Для больших вычислений используйте специализированное ПО вроде MATLAB или Python с библиотекой NumPy.

Основы умножения матриц: что нужно знать

Если вы впервые сталкиваетесь с матричными операциями, запомните ключевые правила:

  • 📏 Размерность результата: если матрица A имеет размер m×n, а матрица Bn×p, то результат C = A × B будет размером m×p.
  • 🔄 Некоммутативность: A × B ≠ B × A (порядок важен!).
  • 📊 Единичная матрица: умножение любой матрицы на единичную (с единицами на диагонали) даёт исходную матрицу.

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

[a b] [e g] [ae+bf ag+bh]

× [c d] × [f h] = [ce+df cg+dh]

FAQ: Частые вопросы по умножению матриц в Excel

Можно ли умножить матрицы разного размера?

Да, но только если количество столбцов первой матрицы равно количеству строк второй. Например, матрицу 2×3 можно умножить на 3×4, но не на 2×2.

Почему Excel выдаёт ошибку #ЗНАЧ! при умножении?

Эта ошибка появляется в трёх случаях:

  1. Несовпадение размеров матриц (см. предыдущий вопрос).
  2. В ячейках содержатся текстовые значения вместо чисел.
  3. В старых версиях Excel не нажали Ctrl+Shift+Enter для массива.
Как умножить матрицу на число (скаляр)?

Используйте простую формулу умножения: =A1*5, где 5 — ваше число. Скопируйте её на весь диапазон матрицы. Или примените функцию ПРОИЗВЕД для диапазона: =ПРОИЗВЕД(A1:C3; 5).

Есть ли альтернативы Excel для работы с матрицами?

Для сложных вычислений лучше использовать:

  • Python с библиотекой NumPy (функция np.dot()).
  • MATLAB или Octave (оператор *).
  • Google Sheets (функция MMULT работает аналогично).
Можно ли транспонировать матрицу перед умножением?

Да, используйте функцию ТРАНСП (англ. TRANSPOSE). Например: =МУМНОЖ(A1:C2; ТРАНСП(E1:G2)). Не забудьте ввести её как формулу массива (Ctrl+Shift+Enter в старых версиях).