Введение: зачем умножать таблицы в Excel?
Умножение таблиц (матриц) в Microsoft Excel — задача, с которой сталкиваются аналитики, инженеры и финансовые специалисты. В отличие от привычного сложения или вычитания ячеек, перемножение двухмерных массивов требует специальных подходов: от ручного ввода формул до использования Power Query или VBA. Но зачем это нужно на практике?
Представьте: у вас есть таблица с данными о продажах по регионам (строки) и продуктам (столбцы), а вторая таблица содержит коэффициенты сезонности. Перемножив их, вы получите скорректированный прогноз продаж. Или другой пример: в инженерных расчётах матричное умножение помогает моделировать нагрузки на конструкции. Без этого инструмента многие аналитические задачи пришлось бы решать вручную — долго и с риском ошибок.
Ключевая сложность: Excel не поддерживает прямую команду "умножить таблицу А на таблицу Б". Но обходные пути есть — и мы разберём их все, от самых простых до автоматизированных.
Способ 1: Ручной ввод формулы умножения матриц
Самый универсальный, но трудоёмкий метод — использовать формулу массива с функцией СУММПРОИЗВ. Он подходит для таблиц любого размера, если количество столбцов первой матрицы совпадает с числом строк второй (условие согласованности).
Алгоритм действий:
- Выделите область для результата (размером строки первой матрицы × столбцы второй).
- Введите формулу:
=СУММПРОИЗВ(А1:С1;$A$4:$C$6)где
A1:C1— первая строка первой матрицы, а$A$4:$C$6— вторая матрица (абсолютные ссылки!). - Завершите ввод сочетанием
Ctrl+Shift+Enter(в новых версиях Excel формула автоматически станет массивом). - Растяните формулу на всю область результата.
Пример для матриц 2×3 и 3×2:
| Матрица 1 | × | Матрица 2 | = Результат | |||
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 19 | 22 |
| 4 | 5 | 6 | 6 | 7 | ||
| 8 | 9 | 43 | 50 | |||
⚠️ Внимание: Если после нажатияCtrl+Shift+Enterформула не обрамляется фигурными скобками{...}, проверьте настройки региональных параметров — в некоторых локализациях разделителем аргументов служит;, а не,.
Проверьте согласованность размеров (столбцы 1-й = строкам 2-й)
Выделите область результата (она должна быть пустой!)
Используйте абсолютные ссылки ($) для второй матрицы
Завершайте ввод горячими клавишами, а не Enter-->
Способ 2: Функция МУМНОЖ (для Excel 2013 и новее)
В современных версиях Excel появилась специализированная функция МУМНОЖ (MMULT), которая упрощает задачу. Она автоматически обрабатывает массивы и не требует ручного растягивания формул.
Синтаксис:
=МУМНОЖ(массив1; массив2)
Особенности использования:
- 🔹 Оба массива должны быть согласованными (число столбцов первого = числу строк второго).
- 🔹 Результат выводится в левую верхнюю ячейку выделенного диапазона.
- 🔹 В Excel 365 функция поддерживает динамические массивы — результат автоматически "проливается" на нужную область.
- 🔹 Для старых версий (2013–2019) после ввода формулы нажмите
Ctrl+Shift+Enter.
Пример для тех же матриц 2×3 и 3×2:
=МУМНОЖ(A1:C2; E1:F3)
⚠️ Внимание: Если в результате отображается ошибка#ЗНАЧ!, проверьте:
- Нет ли текстовых значений в исходных данных (все ячейки должны содержать числа).
- Совпадают ли размеры массивов (например, нельзя умножить 2×3 на 2×2).
Способ 3: Power Query для больших таблиц
Если вам нужно умножить таблицы размером более 100×100 ячеек, ручные методы становятся неэффективными. Здесь на помощь приходит Power Query — инструмент ETL (извлечение, преобразование, загрузка), встроенный в Excel 2016+.
Алгоритм:
- Преобразуйте исходные таблицы в "умные таблицы" (
Ctrl+T). - Перейдите на вкладку
Данные → Получить данные → Из таблицы/диапазона. - В редакторе Power Query создайте пользовательский столбец с формулой умножения (используйте язык M).
- Объедините таблицы по ключевым столбцам (если требуется).
Пример кода на языке M для умножения строки на столбец:
= Table.AddColumn(
Table1,
"Result",
each List.Sum(List.Transform(
{1, 2, 3}, // Коэффициенты второй матрицы
(x) => x * [Column1] // Умножение на текущую строку
))
)
Преимущества метода:
- 🔹 Обрабатывает миллионы строк без зависаний.
- 🔹 Позволяет комбинировать умножение с другими преобразованиями (фильтрация, сортировка).
- 🔹 Автоматически обновляет результат при изменении исходных данных.
Как ускорить работу Power Query?
Используйте "Свертку столбцов" (Group By) для предварительной агрегации данных.
Отключите загрузку промежуточных таблиц в модель (оставьте только финальный результат).
Для очень больших файлов сохраняйте данные в бинарном формате (.bkp) вместо Excel.
Способ 4: VBA для автоматизации
Если вам нужно умножать таблицы регулярно, имеет смысл написать макрос на VBA. Это устранит ручной ввод формул и сократит время обработки.
Пример кода для умножения двух матриц:
Sub MatrixMultiply()
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 ' Первая матрица (2x3)
Matrix2 = Range("E1:F3").Value ' Вторая матрица (3x2)
Rows1 = UBound(Matrix1, 1)
Cols1 = UBound(Matrix1, 2)
Rows2 = UBound(Matrix2, 1)
Cols2 = UBound(Matrix2, 2)
' Проверка согласованности
If Cols1 <> Rows2 Then
MsgBox "Невозможно умножить: число столбцов первой матрицы не равно числу строк второй!"
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("H1").Resize(Rows1, Cols2).Value = Result
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Настройте диапазоны
Range("A1:C2")иRange("E1:F3")под свои данные. - Запустите макрос клавишей
F5.
⚠️ Внимание: Макросы могут конфликтовать с защитой листа. Перед запуском проверьте, разблокированы ли ячейки для записи (Формат → Защита → Защищаемая ячейка).
Способ 5: Онлайн-калькуляторы и надстройки
Если вам нужно разово умножить матрицы или вы работаете в Excel Online (где нет Power Query/VBA), воспользуйтесь внешними инструментами:
- 🌐 Matrix Calculator (matrixcalc.org) — бесплатный веб-сервис с поддержкой до 20×20.
- 📊 Wolfram Alpha — введите запрос "matrix {{1,2},{3,4}} * {{5,6},{7,8}}".
- 🔧 Надстройка "Matrix Operations" для Excel (плагины из Microsoft AppSource).
Как импортировать результат обратно в Excel:
- Скопируйте результирующую матрицу из онлайн-калькулятора.
- В Excel выделите левую верхнюю ячейку области вставки.
- Используйте
Специальная вставка → Значения(илиCtrl+Alt+V → V).
Предупреждение: онлайн-сервисы не подходят для конфиденциальных данных — передача информации происходит через сторонние серверы.
Сравнение методов: какой выбрать?
Выбор способа зависит от размера таблиц, частоты использования и ваших навыков. Ниже сравнительная таблица:
| Метод | Макс. размер | Скорость | Автоматизация | Сложность |
|---|---|---|---|---|
| Ручная формула | ~50×50 | Медленно | Нет | Низкая |
| МУМНОЖ | ~100×100 | Средне | Частично | Средняя |
| Power Query | Миллионы строк | Быстро | Да | Высокая |
| VBA | ~1000×1000 | Очень быстро | Да | Высокая |
| Онлайн-сервисы | ~20×20 | Мгновенно | Нет | Низкая |
Рекомендации:
- 📌 Для разовых задач с маленькими матрицами (до 10×10) хватит
СУММПРОИЗВилиМУМНОЖ. - 📌 Для еженедельных отчётов с фиксированной структурой напишите VBA-макрос.
- 📌 Для Big Data (более 10 000 строк) используйте Power Query или специализированное ПО (Python, R).
FAQ: Частые вопросы по умножению таблиц
Можно ли умножить таблицы разного размера?
Да, но только если число столбцов первой матрицы равно числу строк второй. Например, матрицу 2×3 можно умножить на 3×4, но не на 2×2. Это правило называется условием согласованности.
Почему вместо результата отображается #ЗНАЧ!?
Ошибка #ЗНАЧ! возникает по трём причинам:
- В исходных данных есть текст или пустые ячейки (все элементы должны быть числами).
- Размеры матриц не согласованы (см. вопрос выше).
- Вы забыли нажать
Ctrl+Shift+Enterдля формулы массива (в Excel 2019 и старше это не требуется).
Как умножить таблицу на число (скаляр)?
Для этого не нужны специальные функции. Просто умножьте каждую ячейку на число:
=A1*5
и растяните формулу на весь диапазон. Или используйте Специальную вставку → Умножить:
- Скопируйте ячейку со скаляром (например,
5). - Выделите таблицу, куда нужно применить умножение.
- Выберите
Главная → Вставить → Специальная вставка → Умножить.
Есть ли разница между МУМНОЖ и ручным методом?
По результату — нет, но МУМНОЖ имеет преимущества:
- Короче запись (одна функция вместо вложенных
СУММПРОИЗВ). - В Excel 365 поддерживает динамические массивы (автоматическое заполнение области).
- Меньше риск ошибок при копировании формул.
Однако в старых версиях Excel (2010 и ранее) МУМНОЖ недоступна — придётся использовать ручной метод.
Можно ли умножить три таблицы подряд?
Да, но нужно делать это поэтапно:
- Умножьте первые две матрицы (например,
МУМНОЖ(A1:B2; D1:F2)). - Скопируйте результат в новый диапазон (как значения).
- Умножьте полученную матрицу на третью:
МУМНОЖ(H1:I2; K1:L3).
В VBA или Power Query это можно сделать в одном шаге, но вручную — только последовательно.