Перемножение одной матрицы на другую в microsoft excel
Содержание:
- Выполнение расчетов
- Операции с массивами
- Анализ данных с помощью формулы массива
- 2.7. Регрессия
- Как умножить столбец в Excel на число?
- Как умножать в «Экселе» ячейки между собой?
- 3.3. Пример макроса
- Векторизуем внутренний цикл (2-й шаг)
- Свойства определителя
- Пример 1: умножаем число на число
- 1.10. Построение графиков
- Формулы массива в Excel
- 1.3. Адресация
- 2.9. Виртуальный массив
Выполнение расчетов
Вычисление обратной матрицы в Excel возможно только в том случае, если первичная матрица является квадратной, то есть количество строк и столбцов в ней совпадает. Кроме того, её определитель не должен быть равен нулю. Для вычисления применяется функция массива МОБР. Давайте на простейшем примере рассмотрим подобное вычисление.
Расчет определителя
Прежде всего, вычислим определитель, чтобы понять, имеет первичный диапазон обратную матрицу или нет. Это значение рассчитывается при помощи функции МОПРЕД.
- Выделяем любую пустую ячейку на листе, куда будут выводиться результаты вычислений. Жмем на кнопку «Вставить функцию», размещенную около строки формул.
- Запускается Мастер функций. В перечне записей, который он представляет, ищем «МОПРЕД», выделяем этот элемент и жмем на кнопку «OK».
- Открывается окно аргументов. Ставим курсор в поле «Массив». Выделяем весь диапазон ячеек, в котором расположена матрица. После того, как его адрес появился в поле, жмем на кнопку «OK».
- Программа производит расчет определителя. Как видим, для нашего конкретного случая он равен – 59, то есть не тождественен нулю. Это позволяет сказать, что у данной матрицы существует обратная.
Расчет обратной матрицы
Теперь можно преступить к непосредственному расчету обратной матрицы.
- Выделяем ячейку, которая должна стать верхней левой ячейкой обратной матрицы. Переходим в Мастер функций, кликнув по значку слева от строки формул.
- В открывшемся списке выбираем функцию МОБР. Жмем на кнопку «OK».
- В поле «Массив», открывшегося окна аргументов функции, устанавливаем курсор. Выделяем весь первичный диапазон. После появления его адреса в поле, жмем на кнопку «OK».
- Как видим, появилось значение только в одной ячейке, в которой была формула. Но нам нужна полноценная обратная функция, поэтому следует скопировать формулу в другие ячейки. Выделяем диапазон, равнозначный по горизонтали и вертикали исходному массиву данных. Жмем на функциональную клавишу F2, а затем набираем комбинацию Ctrl+Shift+Enter. Именно последняя комбинация предназначена для обработки массивов.
- Как видим, после этих действий обратная матрица вычислена в выделенных ячейках.
На этом расчет можно считать завершенным.
Если вы производите расчет определителя и обратной матрицы только при помощи ручки и бумаги, то над этим вычислением, в случае работы над сложным примером, можно ломать голову очень долго. Но, как видим, в программе Эксель данные вычисления производятся очень быстро, независимо от сложности поставленной задачи. Для человека, который знаком с алгоритмом подобных расчетов в этом приложении, все вычисление сводится к чисто механическим действиям.
Мы рады, что смогли помочь Вам в решении проблемы.
Помогла ли вам эта статья?
Нахождение обратной матрицы всегда вызывало большие затруднения у учащихся, так как это был очень трудоемкий процесс. И вот такое задание вполне по силам EXCEL.
Прежде всего, уясним одно правило: Матрица имеет обратную только тогда, когда ее определитель не равен нулю. А вот и задание: найдите матрицу, обратную к матрице А, где
Вычислять определитель этой матрицы мы умеем. Я его уже вычислил.
Он оказался равен -4, а это значит, что у нашей матрицы есть обратная (если бы определитель оказался равен нулю, то мы сказали бы что матрица не имеет обратную и немедленно прекратили все вычисления). Теперь отметим ячейку, с которой начнем записывать ответ. Я отметил ячейку E1. Нажимаем Формулы, затем Математические и в появившемся окне находим МОБР
После нажатия появляется вот такое окно, в котором надо вписать адреса ячеек, в которых находятся элементы матрицы в Массив
У нас элементы записаны в ячейки начиная с А1 и заканчивая в С3 , поэтому так и записываем (смотрите картинку)
Если все сделали правильно, то автоматически заполнится место, обведенное красным и запишется ответ, который обведен черным. В таком виде ответ трудно переваривать и поэтому нажимаем ОК. В ячейке, которую мы застолбили под ответ, появилось число 3, Это только первый элемент полученной обратной матрицы.
Чтобы виден был весь ответ, выполняем следующие действия: Начиная с ячейки Е1 выделяем три строчки и три столбца (именно столько было у исходной матрицы и столько же будет у обратной)
нажимаем клавишу F2, а затем на одновременно на три клавиши Ctrl+Shift+Enter.
В выделенном месте появляются, теперь уже все, элементы обратной матрицы. Если Вы сохраните этот документ, то в следующий раз можете воспользоваться плодами своего труда. Так, меняя элементы исходной матрицы, Вы автоматически получаете для нее же обратную матрицу.
На этом все. Крепких вам знаний.
Рубрика: EXCEL в помощь, Статьи. Метки: EXCEL, ИКТ, матрица, обратная матрица
Операции с массивами
Массив – это группа данных, которая расположена на листе в смежных ячейках. По большому счету, любую таблицу можно считать массивом, но не каждый из них является таблицей, так как он может являться просто диапазоном. По своей сущности такие области могут быть одномерными или двумерными (матрицы). В первом случае все данные располагаются только в одном столбце или строке.
Во втором — в нескольких одновременно.
Кроме того, среди одномерных массивов выделяют горизонтальный и вертикальный тип, в зависимости от того, что они собой представляют – строку или столбец.
Нужно отметить, что алгоритм работы с подобными диапазонами несколько отличается от более привычных операций с одиночными ячейками, хотя и общего между ними тоже много. Давайте рассмотрим нюансы подобных операций.
Создание формулы
Формула массива – это выражение, с помощью которого производится обработка диапазона с целью получения итогового результата, отображаемого цельным массивом или в одной ячейке. Например, для того, чтобы умножить один диапазон на второй применяют формулу по следующему шаблону:
Над диапазонами данных можно также выполнять операции сложения, вычитания, деления и другие арифметические действия.
Координаты массива имеют вид адресов первой её ячейки и последней, разделенные двоеточием. Если диапазон двумерный, то первая и последняя ячейки расположены по диагонали друг от друга. Например, адрес одномерного массива может быть таким: A2:A7.
А пример адреса двумерного диапазона выглядит следующим образом: A2:D7.
- Чтобы рассчитать подобную формулу, нужно выделить на листе область, в которую будет выводиться результат, и ввести в строку формул выражение для вычисления.
После ввода следует нажать не на кнопку Enter, как обычно, а набрать комбинацию клавиш Ctrl+Shift+Enter. После этого выражение в строке формул будет автоматически взято в фигурные скобки, а ячейки на листе будут заполнены данными, полученными в результате вычисления, в пределах всего выделенного диапазона.
Изменение содержимого массива
Если вы в дальнейшем попытаетесь удалить содержимое или изменить любую из ячеек, которая расположена в диапазоне, куда выводится результат, то ваше действие окончится неудачей. Также ничего не выйдет, если вы сделаете попытку отредактировать данные в строке функций. При этом появится информационное сообщение, в котором будет говориться, что нельзя изменять часть массива. Данное сообщение появится даже в том случае, если у вас не было цели производить какие-либо изменения, а вы просто случайно дважды щелкнули мышью по ячейке диапазона.
Если вы закроете, это сообщение, нажав на кнопку «OK», а потом попытаетесь переместить курсор с помощью мышки, или просто нажмете кнопку «Enter», то информационное сообщение появится опять. Не получится также закрыть окно программы или сохранить документ. Все время будет появляться это назойливое сообщение, которое блокирует любые действия. А выход из ситуации есть и он довольно прост
- Закройте информационное окно, нажав на кнопку «OK».
Затем нажмете на кнопку «Отмена», которая расположена в группе значков слева от строки формул, и представляет собой пиктограмму в виде крестика. Также можно нажать на кнопку Esc на клавиатуре. После любой из этих операций произойдет отмена действия, и вы сможете работать с листом так, как и прежде.
Но что делать, если действительно нужно удалить или изменить формулу массива? В этом случае следует выполнить нижеуказанные действия.
Для изменения формулы выделите курсором, зажав левую кнопку мыши, весь диапазон на листе, куда выводится результат
Это очень важно, так как если вы выделите только одну ячейку массива, то ничего не получится. Затем в строке формул проведите необходимую корректировку
После того, как изменения внесены, набираем комбинацию Ctrl+Shift+Esc. Формула будет изменена.
- Для удаления формулы массива нужно точно так же, как и в предыдущем случае, выделить курсором весь диапазон ячеек, в котором она находится. Затем нажать на кнопку Delete на клавиатуре.
После этого формула будет удалена со всей области. Теперь в неё можно будет вводить любые данные.
Анализ данных с помощью формулы массива
Формулы массива очень удобно использовать, если стоит задача анализировать информацию. В частности, можно проверять ее на предмет соответствия определенному критерию. Допустим, у нас есть такая таблица, в которой описываются продажи разными менеджерами. В одном отделе работает три сотрудника, а также продается три вида товаров. Ну и наконец, каждый из них имеет свою цену, а итоговая стоимость записывается в третьей колонке таблицы.
17
Перед нами стоит задача определить, насколько каждый из менеджеров является эффективным, учитывая продаваемые ими товары. Это можно сделать и самостоятельно, но с помощью формулы массива данную задачу можно выполнить буквально в несколько кликов.
Давайте запишем в подходящих ячейках информацию, которая будет служить критерием для оценки эффективности. В нашем случае это товар и идентификатор менеджера, которого мы проверяем.
18
Чтобы успешно решить эту задачу, достаточно просто воспользоваться небольшой формулой массива.
Конечная наша цель – получение суммы, поэтому нужно использовать соответствующую функцию. Кроме этого, нам надо применить условие, на соответствие которым будет проверяться диапазон.
В результате получится формула, приведенная на скриншоте.
19
В ней используется 3 множителя. Первый проверяет менеджеров. Второй – товары. А третий – непосредственно определяет сумму заказа.
Как работает эта формула? Да очень просто. Ее алгоритм следующий:
-
Сначала Excel проверяет всех менеджеров и товары, соответствуют ли они заданным критериям. Если да, функция возвращает значение 1, если нет – 0.
- В случае несоответствия значений хотя бы одному из условий, один из множителей становится равным нулю. Соответственно, и итоговый результат будет аналогичным.
- Если же оба условия выполняются, то функция осуществляет операцию умножения.
- Наконец, все полученные значения суммируются, после чего ячейка выдает общую эффективность по обработанным заказам.
Вот таким образом можно простую формулу использовать, чтобы выполнять даже самую сложную обработку информации. В конечном итоге, можно несколько модернизировать отчет, добавив выпадающий список, в котором выбираются товары и менеджеры. Но это уже совсем другая тема.
2.7. Регрессия
Для построения используются
несколько стандартных функций листа.
TREND / ТЕНДЕНЦИЯ
Строит
y=b+m1x1+…+mJ xJ+e
Аппроксимирует известные значения вектора откликов
known_y’s для заданных значений матрицы предикторов
known_x’s и возвращает значения y,
для заданного массива new_x’s.
Синтаксис
TREND(known_y’s
)
Примечания
-
Вектор
known_y’s должен занимать один столбец,
тогда каждый столбец матрицы массива known_x’s
интерпретируется как отдельная переменная; -
Если
аргумент known_x’sопущен, то предполагается, что это вектор чисел {1;2;3;…}
такого же размера, как и known_y’s; -
Матрица
новых значений new_x’sдолжна иметь столько же столбцов
(переменных), как и матрица known_x’s; -
Если
аргумент new_x’sопущен, то предполагается, что он совпадает с
массивом known_x’s.
Результат является вектором, в котором число строк равно
числу строк в массиве new_x’s.
Пример
Рис.34 Функция TREND
Функция TRENDявляется функцией
массива и ее ввод должен завершаться нажатием комбинации
CTRL+SHIFT+ENTER.
LINEST /
ЛИНЕЙН
Дополняет функцию TREND и выводит некоторые
статистические значения, связанные с регрессией
y=b+m1x1+…+mJ xJ+e
Синтаксис
LINEST(known_y’s
)
Рис. 35 Таблица вывода функция LINEST
mJ, …,
m2, m1
и b – оценки регрессионных
коэффициентов;
sJ, …,
s2, s1
и sb
– стандартные ошибки для оценок регрессионных коэффициентов;
R2 –
коэффициент детерминации;
sy –
стандартная ошибка оценки y;
F – F-статистика;
DoF – число степеней
свободы;
SSreg –
регрессионная сумма квадратов;
SSres–
остаточная сумма квадратов.
Примечания
-
LINEST – это
очень плохо сконструированная функция, очень неудобная в
практическом применении; -
Примечания,
представленные в описании функции полностью применимы к
функции LINEST.
Пример
Рис.36 Функция LINEST
Функция LINEST является функцией массива и ее ввод должен
завершаться нажатием комбинации CTRL+SHIFT+ENTER.
Как умножить столбец в Excel на число?
Для умножения столбца в Экселе на число можно составить формулу, указав в ней коэффициент умножения, а можно и без всяких формул через меню умножить весь выделенный диапазон значений на любое число.
Если число, на которое будут умножаться ячейки, находится в ячейке таблицы, то ссылку на эту ячейку в формуле нужно будет сделать абсолютной, чтобы она не менялась при применении формулы к другим ячейкам.
Также в Экселе есть возможность умножения диапазона значений на число с помощью специальной вставки с заменой исходных значений. Для этого нам понадобится скопировать наше число коэффициент в буфер обмена, выделить диапазон ячеек для умножения, и на вкладке «Главная»
в меню «Вставить»
выбрать «Специальная вставка…»
. Или такой же пункт выбрать в меню после нажатия на выделенный диапазон правой кнопкой мыши.
В появившемся окошке в графе «Операция»
выбираем «Умножить»
.
В дальнейшем число коэффициент поменять уже нельзя и все значения останутся неизменными.
В Экселе имеется функция ПРОИЗВЕД
, которая производит перемножение всех указанных в ней аргументов. Обязательный параметр только первый, в котором можно указать диапазон ячеек. Также можно выборочно перечислять ячейки через разделитель точка с запятой.
Как умножать в «Экселе» ячейки между собой?
В наши дни одним из самых популярных средств для сложных вычислений является программа Microsoft Excel. Её широкий функционал позволяет упростить решение множества задач, на которые раньше приходилось тратить немало времени. Сегодня мы рассмотрим, как умножать в «Экселе» ячейки между собой в больших количествах.
Прежде чем разобраться, как умножать в «Экселе» числа, стоит отметить широкую функциональность программы, позволяющей работать как с явным заданием чисел, так и с использованием ячеек, содержащих в себе и сами числа, и формулы, их определяющие. Для того чтобы умножить одну или несколько ячеек на число или другие ячейки, необходимо в строке формул после знака равенства указать данные элементы листа или записать значение самостоятельно.
Далее стоит уяснить принцип, как в «Экселе» умножить ячейку на ячейку и с какими проблемами можно встретиться в процессе. Для перемножения значений двух ячеек необходимо в строке формул прописать следующую конструкцию: «=А*В», где «А» и «В» — ссылки на соответствующие элементы листа «Экселя», то есть ячейки.
Получив результат, может потребоваться создание его копии, и нередко пользователи, не задумываясь, просто копируют значение этой ячейки, вставляя его в другую. Однако при таком подходе произойдёт изменение и соответствующих ссылок, указывавших на множители. Для того чтобы избежать такой ошибки, следует либо в ячейке, куда необходимо скопировать результат, ввести ссылку на копируемую ячейку, либо «зафиксировать» адрес её множителей с помощью знака «$». Знак доллара сохраняет значение ссылки по параметру, следующему за ним — то есть ссылка $A4 будет всегда относиться к столбцу А, A$4 — к четвертой строке, а $A$4 — только к ячейке А4. Другими словами, фиксация ячейки — создание абсолютной ссылки на неё.
Пользуясь алгоритмом закрепления адреса ячейки, можно перейти непосредственно к тому, как умножить в «Экселе» столбец на столбец или строку на строку. Чтобы не терять время на написание громадной формулы, можно просто воспользоваться свойством изменения ссылки на ячейку при переносе на новый адрес указателя. То есть, если необходимо перемножить попарно значения в двух столбцах, достаточно записать формулу умножения для первой пары ячеек, после чего, удерживая знак «чёрный плюс», появившийся в правом нижнем углу, растянуть результат вниз, вдоль всех значений столбцов-множителей.
Для того чтобы добиться аналогичного результата для строк, необходимо лишь произвести растягивание результата вдоль соответствующих строк. Стоит отметить: для того чтобы избежать сдвига при дальнейшем копировании результатов, нужно в формуле закрепить указанный столбец или строку — тогда удастся избежать ошибок при вычислении.
3.3. Пример макроса
Второй способ опирается на рекуррентное соотношение,
связывающее два соседних члена в ряду
Для того чтобы воспользоваться этим соотношением, надо
организовать на листе рекуррентную процедуру. Например, так, как
показано на Рис. 42
Рис.42 Вычисление функции E1(x)
итерационным способом
Один шаг итерации – это переход от значений в области
J2:J4 к значениям в области
L2:L4. Для того, чтобы сделать следующую
итерацию, нужно скопировать значения, получившиеся в области
L2:L4 и вставить их в область
J2:J4. При этом вставлять нужно только
величины, без формул. Величины в области H2:H4
дают исходные значения для начала итерации .Повторяя многократно
операцию Copy-Paste Special, можно получить в
ячейке L4 искомое значение. Однако
копирование – это скучное занятие и его было бы неплохо
автоматизировать. Для этого можно написать макрос.
Проще всего начать создание макроса через запись команд,
выполняемых на листе. Для этого идем в раздел меню Tools–Macro–Record
New Macro. Появляется окно (Рис. 43), в котором можно указать имя
макроса и где он будет расположен.
Рис.43 Запись макро
После нажатия OK начинается
запись всех действий, выполняемых на листе. Когда все, что нужно
сохранено в макросе, запись надо остановить командой
Tools–Macro–Stop Recording. Результат можно увидеть, зайдя в
.
Рис.44 Редактор Visual Basic
На Рис. 44 показан записанный макрос, который мы подвергли
небольшому редактированию – добавили цикл для повтора операции
Copy-Paste в числе nIter
раз. Величина nIter берется со
страницы из ячейки J6,
имеющей локальное имя n. Завершает
автоматизацию кнопка Repeat, к которой
привязан макрос Iteration.
Такой подход использовался нами для построения
алгоритмов и в многомерном разрешении кривых.
Векторизуем внутренний цикл (2-й шаг)
- Компиляторы нынче умные пошли (не все!), и вполне справляются с задачей автовекторизации простых циклов. Уже в 1-м варианте компилятор фактически задействовал инструкции AVX2/FMA, потому ручная оптимизация не дала нам практически никаких преимуществ.
- Скорость расчетов в данном случае упирается не в вычислителные возможности процессора, а в скорость загрузки и выгрузки данных. В данном случае процессору для задействования 2 256-bit FMA блоков требуется загрузить 4 и выгрузить 2 256-bit вектора за такт. Это в два раза превышает даже пропускную способность L1 кеша процессора (512/256 bit), не говоря уже о пропускной способности памяти, которая еще на порядок меньше (64-bit на канал)).
Свойства определителя
Теперь о некоторых свойствах определителя (см. файл примера
):
- Определитель равен определителю исходной матрицы
- Если в матрице все элементы хотя бы одной из строк (или столбцов) нулевые, определитель такой матрицы равен нулю
- Если переставить местами две любые строки (столбца), то определитель полученной матрицы будет противоположен исходному (то есть, изменится знак)
- Если все элементы одной из строк (столбца) умножить на одно и тоже число k, то определитель полученной матрицы будет равен определителю исходной матрицы, умноженному на
k - Если матрица содержит строки (столбцы), являющиеся линейной комбинацией других строк (столбцов), то определитель =0
- det(А)=1/det(А -1), где А -1 — матрице А (А — квадратная невырожденная матрица).
Пример 1: умножаем число на число
Самый простой пример – это произведение двух конкретных чисел. В данном случае Эксель выступает в роли обычного калькулятора.
- Встаем в любую свободную ячейку, затем:
- ставим в ячейке (или в строке формул) знак “=”;
- пишем первое число (множимое;
- ставим знак умножения – “*“;
- указываем второе число (множитель).
- После нажатия клавиши Enter получаем результат в ячейке с формулой.
Примечание: при работе с вычислениями нужно помнить, что в Excel действуют такие же законы приоритета, что и в обычной арифметике, т.е. сперва выполняется умножение или деление, и только потом – сложение или вычитание.
В отличие от того, как записываются выражения со скобками на бумаге, в программе всегда ставится знак умножения (и до, и после скобок). Допустим, у нас есть вот такое выражение: .
В ячейке нам нужно написать следующую формулу: .
Нажав Enter получаем ответ.
1.10. Построение графиков
В Excel можно строить диаграммы разных типов. Но для нас
интересны только два вида: диаграмма рассеяния (scatter) и график (line).
Пример диаграммы рассеяния приведен на Рис. 24 .
Рис.24
Диаграмма рассеяния
Диаграммы такого типа используются для построения графиков
счетов, зависимостей «измерено-предсказано», и т.п. От линейных графиков
они отличаются равноправием обеих осей. В линейных графиках ось абсцисс
предназначена только для отображения категорийных переменных, т.е.
величин, в которых важна не их величина, а порядок следования. Поэтому
линейные графики подходят для представления зависимостей от числа
главных компонент, например, для изображения того, как величины RMSEC и
RMSEP меняются при усложнении модели.
Методы построения графиков в версиях 2003 и 2007 сильно
отличаются. Поэтому мы не будем на этом останавливаться, предоставив эту
тему для
самостоятельного изучения.
Формулы массива в Excel
Под массивом обычно понимают набор данных, объединенных в группу. Массивы бывают одномерные (элементы массива образуют строку или столбец) или двумерные (матрица). Легко сообразить, что почти в любой таблице Excel при желании можно найти один или несколько таких массивов:
Формулы массива в Excel – это специальные формулы для обработки данных из таких массивов. Формулы массива делятся на две категории – те, что возвращают одно значение и те, что дают на выходе целый набор (массив) значений. Рассмотрим их на простых примерах…
Пример 1. Классика жанра – товарный чек
Задача: рассчитать общую сумму заказа. Если идти классическим путем, то нужно будет добавить столбец, где перемножить цену и количество, а потом взять сумму по этому столбцу. Если же применить формулу массива, то все будет гораздо красивее:
- выделяем ячейку С7
- вводим с клавиатуры =СУММ(
- выделяем диапазон B2:B5
- вводим знак умножения (звездочка)
- выделяем диапазон C2:C5 и закрываем скобку функции СУММ – в итоге должно получиться так:
- чтобы Excel воспринял нашу формулу как формулу массива жмем не Enter, как обычно, а Ctrl + Shift + Enter
Вуаля!
Т.е. Excel произвел попарное умножение элементов массивов B2:B5 и C2:C5 и образовал новый массив стоимостей (в памяти компьютера), а затем сложил все элементы этого нового массива.
Обратите внимание на фигурные скобки, появившиеся в формуле – отличительный признак формулы массива. Вводить их вручную с клавиатуры бесполезно – они автоматически появляются при нажатии Ctrl + Shift + Enter
Пример 2. Разрешите Вас… транспонировать?
При работе с таблицами часто возникает необходимость поменять местами строки и столбцы, т.е. развернуть таблицу на бок, чтобы данные, которые раньше шли по строке, теперь располагались в столбцах и наоборот. В математике такая операция называется транспонированием. При помощи формулы массива и функции ТРАНСП (TRANSPOSE) это делается на раз.
Допустим, имеем двумерный массив ячеек, который хотим транспонировать.
- Выделяем диапазон ячеек для размещения транспонированной таблицы. Поскольку исходный массив ячеек был 8 строк на 2 столбца, то надо выделить диапазон пустых ячеек размером 2 строки на 8 столбцов.
- вводим функцию транспонирования =ТРАНСП(
- в качестве аргумента функции выделяем наш массив ячеек A1:B8
жмем Ctrl + Shift + Enter и получаем “перевернутый массив” в качестве результата:
Редактирование формулы массива
Если формула массива расположена не в одной ячейке (как в Примере 1), а в нескольких ячейках (как в Примере 2), то Excel не позволит редактировать или удалить одну отдельно взятую формулу (например в ячейке D10) и выдаст предупреждающее сообщение Невозможно изменить часть массива.
Для редактирования формулы массива необходимо выделить весь диапазон (A10:H11 в нашем случае) и изменить формулу в строке формул (или нажав F2). Затем необходимо повторить ввод измененной формулы массива, нажав сочетание клавиш Ctrl + Shift + Enter.
Excel также не позволит свободно перемещать ячейки, входящие в формулу массива или добавлять новые строки-столбцы-ячейки в диапазон формулы массива (т.е. в диапазон A10:H11 в нашем случае)
Пример 3. Таблица умножения
Вспомните детство, школу, свою тетрадку по математике… На обороте тетради на обложке было что? Таблица умножения вот такого вида:
При помощи формул массива она вся делается в одно движение:
- выделяем диапазон B2:K11
- вводим формулу =A2:A11*B1:K1
- жмем Ctrl + Shift + Enter, чтобы Excel воспринял ее как формулу массива
и получаем результат:
Пример 4. Выборочное суммирование
Посмотрите как при помощи одной формулы массива красиво и легко выбираются данные по определенному товару и заказчику:
В данном случае формула массива синхронно пробегает по всем элементам диапазонов C3:C21 и B3:B21, проверяя, совпадают ли они с заданными значениями из ячеек G4 и G5. Если совпадения нет, то результат равенства ноль, если совпадение есть, то единица. Таким образом суммы всех сделок, где заказчик не ANTON и товар не Boston Crab Meat умножаются на ноль и суммируются только нужные заказы.
1.3. Адресация
A1C5Name BoxA1F=адрес=A1
Например, первая ячейка имеет абсолютный адрес – $A$1, относительный адрес –
A1, и два
смешанных адреса – $A1 и
A$1. Различие в способе адресации проявляется,
прежде всего, тогда, когда формула копируется и переносится в другое
место. Поясним это на простом примере.
Рис. 5 Абсолютная и относительная адресация
На верхней панели показан фрагмент листа с
данными, выделенными желтым цветом. В зеленых областях (столбец
F и строка 6)
приведены различные варианты адресации одной и той же ячейки –
A1 (выделена оранжевым). Тип адресации
указан рядом с соответствующей ячейкой. Скопируем каждую из зеленых
областей (по очереди) и вставим рядом – в соседних столбцах:
G и H, и в
соседних строках: 7 и
8 (средняя панель ). Видно, что
результат зависит от типа адресации. Для абсолютной адресации ссылка на
первую ячейку сохранилась. Для относительной – ссылка сдвигается вправо
или вниз, сохраняя относительное положение двух ячеек: той, где стоит
ссылка, и той, на которую ссылаются. Для смешанной адресации результат
зависит от того, куда переносится копия, и от того, какая часть адреса
фиксируется значком доллара $. На правой
панели показаны соответствующие формулы, получающиеся после копирования.
Заметим, что ссылки на ячейки могут изменяться в зависимости от способа
адресации, но при перемещении ячейки с формулой содержащиеся в формуле
ссылки не изменяются.
Для адресации ячейки, которая находится на другом листе той же книги,
надо указывать еще и имя листа, например: Data!B2.
Восклицательный знак (!) отделяет имя листа
от адреса ячейки. Если имя листа содержит пробел, тогда имя надо
заключить в одинарные кавычки, например ‘Raw
Spectra’!C6. При адресации к другой книге, ее имя указывается
впереди, в квадратных скобках, например;
Results!P24
Подробнее о способах адресации можно прочитать
здесь.
2.9. Виртуальный массив
При анализе данных часто возникает проблема сохранения
промежуточных результатов, которые нужны не сами по себе, а только для
того, чтобы вычислить по ним другие, полезные значения. Например,
остатки в методе PCA часто нам не интересны, а нужны только для
определения полной объясненной дисперсии, ортогональных расстояний и
т.п. При этом размеры таких промежуточных массивов могут быть очень
велики, да и к тому же их приходится вычислять при различных значениях
числа главных компонент. Все это ведет к заполнению рабочей книги
большим количеством ненужных, промежуточных результатов. Этого можно
избежать, если использовать виртуальные массивы. Поясним их суть на
простом примере.
Рис.38 Пример использования виртуального
массива
Предположим, что задана матрица A, а
нужно вычислить детерминант матрицы AtA
. На Рис. 38 показаны два способа вычисления. Первый – через
последовательность промежуточных массивов, отмеченных красными
стрелками. Второй – с помощью одной формулы, показанной зеленой
стрелкой. Оба пути ведут к одному и тому же результату, но красный путь
занимает на листе много места, а зеленый последовательно использует
несколько промежуточных виртуальных массивов. Все они, по сути,
совпадают с реальными массивами красного пути, но на лист не выводятся.
Первый массив – это транспонированная матрица At,
получаемая как результат функции
(A).
Второй виртуальный массив получается тогда, когда первый
виртуальный массив умножается на матрицу A с помощью
функции (TRANSPOSE(A), A).
И, наконец, к этому, второму виртуальному массиву применяется функция
.
Виртуальные массивы очень полезны при вычислении всяческих
вспомогательных характеристик в анализе многомерных данных: остатков,
собственных значений, и т.п. Подробно об этом рассказывается в пособии
Расширение возможностей Chemometrics Add-In.