Формула массива представляет собой формулу, с помощью которой можно выполнять различные вычисления с одним или несколькими элементами в массиве. Массив можно представить в виде строки или столбца значений или их сочетания. Формулы массива могут возвращать как отдельное значение, так и множество значений.
Начиная с обновления для Microsoft 365 за сентябрь 2018 г., любая формула, которая может возвращать несколько результатов, автоматически переносит их вниз или в соседние ячейки. Это изменение поведения также сопровождается несколькими новыми функциями динамического массива. Формулы динамического массива, независимо от того, используют ли они существующие функции или функции динамического массива, необходимо вводить только в одну ячейку, а затем подтверждать, нажав ВВОД. Ранее в устаревших формулах массива сначала требовалось выбрать весь выходной диапазон, а затем подтвердить формулу с помощью CTRL+SHIFT+ВВОД. Их часто называют формулами CSE.
Формулы массива позволяют выполнять сложные задачи, например следующие:
-
Быстро создавать образцы наборов данных.
-
Подсчитывать числа знаков в диапазоне ячеек.
-
Суммировать только те числа, которые отвечают определенным условиям, например наименьших значений в диапазоне чисел, определенном верхней и нижней границами.
-
Суммировать всех n-х значения в диапазоне значений.
Следующие примеры иллюстрируют создание формул массива с одной или несколькими ячейками. По возможности мы включили примеры с некоторыми функциями динамического массива, а также с существующими формулами массивов, которые введены как динамические, так и устаревшие массивы.
Скачивание примеров
Скачать образец книги со всеми примерами формул массива из этой статьи.
В этом упражнении вы научитесь использовать формулы массива с одной или несколькими ячейками для вычисления набора данных по продажам. В первой последовательности шагов при помощи формулы с несколькими ячейками вычисляется набор промежуточных итоговых значений. Во второй последовательности применяется формула с одной ячейкой, которая вычисляет общий итог.
-
Формула массива с несколькими ячейками
-
Здесь мы вычисляем совокупный объем продаж купе и седанов для каждого продавца, вводя =F10:F19*G10:G19 в ячейку H10.
При нажатии клавиши ВВОД вы увидите, как результаты распределяются по ячейкам H10:H19. Обратите внимание, что диапазон переноса выделяется границей при выделении любой ячейки в пределах диапазона. Вы также можете заметить, что формулы в ячейках H10:H19 неактивны. Они нужны только для справки, поэтому, если вы хотите изменить формулу, вам нужно выбрать ячейку H10, в которой находится основная формула.
-
Формула массива с одной ячейкой
В ячейке H20 образца книги введите или скопируйте и вставьте =СУММ(F10:F19*G10:G19), а затем нажмите ВВОД.
В этом случае будет выполнено перемножение значений массива (диапазон ячеек F10–G19), а затем — при помощи функции СУММ — сложение полученных результатов. Общий итог продаж составит 1 590 000 рублей.
В данном примере демонстрируется, какие широкие возможности предоставляет данный тип формул. Например, предположим, что у вас есть 1000 строк с данными. Вы можете частично или полностью сложить их значения, создав формулу массива в отдельной ячейке, а не перетаскивать формулу на 1000 строк ниже. Кроме того, обратите внимание на то, что формула с одной ячейкой в ячейке H20 полностью независима от формулы с несколькими ячейками (формула в ячейках H10–H19). Это указывает на еще одно преимущество использования формул массива — их гибкость. Можно изменить формулы в столбце H, и это не повлияет на формулу в ячейке H20. Также может быть полезно иметь независимые итоги, как это, так как это помогает проверить точность результатов.
-
Ниже перечислены дополнительные преимущества, которые обеспечивает использование формул динамического массива.
-
Согласованность Если щелкнуть несколько ячеек ниже ячейки H10, вы увидите, что все они содержат одну и ту же формулу. Такая согласованность помогает обеспечить более высокую точность результатов.
-
Безопасность Компонент формулы массива с несколькими ячейками нельзя переписать. Например, щелкните ячейку H11 и нажмите клавишу DELETE. Excel не будет изменять выходные данные массива. Чтобы их изменить, необходимо выбрать левую верхнюю ячейку массива или ячейку H10.
-
Меньший размер файлов Зачастую вместо нескольких промежуточных формул можно использовать одну формулу массива. Например, в примере с продажей автомобилей для вычисления результатов в столбце E используется одна формула массива. Если бы вы прибегли к обычным формулам (таким как =F10*G10, F11*G11, F12*G12 и т. д.), вам понадобилось бы 11 разных формул для получения таких же результатов. Это не очень важно, но что, если вам необходимо суммировать тысячи строк? Тогда это может иметь большое значение.
-
Эффективность Функции массива могут быть эффективным способом создания сложных формул. Формула массива =СУММ(F10:F19*G10:G19) та же: =СУММ(F10*G10,F11*G11,F12*G12,F13*G13,F14*G14,F15*G15,F16*G16,F17*G17,F18*G18,F19*G19).
-
Перенос Динамические формулы массива будут автоматически перенесены в диапазон вывода. Если исходные данные хранятся в таблице Excel, тогда формулы динамического массива будут автоматически изменять размер при добавлении и удалении данных.
-
Ошибка #ПЕРЕНОС! Динамические массивы ввели Ошибка #ПЕРЕНОС!, что означает, что предполагаемый диапазон переноса по какой-либо причине заблокирован. При устранении блока формула будет автоматически перенесены.
-
Константы массива являются компонентами формул массива. Константы массива создаются путем ввода списка элементов с последующей вставкой фигурных скобок ({ }) вокруг списка, следующим образом:
={1;2;3;4;5} или ={«Январь»;»Февраль»;»Март»}
Если элементы списка разделяются точками с запятой, будет создан горизонтальный массив (строка). Если элементы разделяются двоеточиями, будет создан вертикальный массив (столбец). Чтобы создать двумерный массив, следует разделить элементы строк точками с запятой, а строки — двоеточиями.
В описанных ниже процедурах вы потренируетесь создавать горизонтальные, вертикальные и двумерные константы. Мы покажем примеры использования функции ПОСЛЕД для автоматического создания констант массива, а также для введенных вручную констант массива.
-
Создание горизонтальной константы
Воспользуйтесь книгой из предыдущих примеров или создайте новую книгу. Выберете любую пустую ячейку и введите =ПОСЛЕД(1,5). Функция ПОСЛЕД создает массив из 1 строки на 5 столбцов, как ={1;2;3;4;5}. Будет отображен следующий результат:
-
Создание вертикальной константы
Выберите любую пустую ячейку с помещением под ней и введите =ПОСЛЕД(5), или ={1;2;3;4;5}. Будет отображен следующий результат:
-
Создание двумерной константы
Выберите любую пустую ячейку с помещением справа и введите =ПОСЛЕД(3,4). Вы получите следующий результат:
Вы также можете ввести: или={1;2;3;4:5;6;7;8:9;10;11;12}, но обратите внимание, где вы ставите точки с запятой вместо запятых.
Как видите, параметр ПОСЛЕД имеет значительные преимущества по сравнению с вводом значений констант массива вручную. В основном это экономит время, но также помогает сократить количество ошибок, возникающих при вводе вручную. Его также проще читать, особенно потому, что точки с запятой трудно отличить от разделителей запятой.
Вот пример использования констант массива в составе более крупной формулы. В примере книги перейдите к листу Константа в формуле или создайте новый лист.
В ячейке D9 мы ввели =ПОСЛЕД(1,5,3,1), но вы также можете ввести 3, 4, 5, 6 и 7 в ячейки A9:H9. В этом конкретном выборе числа нет ничего особенного, мы просто выбрали что-то другое, кроме 1-5.
В ячейке E11 введите =СУММ(D9:H9*ПОСЛЕДОВАТЕЛЬНОСТЬ(1,5)) или =СУММ(D9:H9*{1;2;3;4;5}). Формулы возвращают 85.
Функция ПОСЛЕД создает эквивалент константы массива {1;2;3;4;5}. Поскольку Excel в первую очередь выполняется операции с элементами, заключенными в скобки, далее будут использоваться значения ячеек в D9: H9 и оператор умножения (*). На этом этапе формула выполнит умножение значений в сохраненном массиве на соответствующие значения в константе. Это эквивалент следующей формулы:
=СУММ(D9*1;E9*2,F9*3,G9*4;H9*5) или =СУММ(3*1,4*2,5*3,6*4,7*5)
В последнюю очередь выполняется сложение значений при помощи функции СУММ и возвращается 85.
Чтобы избежать использования сохраненного массива и полностью сохранить операцию в памяти, замените сохраненный массив другой константой массива:
=СУММ(ПО(1;5;3;1)*ПОСЛЕД(1,5)) или =СУММ({3;4;5;6;7}*{1;2;3;4;5})
Элементы, которые можно использовать в константах массива
-
Константы массива могут содержать числа, текст, логические значения (например, ИСТИНА и ЛОЖЬ) и значения ошибок, такие как #N/A. Можно использовать числа в целочисленном, десятичном или экспоненциальном формате. При добавлении текста требуется заключить его в кавычки («текст»).
-
Константы массива не могут содержать дополнительные массивы, формулы или функции. Другими словами, они могут содержать только текст или числа, разделенные запятыми или точками с запятой. При вводе такой формулы, как {1;2;A1:D4} или {1;2;СУММ(Q2:Z8)}, выводится предупреждение. Кроме того, числовые значения не могут содержать знаки процента, знаки валюты, запятые или кавычки.
Один из лучших способов использовать константы массива — присвоить им имена. С именованными константами проще работать, и они позволяют частично скрыть сложность формул массива от других пользователей. Чтобы присвоить имя константе массива, а затем использовать ее в формуле, сделайте следующее.
Выберите Формулы > Присвоить имена > Определить имена. В поле Имя введите Квартал 1. В поле Диапазон введите следующую константу (не забудьте ввести скобки вручную):
={«Январь»;»Февраль»;»Март»}
Диалоговое окно должно выглядеть следующим образом:
Нажмите кнопку ОК, выберите любую строку с тремя пустыми ячейками и введите =Квартал1.
Будет отображен следующий результат:
Если вы хотите, чтобы результаты переносились по вертикали, а не по горизонтали, можно использовать =ТРАНСП(Квартал1).
Если вы хотите отобразить список из 12 месяцев, например, который вы можете использовать при создании финансового отчета, вы можете использовать функцию ПОСЛЕД в качестве основы для текущего года. Отличительной особенностью этой функции является то, что, несмотря на то, что отображается только месяц, за ним стоит допустимая дата, которую можно использовать в других вычислениях. Эти примеры можно найти на листах Константа именованного массива и Быстрый образец набора данных в книге примера.
=ТЕКСТ(ДАТА(ГОД(СЕГОДНЯ()),ПОСЛЕД(1,12),1),»ммм»)
При этом функция ДАТА используется для создания даты на основе текущего года, функция ПОСЛЕД создает константу массива от 1 до 12 с января по декабрь, затем функция ТЕКСТ преобразует формат отображения в «ммм» (январь, февраль, март и т..д.). Если вы хотите отобразить полное название месяца, например «Январь», используйте «мммм».
При использовании именованной константы в качестве формулы массива не забудьте ввести знак равенства, например, =Квартал1, а не только в Квартал1. Если не сделать этого, массив будет интерпретирован как строка текста и формула не будет работать должным образом. Кроме того, помните, что можно сочетать функции, текст и числа. Все зависит от того, насколько креативно вы хотите все сделать.
В следующих ниже примерах демонстрируется несколько способов, при помощи которых можно применять константы массива в формулах массива. В некоторых из примеров используется функция ТРАНСП, которая выполняет преобразование строк в столбцы и наоборот.
-
Умножение каждого из элементов массива
Введите =ПОСЛЕД(1,12)*2 или ={1;2;3;4:5;6;7;8:9;10;11;12}*2
Вы также можете выполнить деление с помощью (/), сложить с помощью (+) и вычесть с помощью (—).
-
Возведение в квадрат элементов массива
Введите =ПОСЛЕД(1,12)^2 или ={1;2;3;4:5;6;7;8:9;10;11;12}^2
-
Поиск квадратного корня из квадрата элементов массива
Введите =КОРЕНЬ(ПОСЛЕД(1,12)^2) или =КОРЕНЬ({1;2;3;4:5;6;7;8:9;10;11;12}^2)
-
Транспонирование одномерной строки
Введите =ТРАНСП(ПОСЛЕД(1,5)) или =ТРАНСП({1;2;3;4;5})
Даже если была введена горизонтальная константа массива, функция ТРАНСП преобразует константу массива в столбец.
-
Транспонирование одномерного столбца
Введите =ТРАНСП(ПОСЛЕД(5,1)) или =ТРАНСП({1:2:3:4:5})
Даже если была введена вертикальная константа массива, функция ТРАНСП преобразует константу массива в строку.
-
Транспонирование двумерного массива
Введите =ТРАНСП(ПОСЛЕД(3,4)) или =ТРАНСП({1;2;3;4:5;6;7;8:9;10;11;12})
Функция ТРАНСП преобразует каждую из строк в последовательность столбцов.
В данном разделе приводятся примеры использования основных формул массива.
-
Создание массива на основе существующих значений
В следующем примере объясняется, как использовать формулы массива для создания нового массива из существующего массива.
Введите =ПОСЛЕД(3,6,10,10) или ={10;20;30;40;50;60:70;80;90;100;110;120:130;140;150;160;170;180}
Не забудьте ввести { (открывающую фигурную скобку) перед числом 10 и} (закрывающую фигурную скобку) после числа 180, так как вы создаете массив чисел.
Затем введите =D9# или =D9:I11 в пустую ячейку. Появится массив ячеек 3 x 6 с одинаковыми значениями, которые отображаются в D9:D11. Знак # называется оператором диапазона переноса, и это способ ссылки Excel на весь диапазон массива вместо того, чтобы вводить его.
-
Создание константы массива на основе существующих значений
Вы можете получить результаты формулы перенесенного массива и преобразовать его в компоненты. Выберите ячейку D9 и нажмите клавишу F2, чтобы переключиться в режим правки. Затем нажмите клавишу F9, чтобы преобразовать ссылки на ячейки в значения, которые Excel преобразует в константу массива. При нажатии клавиши ВВОД формула =D9# теперь должна быть ={10;20;30:40;50;60:70;80;90}.
-
Подсчет знаков в диапазоне ячеек
В примере ниже демонстрируется, как подсчитать число знаков в диапазоне ячеек. К ним относятся пробелы.
=СУММ(LEN(C9:C13))
В данном случае функция ДЛСТР возвращает длину каждой текстовой строки в каждой из ячеек диапазона. Затем функция СУММ складывает эти значения и выводит полученный результат (66). Если вы хотите получить среднее количество символов, можно использовать:
=СРЗНАЧ(ДЛСТР(C9:C13))
-
Содержимое самой длинной ячейки в диапазоне C9:C13
=ИНДЕКС(C9:C13;ПОИСКПОЗ(МАКС(ДЛСТР(C9:C13)),ДЛСТР(C9:C13);0);1)
Эта формула работает только в том случае, если диапазон данных содержит один столбец ячеек.
Рассмотрим эту формулу подробнее, начиная с элементов в скобках. Функция ДЛСТР возвращает длину каждого элемента в диапазон ячеек D2:D6. Функция МАКС вычисляет наибольшее значение среди этих элементов, соответствующее самой длинной текстовой строке, которая находится в ячейке D3.
Следующие функции немного сложнее. Функция ПОИСКПОЗ вычисляет смещение (относительную позицию) ячейки, которая содержит строку текста максимальной длины. Для этого требуется три аргумента: искомое значение, массив для поиска и тип соответствия. Функция ПОИСКПОЗ выполняет поиск указанного искомого значения в массиве поиска. В данном случае искомое значение представляет собой строку максимальной длины:
МАКС(ДЛСТР(C9:C13)
из следующего массива:
ДЛСТР(C9:C13)
Аргумент типа соответствия в этом случае равен 0. Тип соответствия может иметь значение 1, 0 или -1.
-
Значение 1 возвращает наибольшее значение, которое не превышает искомое значение.
-
Значение 0 возвращает первое значение, равное искомому.
-
Значение -1 возвращает наименьшее из значений, которые превышают искомое значение или равно ему
-
Если тип соответствия не указан, предполагается, что он равен 1.
Наконец, функция ИНДЕКС имеет следующие аргументы: массив, номер строки и номер столбца в этом массиве. Массив образуется диапазоном ячеек C9:C13, функция ПОИСКПОЗ задает адрес ячейки, а последний аргумент (1) указывает, что значение должно быть найдено в первом столбце массива.
Если вы хотите получить содержимое из наименьшей текстовой строки, замените значение МАКС в примере выше на МИН.
-
-
Поиск n наименьших значений в диапазоне
В этом примере показано, как найти три наименьших значения в диапазоне ячеек, где массив образцов данных в ячейках B9:B18 был создан с помощью: =ЦЕЛОЕ(СЛМАССИВ(10,1)*100). Обратите внимание, что ФУНКЦИЯ СЛМАСИМВ — это переменная функция, поэтому вы будете получать новый набор случайных чисел при каждом вычислении в Excel.
Введите =НАИМЕНЬШИЙ(B9#,ПОСЛЕД(D9), =НАИМЕНЬШИЙ(B9:B18,{1:2:3})
В этой формуле константа массива используется для трехкратной оценки функции НАИМЕНЬШИЙ и возврата 3 наименьших членов массива, содержащихся в ячейках B9:B18, где 3 — это переменное значение в ячейке D9. Чтобы найти дополнительные значения, можно увеличить значение в функции ПОСЛЕД или добавить дополнительные аргументы в константу. С этой формулой также используются дополнительные функции, например СУММ или СРЗНАЧ. Например:
=СУММ(НАИМЕНЬШИЙ(B9#;ПОСЛЕД(D9))
=СРЕДНИЙ(НАИМЕНЬШИЙ(B9#;ПОСЛЕД(D9))
-
Поиск n наибольших значений в диапазоне
Чтобы найти наибольшие значения в диапазоне, следует заменить функцию НАИМЕНЬШИЙ функцией НАИБОЛЬШИЙ. Кроме того, в следующем примере используются функции СТРОКА и ДВССЫЛ.
Введите =НАИБОЛЬШИЙ(B9#,СТРОКА(ДВССЫЛ(«1:3»))) или =НАИБОЛЬШИЙ(B9:B18,СТРОКА(ДВССЫЛ(«1:3»)))
На этом этапе может быть полезно ознакомиться с функциями СТРОКА и ДВССЫЛ. При помощи функции СТРОКА можно создать массив последовательных целых чисел. Например, выберите пустое и введите:
=СТРОКА(1:10)
В результате выполнения этой формулы будет создан столбец, содержащий 10 последовательных целочисленных значений. Чтобы понять, где может возникнуть проблема, вставьте строку над диапазоном, содержащим формулу массива (то есть над строкой 1). Ссылки на строки будут изменены и в результате выполнения формулы теперь вы получите числа от 2 до 11. Чтобы избежать возникновения этой проблемы, следует добавить в формулу функцию ДВССЫЛ.
=СТРОКА(ДВССЫЛ(«1:10»))
В функции ДВССЫЛ в качестве аргументов используются текстовые строки (именно поэтому диапазон 1:10 заключен в кавычки). Текстовые значения не изменяются при вставке строк или перемещении формулы массива. В результате при выполнении функции СТРОКА всегда будет создаваться нужный массив целочисленных значений. Вы можете так же легко использовать функцию ПОСЛЕД:
=ПОСЛЕД(10)
Рассмотрим формулу, которую вы использовали ранее — =НАИБОЛЬШИЙ(B9#,СТРОКА(ДВССЫЛ(«1:3»))), начиная с внутренних скобок и работая наружу: функция ДВССЫЛ возвращает набор текстовых значений, в данном случае значения от 1 до 3. Функция СТРОКА, в свою очередь, создает массив столбцов из трех ячеек. Функция НАИБОЛЬШИЙ использует значения в диапазоне ячеей B9:B18 и вычисляется три раза для каждой ссылки, возвращаемой функцией СТРОКА. Если вы хотите найти дополнительные значения, добавьте к функции ДВССЫЛ более широкий диапазон ячеек. Как и в примерах с функцией НАИМЕНЬШИЙ, эту формулу можно использовать и с другими функциями, такими как СУММ и СРЗНАЧ.
-
Суммирование диапазона, который содержит значения ошибки
При попытке просуммировать диапазон, содержащий значения ошибки (например, #ЗНАЧЕН), функция СУММ в Excel не работает. или #Н/Д. В приведенном ниже примере демонстрируется, как просуммировать значения в диапазоне «Данные», который содержит ошибки:
-
=СУММ(ЕСЛИ(ЕОШИБКА(Данные);»»;Данные))
Формула создает новый массив, содержащий исходные значения за вычетом любых значений ошибок. Начиная с внутренних функций и работы наружу, функция ЕОШИБКА выполняет поиск ошибок в диапазоне ячеей (Данные). Функция ЕСЛИ возвращает определенное значение, если указанное условие дает в результате значение ИСТИНА, и другое значение, если условие дает в результате значение ЛОЖЬ. В этом случае он возвращает пустые строки («») для всех значений ошибок, так как они оцениваются как ИСТИНА, и возвращает оставшиеся значения из диапазона (Данные), так как они оцениваются как ЛОЖЬ, то есть они не содержат значений ошибок. Функция СУММ затем вычисляет итог для отфильтрованного массива.
-
Подсчет количества значений ошибки в диапазоне
Формула в этом примере похожа на формулу предыдущего примера, однако она возвращает количество значений ошибки в диапазоне с именем «Данные» вместо исключения таких значений.
=СУММ(ЕСЛИ(ЕОШИБКА(Данные);1;0))
В результате выполнения этой формулы создается массив, в котором для ячеек со значениями ошибки указывается значение 1, а для других ячеек — значение 0. Для получения аналогичного результата указанную формулу можно упростить, удалив третий аргумент функции ЕСЛИ следующим образом.
=СУММ(ЕСЛИ(ЕОШИБКА(Данные);1))
Если этот аргумент не задан и ячейка не содержит значения ошибки, функция ЕСЛИ возвращает значение ЛОЖЬ. Формулу можно упростить еще больше:
=СУММ(ЕСЛИ(ЕОШИБКА(Данные)*1))
Такой вариант формулы допустим, поскольку ИСТИНА*1=1 и ЛОЖЬ*1=0.
При выполнении определенных условий может потребоваться вложение значений.
Например, в указанной ниже формуле массива суммируются только положительные целые числа в диапазоне с именем «Продажи», который представляет ячейки E9:E24 в приведенном выше примере:
=СУММ(ЕСЛИ(Продажи>0;Продажи))
В результате выполнения функции ЕСЛИ создается массив положительных и ложных значений. Функция СУММ будет игнорировать ложные значения, поскольку 0+0=0. Используемый в этой формуле диапазон ячеек может включать любое количество строк и столбцов.
Можно также выполнить суммирование значений с учетом нескольких условий. Например, эта формула массива вычисляет значения больше 0 И меньше 2500:
=СУММ((Продажи>0)*(Продажи<2500)*(Продажи))
Следует помнить, что при наличии в указанном диапазоне одной или нескольких ячеек, не являющихся числовыми, эта формула возвратит ошибку.
Доступно создание формул массива с использованием условия типа ИЛИ. Например, можно суммировать значения, которые больше 0 ИЛИ меньше 2500:
=СУММ(ЕСЛИ((Продажи>0)+(Продажи<2500);Продажи))
В формулах массива нельзя использовать непосредственно функции И или ИЛИ, поскольку эти функции возвращают отдельный результат, ИСТИНА или ЛОЖЬ, а для функций массива требуется массив результатов. Чтобы разрешить эту проблему, воспользуйтесь логикой, показанной в предыдущей формуле. Другими словами, математические операции, такие как сложение и умножение, выполняются в отношении значений, которые отвечают условию ИЛИ или И.
В этом примере демонстрируется, как удалить нулевые значения из диапазона, чтобы затем вычислить для него среднее значение. В формуле используется диапазон данных с именем «Продажи».
=СРЗНАЧ(ЕСЛИ(Продажи<>0,Продажи))
В результате выполнения функции ЕСЛИ создается массив значений, не равных 0, которые затем передаются в функцию СРЗНАЧ.
В данной формуле массива сравниваются значения в двух диапазонах ячеек с именами МоиДанные и ДругиеДанные, в результате чего возвращается количество различающихся ячеек между этими двумя диапазонами. Если содержимое двух диапазонов идентично, формула возвращает 0. Эту формулу можно использовать только для диапазонов ячеек с одинаковым размером и одинаковой размерностью. Например, если МоиДанные — это диапазон из 3 строк и 5 столбцов, то диапазон ДругиеДанные тоже должен состоять из 3 строк и 5 столбцов:
=СУММ(ЕСЛИ(МоиДанные=ДругиеДанные;0;1))
В результате выполнения формулы создается массив, имеющий такой же размер, что и сравниваемые диапазоны. Функция ЕСЛИ заполняет массив значениями 0 и 1 (0 для ячеек с различными значениями, 1 — для ячеек с одинаковыми значениями). Затем функция СУММ возвращает сумму значений в массиве.
Эту формулу можно упростить следующим образом:
=СУММ(1*(МоиДанные<>ДругиеДанные))
Подобно формуле, подсчитывающей количество значений ошибки в диапазоне, эта формула работает благодаря тому, что ИСТИНА*1=1, а ЛОЖЬ*1=0.
Следующая формула массива возвращает номер строки максимального значения в диапазоне с именем «Данные», состоящем из одного столбца:
=МИН(ЕСЛИ(Данные=МАКС(Данные);СТРОКА(Данные);»»))
В результате выполнения функции ЕСЛИ создается новый массив, соответствующий диапазону с именем «Данные». Если соответствующая ячейка содержит максимальное значение в диапазоне, массив будет содержать номер этой строки. В обратном случае массив содержит пустую строку («»). Функция МИН использует полученный массив в качестве своего второго аргумента и возвращает наименьшее значение, соответствующее номеру строки с максимальным значением в диапазоне с именем «Данные». Если диапазон «Данные» содержит одинаковые максимальные значения, формула возвращает строку первого значения.
Если требуется, чтобы формула возвращала фактический адрес ячейки с максимальным значением, воспользуйтесь следующей формулой:
=АДРЕС(МИН(ЕСЛИ(Данные=МАКС(Данные);СТРОКА(Данные);»»));СТОЛБЕЦ(Данные))
Похожие примеры можно найти в примере книги на листе Различия между наборами данных.
В этом упражнении вы научитесь использовать формулы массива с одной или несколькими ячейками для вычисления набора данных по продажам. В первой последовательности шагов при помощи формулы с несколькими ячейками вычисляется набор промежуточных итоговых значений. Во второй последовательности применяется формула с одной ячейкой, которая вычисляет общий итог.
-
Формула массива с несколькими ячейками
Скопируйте всю таблицу, приведенную ниже, и вставьте ее на пустой лист книги, начиная с ячейки A1.
Продавец |
Тип |
Число |
Цена |
Итоги |
---|---|---|---|---|
Зуева |
Седан |
5 |
33000 |
|
Купе |
4 |
37000 |
||
Егоров |
Седан |
6 |
24000 |
|
Купе |
8 |
21000 |
||
Еременко |
Седан |
3 |
29000 |
|
Купе |
1 |
31000 |
||
Климов |
Седан |
9 |
24000 |
|
Купе |
5 |
37000 |
||
Шашков |
Седан |
6 |
33000 |
|
Купе |
8 |
31000 |
||
Формула (общий итог) |
Общий итог |
|||
‘=СУММ(C2:C11*D2:D11) |
=СУММ(C2:C11*D2:D11) |
-
Чтобы просмотреть итоги продаж автомобилей типа «купе» и «седан» для каждого продавца, выберите ячейки E2:E11, введите формулу =C2:C11*D2:D11, а затем нажмите клавиши CTRL+SHIFT+ВВОД.
-
Чтобы просмотреть итоги всех продаж, выберите ячейку F11, введите формулу =СУММ(C2:C11*D2:D11), а затем нажмите клавиши CTRL+SHIFT+ВВОД.
При нажатии CTRL+SHIFT+ВВОД Excel заключает формулу в скобки ({ }) и вставляет экземпляр формулы в каждую ячейку выбранного диапазона. Это происходит очень быстро, поэтому в столбце E отображается сумма продаж каждого типа автомобиля для каждого продавца. Если вы выберете E2, а затем выберите E3, E4 и так далее, вы увидите, что отображается та же формула: {=C2:C11*D2:D11}.
-
Создание формулы массива с одной ячейкой
В ячейке D13 книги введите указанную ниже формулу, а затем нажмите сочетание клавиш CTRL+SHIFT+ВВОД:
=СУММ(C2:C11*D2:D11)
В этом случае будет выполнено перемножение значений массива (диапазон ячеек C2–D11), а затем — при помощи функции СУММ — сложение полученных результатов. Общий итог продаж составит 1 590 000 рублей. В данном примере демонстрируется, какие широкие возможности предоставляет данный тип формул. Например, предположим, что у вас есть 1000 строк с данными. Вы можете частично или полностью сложить их значения, создав формулу массива в отдельной ячейке, а не перетаскивать формулу на 1000 строк ниже.
Кроме того, обратите внимание на то, что формула с одной ячейкой в ячейке D13 полностью независима от формулы с несколькими ячейками (формула в ячейках E2–E11). Это указывает на еще одно преимущество использования формул массива — их гибкость. Можно изменить формулы в столбце E или вообще удалить этот столбец, и это не повлияет на формулу в ячейке D13.
Ниже перечислены дополнительные преимущества, которые обеспечивает использование формул массива.
-
Согласованность Если щелкнуть несколько ячеек ниже ячейки E2, вы увидите, что все они содержат одну и ту же формулу. Такая согласованность помогает обеспечить более высокую точность результатов.
-
Безопасность Компонент формулы массива с несколькими ячейками нельзя переписать. Например, щелкните ячейку E3 и нажмите клавишу DELETE. Вам придется выделить весь диапазон ячеек (E2–E11) и изменить формулу для всех ячеек либо оставить массив без изменений. В качестве меры безопасности необходимо нажать CTRL+SHIFT+ВВОД чтобы подтвердить изменение формулы.
-
Меньший размер файлов Зачастую вместо нескольких промежуточных формул можно использовать одну формулу массива. Например, в книге для вычисления результатов в столбце E применяется всего лишь одна формула массива. Если бы вы прибегли к обычным формулам (таким как =C2*D2, C3*D3, C4*D4 и т. д.), вам понадобилось бы 11 разных формул для получения таких же результатов.
Как правило, в формулах массива используется стандартный синтаксис формулы. Они все начинаются со знака равенства (=) и могут содержать многие встроенные функции Excel. Ключевое отличие заключается в том, что при использовании формулы массива, чтобы ввести формулу необходимо ввести клавиши CTRL+SHIFT+ВВОД. В этом случае Excel заключит формулу массива в фигурные скобки — если вы введете фигурные скобки вручную, ваша формула будет преобразована в текстовую строку и не будет работать.
Функции массива могут быть эффективным способом создания сложных формул. Формула массива =СУММ(C2:C11*D2:D11) эквивалентна формуле =СУММ(C2*D2;C3*D3;C4*D4;C5*D5;C6*D6;C7*D7;C8*D8;C9*D9;C10*D10;C11*D11).
Важно: Нажимайте клавиши CTRL+SHIFT+ВВОД, когда хотите ввести формулу массива. Это правило действует для формул как с одной, так и с несколькими ячейками.
При работе с формулами с несколькими ячейками учитывайте указанные ниже моменты.
-
Выделите диапазон ячеек, который будет содержать результаты, прежде чем вводить формулу. Вы делали это при создании формулы массива с несколькими ячейками, выбирая ячейки E2–E11.
-
Содержимое отдельной ячейки в формуле массива изменить нельзя. Чтобы проверить это правило, выделите ячейку E3 в книге и нажмите клавишу DELETE. В приложении Excel отобразится сообщение о том, что нельзя изменить часть формулы массива.
-
Формулу массива можно переместить или удалить только целиком. Другими словами, чтобы уменьшить формулу массива, сначала нужно удалить существующую формулу, а затем создать новую формулу с самого начала.
-
Чтобы удалить формулу массива, выберите весь диапазон формул (например, E2:E11), а затем нажмите Удалить.
-
В формулу массива с несколькими ячейками нельзя вставить пустые строки (или удалить строки из нее).
Иногда возникает необходимость увеличить диапазон формулы массива. Выберите первую ячейку в существующем диапазоне массива и продолжайте, пока не выберете весь диапазон, на который вы хотите расширить формулу. Нажмите F2, чтобы изменить формулу, а затем нажмите CTRL+SHIFT+ВВОД, чтобы подтвердить формулу после изменения диапазона формул. Ключом является выбор всего диапазона, начиная с верхней левой ячейки массива. Верхняя левая ячейка — это ячейка, которая редактируется.
Несмотря на все преимущества формул массива, у них имеются свои недостатки.
-
Вы можете случайно забыть нажать сочетание клавиш CTRL+SHIFT+ВВОД. Это может случиться даже с самыми опытными пользователями Excel. Не забывайте нажимать это сочетание клавиш каждый раз при вводе или изменении формулы массива.
-
Для других пользователей книги используемые формулы могут быть непонятны. На практике описание формулы массива редко приводится на листе. Поэтому, если нужно, чтобы другие люди могли редактировать книгу, следует избегать использования в ней формул массива или убедиться в том, что пользователи знают обо всех формулах массива и понимают, как изменить их при необходимости.
-
Большие формулы массива могут замедлять вычисления на компьютерах с невысокой скоростью процессора или небольшим объемом памяти.
Константы массива являются компонентами формул массива. Константы массива создаются путем ввода списка элементов с последующей вставкой фигурных скобок ({ }) вокруг списка, следующим образом:
={1;2;3;4;5}
Теперь вы знаете о необходимости нажимать клавиши CTRL+SHIFT+ВВОД при создании формул массива. Константы массива являются составляющей формул массива, поэтому скобки вокруг них необходимо ввести вручную. Затем нажмите клавиши CTRL+SHIFT+ВВОД, чтобы завершить ввод формулы.
Если элементы списка разделяются точками с запятой, будет создан горизонтальный массив (строка). Если элементы разделяются двоеточиями, будет создан вертикальный массив (столбец). Чтобы создать двумерный массив, следует разделить элементы строк точками с запятой, а строки — двоеточиями.
Так выглядит массив из одной строки: {1;2;3;4}. Массив из одного столбца: {1:2:3:4}. А вот массив из двух строк и четырех столбцов: {1;2;3;4:5;6;7;8}. В двухстрочном массиве первая строка представлена 1, 2, 3 и 5, 6, 7, а вторая строка — 8 и 4. Строки разделены двоеточием между записями 4 и 5.
Как и формулы массива, константы массива можно использовать с большинством встроенных функций Excel. В следующих ниже разделах объясняется, как создавать те или иные типы констант и использовать эти константы с функциями Excel.
В описанных ниже процедурах вы потренируетесь создавать горизонтальные, вертикальные и двумерные константы.
Создание горизонтальной константы
-
На пустом листе выделите ячейки от A1 до E1 включительно.
-
В строке формул введите указанную ниже формулу, а затем нажмите клавиши CTRL+SHIFT+ВВОД:
={1;2;3;4;5}
В этом случае нужно ввести открывающую и закрывающую фигурные скобки ({ }), и Excel добавит второй набор.
Будет отображен следующий результат:
Создание вертикальной константы
-
Выделите в книге столбец из пяти ячеек.
-
В строке формул введите указанную ниже формулу, а затем нажмите клавиши CTRL+SHIFT+ВВОД:
={1:2:3:4:5}
Будет отображен следующий результат:
Создание двумерной константы
-
Выделите в книге блок ячеек из четырех столбцов и трех строк.
-
В строке формул введите указанную ниже формулу, а затем нажмите клавиши CTRL+SHIFT+ВВОД:
={1;2;3;4:5;6;7;8:9;10;11;12}
Вы получите следующий результат:
Использование констант в формулах
Рассмотрим простой пример с константами.
-
Создайте новый лист в образце книги.
-
В ячейку A1 введите значение 3, затем введите 4 в ячейку B1, 5 — в C1, 6 — в D1 и 7 — в E1.
-
В ячейке A3 введите следующую формулу, а затем нажмите клавиши CTRL+SHIFT+ВВОД:
=СУММ(A1:E1*{1;2;3;4;5})
Обратите внимание, что константа будет автоматически заключена в дополнительный набор скобок, поскольку она введена как формула массива.
В ячейке A3 появится значение 85.
В следующем разделе поясняется работа этой формулы.
Использованная формула состоит из нескольких частей.
1. Функция
2. Сохраненный массив
3. Оператор
4. Константа массива
Последний элемент внутри скобок — это константа массива: {1;2;3;4;5}. Помните, что Excel не заключает константы массива в фигурные скобки, их нужно вводить вручную. Также помните о том, что после ввода константы в формулу массива необходимо нажать сочетание клавиш CTRL+SHIFT+ВВОД, чтобы завершить ввод формулы.
Поскольку в первую очередь выполняются операции с элементами, заключенными в скобки, далее будут использоваться значения, хранящиеся в книге (диапазон A1:E1), и соответствующий оператор. На этом этапе формула выполнит умножение значений в сохраненном массиве на соответствующие значения в константе. Это эквивалент следующей формулы:
=СУММ(A1*1;B1*2;C1*3;D1*4;E1*5)
В последнюю очередь выполняется сложение значений при помощи функции СУММ, итоговое значение 85 отображается в ячейке A3.
Чтобы избежать использования сохраненного массива и выполнять операцию исключительно в памяти, замените сохраненный массив другой константой массива:
=СУММ({3;4;5;6;7}*{1;2;3;4;5})
Для этого скопируйте функцию, выделите пустую ячейку в книге, вставьте формулу в строку формул, а затем нажмите клавиши CTRL+SHIFT+ВВОД. Получится тот же результат, что и в предыдущем упражнении, где использовалась формула массива:
=СУММ(A1:E1*{1;2;3;4;5})
Константы массива могут содержать числа, текст, логические значения (такие как ИСТИНА и ЛОЖЬ), а также значения ошибок (например, #Н/Д). Можно использовать числа в целочисленном, десятичном или экспоненциальном формате. При добавлении текста требуется заключить его в кавычки («).
Константы массива не могут содержать дополнительные массивы, формулы или функции. Другими словами, они могут содержать только текст или числа, разделенные запятыми или точками с запятой. При вводе такой формулы, как {1;2;A1:D4} или {1;2;СУММ(Q2:Z8)}, выводится предупреждение. Кроме того, числовые значения не могут содержать знаки процента, знаки валюты, запятые или кавычки.
Один из лучших способов использовать константы массива — присвоить им имена. С именованными константами проще работать, и они позволяют частично скрыть сложность формул массива от других пользователей. Чтобы присвоить имя константе массива, а затем использовать ее в формуле, сделайте следующее.
-
На вкладке Формулы в группе Определенные имена выберите команду Присвоить имя.
Откроется диалоговое окно Задать имя. -
В поле Имя введите Квартал1.
-
В поле Диапазон введите следующую константу (не забудьте ввести скобки вручную):
={«Январь»;»Февраль»;»Март»}
Содержимое этого диалогового окна должно иметь следующий вид:
-
Нажмите кнопку ОК, а затем выделите строку из трех пустых ячеек.
-
Введите указанную ниже формулу, а затем нажмите сочетание клавиш CTRL+SHIFT+ВВОД.
=Квартал1
Будет отображен следующий результат:
При использовании именованной константы в качестве формулы массива не забудьте ввести знак равенства. Если не сделать этого, массив будет интерпретирован как строка текста и формула не будет работать должным образом. Кроме того, помните, что можно сочетать текст и числа.
Если константы массива не действуют, проверьте наличие перечисленных ниже причин.
-
Возможно, некоторые элементы разделены неверным знаком. Если запятая или точка с запятой опущена или указана в неверном месте, создание константы может завершиться неудачей либо может быть выведено предупреждение.
-
Возможно, выделен диапазон ячеек, не соответствующий числу элементов в константе. Например, если выделен столбец из шести ячеек для использования в константе с пятью ячейками, в пустой ячейке будет выведено значение ошибки #Н/Д. Наоборот, если выделено слишком мало ячеек, значения, не имеющие соответствующей ячейки, будут пропущены.
В следующих ниже примерах демонстрируется несколько способов, при помощи которых можно применять константы массива в формулах массива. В некоторых из примеров используется функция ТРАНСП, которая выполняет преобразование строк в столбцы и наоборот.
Умножение каждого из элементов массива
-
Создайте новый лист и выделите блок пустых ячеек из четырех столбцов и трех строк.
-
Введите указанную ниже формулу, а затем нажмите сочетание клавиш CTRL+SHIFT+ВВОД:
={1;2;3;4:5;6;7;8:9;10;11;12}*2
Возведение в квадрат элементов массива
-
Выделите блок пустых ячеек из четырех столбцов и трех строк.
-
Введите указанную ниже формулу массива, а затем нажмите клавиши CTRL+SHIFT+ВВОД:
={1;2;3;4:5;6;7;8:9;10;11;12}*{1;2;3;4:5;6;7;8:9;10;11;12}
Можно также ввести следующую формулу массива, где используется оператор возведения в степень (^):
={1;2;3;4:5;6;7;8:9;10;11;12}^2
Транспонирование одномерной строки
-
Выделите столбец из пяти пустых ячеек.
-
Введите указанную ниже формулу, а затем нажмите сочетание клавиш CTRL+SHIFT+ВВОД:
=ТРАНСП({1;2;3;4;5})
Даже если была введена горизонтальная константа массива, функция ТРАНСП преобразует константу массива в столбец.
Транспонирование одномерного столбца
-
Выделите строку из пяти пустых ячеек.
-
Введите указанную ниже формулу, а затем нажмите сочетание клавиш CTRL+SHIFT+ВВОД:
=ТРАНСП({1:2:3:4:5})
Даже если была введена вертикальная константа массива, функция ТРАНСП преобразует константу массива в строку.
Транспонирование двумерного массива
-
Выделите блок ячеек из трех столбцов и четырех строк.
-
Введите указанную ниже константу, а затем нажмите клавиши CTRL+SHIFT+ВВОД.
=ТРАНСП({1;2;3;4:5;6;7;8:9;10;11;12})
Функция ТРАНСП преобразует каждую из строк в последовательность столбцов.
В данном разделе приводятся примеры использования основных формул массива.
Создание массивов и констант массива на основе существующих значений
В следующем примере рассматривается использование формул массива для создания связей между диапазонами ячеек на разных листах. Здесь также объясняется, как создать константу массива на основе такого же набора значений.
Создание массива на основе существующих значений
-
На листе Excel выберите диапазон ячеек C8:E10, а затем введите такую формулу:
={10;20;30:40;50;60:70;80;90}
Не забудьте ввести { (открывающую фигурную скобку) перед числом 10 и} (закрывающую фигурную скобку) после числа 90, так как вы создаете массив чисел.
-
Нажмите клавиши CTRL+SHIFT+ВВОД, чтобы поместить этот массив чисел в диапазон ячеек C8:E10 с помощью формулы массива. На листе ячейки с C8 по E10 должны выглядеть следующим образом:
10
20
30
40
50
60
70
80
90
-
Выделите диапазон ячеек C1–E3.
-
Введите указанную ниже формулу, а затем нажмите сочетание клавиш CTRL+SHIFT+ВВОД.
=C8:E10
В ячейках C1–E3 отобразится массив ячеек 3×3 с теми же значениями, что и в ячейках C8–E10.
Создание константы массива на основе существующих значений
-
Выделите диапазон ячеек C1:C3 и нажмите клавишу F2, чтобы перейти в режим правки.
-
Нажмите клавишу F9, чтобы преобразовать ссылки на ячейки в значения. Значения будут преобразованы в константы массива. Теперь формула должна быть ={10;20;30:40;50;60:70;80;90}.
-
Нажмите сочетание клавиш CTRL+SHIFT+ВВОД, чтобы ввести константу массива в качестве формулы массива.
Подсчет знаков в диапазоне ячеек
В примере ниже демонстрируется, как подсчитать число знаков, включая пробелы, в диапазоне ячеек.
-
Скопируйте всю таблицу и вставьте ее на лист, начиная с ячейки A1.
Данные
Это
группа ячеек,
собранных вместе,
чтобы составить
единое предложение.
Общее количество символов в диапазоне ячеек A2:A6
=СУММ(ДЛСТР(A2:A6))
Содержимое ячейки с наибольшим количеством символов (A6)
=ИНДЕКС(A2:A6;ПОИСКПОЗ(МАКС(ДЛСТР(A2:A6));ДЛСТР(A2:A6);0);1)
-
Выберите ячейку A8 и нажмите клавиши CTRL+SHIFT+ВВОД, чтобы увидеть общее количество символов в диапазоне ячеек A2:A6 (66).
-
Выберите ячейку A10 и нажмите клавиши CTRL+SHIFT+ВВОД, чтобы увидеть содержимое ячейки с наибольшим количеством символов в диапазоне A2:A6 (ячейка A3).
Приведенная ниже формула используется в ячейке A8 для подсчета общего количества символов (66) в ячейках A2–A6.
=СУММ(ДЛСТР(A2:A6))
В данном случае функция ДЛСТР возвращает длину каждой текстовой строки в каждой из ячеек диапазона. Затем функция СУММ складывает эти значения и выводит полученный результат (66).
Поиск n наименьших значений в диапазоне
В данном примере демонстрируется, как найти три наименьших значения в диапазоне ячеек.
-
Введите случайные числа в ячейки A1:A11.
-
Выделите ячейки от C1 до C3. Этот набор ячеек будет содержать результаты, возвращенные формулой массива.
-
Введите указанную ниже формулу, а затем нажмите сочетание клавиш CTRL+SHIFT+ВВОД:
=НАИМЕНЬШИЙ(A1:A11,{1:2:3})
В этой формуле используется константа массива, при помощи которой три раза выполняется функция НАИМЕНЬШИЙ, в результате чего возвращаются три элемента массива, находящегося в ячейках A1:A10, которые имеют наименьшие значения (1, 2 и 3 по возрастанию). Чтобы найти дополнительные значения, следует добавить аргументы в константу. С этой формулой также используются дополнительные функции, например СУММ или СРЗНАЧ. Например:
=СУММ(НАИМЕНЬШИЙ(A1:A10,{1;2;3})
=СРЗНАЧ(НАИМЕНЬШИЙ(A1:A10,{1;2;3})
Поиск n наибольших значений в диапазоне
Чтобы найти наибольшие значения в диапазоне, следует заменить функцию НАИМЕНЬШИЙ функцией НАИБОЛЬШИЙ. Кроме того, в следующем примере используются функции СТРОКА и ДВССЫЛ.
-
Выделите ячейки от D1 до D3.
-
В строке формул введите указанную ниже формулу, а затем нажмите клавиши CTRL+SHIFT+ВВОД.
=НАИБОЛЬШИЙ(A1:A10;СТРОКА(ДВССЫЛ(«1:3»)))
На этом этапе может быть полезно ознакомиться с функциями СТРОКА и ДВССЫЛ. При помощи функции СТРОКА можно создать массив последовательных целых чисел. Например, выберите пустой столбец из 10 ячеек в книге практики, введите эту формулу массива и нажмите CTRL+SHIFT+ВВОД:
=СТРОКА(1:10)
В результате выполнения этой формулы будет создан столбец, содержащий 10 последовательных целочисленных значений. Чтобы понять, где может возникнуть проблема, вставьте строку над диапазоном, содержащим формулу массива (то есть над строкой 1). Ссылки на строки будут изменены и в результате выполнения формулы вы получите числа от 2 до 11. Чтобы избежать возникновения этой проблемы, следует добавить в формулу функцию ДВССЫЛ.
=СТРОКА(ДВССЫЛ(«1:10»))
В функции ДВССЫЛ в качестве аргументов используются текстовые строки (именно поэтому диапазон 1:10 заключен в двойные кавычки). Текстовые значения не изменяются при вставке строк или перемещении формулы массива. В результате при выполнении функции СТРОКА всегда будет создаваться нужный массив целочисленных значений.
Рассмотрим формулу, которую вы использовали ранее — =НАИБОЛЬШИЙ(A5:A14,СТРОКА(ДВССЫЛ(«1:3»))), начиная с внутренних скобок и работая наружу: функция ДВССЫЛ возвращает набор текстовых значений, в данном случае значения от 1 до 3. Функция СТРОКА, в свою очередь, создает массив столбцов из трех ячеек. Функция НАИБОЛЬШИЙ использует значения в диапазоне ячеей A5:A14 и вычисляется три раза для каждой ссылки, возвращаемой функцией СТРОКА. Значения 3200, 2700 и 2000 возвращаются в массив столбцов с тремя ячейками. Если вы хотите найти дополнительные значения, добавьте к функции ДВССЫЛ более широкий диапазон ячеек.
Как и в предыдущих примерах, эту формулу можно использовать и с другими функциями, такими как СУММ и СРЗНАЧ.
Поиск наиболее длинной строки текста в диапазоне ячеек
Вернитесь к предыдущему примеру текстовой строки, введите следующую формулу в пустую ячейку и нажмите CTRL+SHIFT+ВВОД:
=ИНДЕКС(A2:A6;ПОИСКПОЗ(МАКС(ДЛСТР(A2:A6));ДЛСТР(A2:A6);0);1)
Отобразится текст «группа ячеек».
Рассмотрим эту формулу подробнее, начиная с элементов в скобках. Функция ДЛСТР возвращает длину каждого элемента в диапазон ячеек A2:A6. Функция МАКС вычисляет наибольшее значение среди этих элементов, соответствующее самой длинной текстовой строке, которая находится в ячейке A3.
Следующие функции немного сложнее. Функция ПОИСКПОЗ вычисляет смещение (относительную позицию) ячейки, которая содержит строку текста максимальной длины. Для этого требуется три аргумента: искомое значение, массив для поиска и тип соответствия. ФункцияПОИСКПОЗ выполняет поиск указанного искомого значения в массиве поиска. В данном случае искомое значение представляет собой строку максимальной длины:
(МАКС(ДЛСТР(A2:A6))
из следующего массива:
ДЛСТР(A2:A6)
Аргумент типа соответствия равен 0. Тип соответствия может иметь значение 1, 0 или -1. Если для аргумента задано значение 1, функция ПОИСКПОЗ возвращает наибольшее значение, которое не превышает искомое значение. Если для аргумента задано значение 0, функция ПОИСКПОЗ возвращает первое значение, равное искомому. Если для аргумента задано значение -1, функция ПОИСКПОЗ ищет наименьшее из значений, которые превышают искомое значение или равны ему. Если тип соответствия не указан, предполагается, что он равен 1.
Наконец, функция ИНДЕКС имеет следующие аргументы: массив, номер строки и номер столбца в этом массиве. Массив образуется диапазоном ячеек A2:A6, функция ПОИСКПОЗ задает адрес ячейки, а последний аргумент (1) указывает, что значение должно быть найдено в первом столбце массива.
В данном разделе приводятся примеры использования более сложных формул массива.
Суммирование диапазона, который содержит значения ошибки
При попытке просуммировать диапазон, содержащий значения ошибки (например, #Н/Д), функция СУММ в Excel не работает. В приведенном ниже примере демонстрируется, как просуммировать значения в диапазоне «Данные», который содержит ошибки.
=СУММ(ЕСЛИ(ЕОШИБКА(Данные);»»;Данные))
Формула создает новый массив, содержащий исходные значения за вычетом любых значений ошибок. Начиная с внутренних функций и работы наружу, функция ЕОШИБКА выполняет поиск ошибок в диапазоне ячеей (Данные). Функция ЕСЛИ возвращает определенное значение, если указанное условие дает в результате значение ИСТИНА, и другое значение, если условие дает в результате значение ЛОЖЬ. В этом случае он возвращает пустые строки («») для всех значений ошибок, так как они оцениваются как ИСТИНА, и возвращает оставшиеся значения из диапазона (Данные), так как они оцениваются как ЛОЖЬ, то есть они не содержат значений ошибок. Функция СУММ затем вычисляет итог для отфильтрованного массива.
Подсчет количества значений ошибки в диапазоне
Формула в этом примере похожа на формулу предыдущего примера, однако она возвращает количество значений ошибки в диапазоне с именем «Данные» вместо исключения таких значений.
=СУММ(ЕСЛИ(ЕОШИБКА(Данные);1;0))
В результате выполнения этой формулы создается массив, в котором для ячеек со значениями ошибки указывается значение 1, а для других ячеек — значение 0. Для получения аналогичного результата указанную формулу можно упростить, удалив третий аргумент функции ЕСЛИ следующим образом.
=СУММ(ЕСЛИ(ЕОШИБКА(Данные);1))
Если этот аргумент не задан и ячейка не содержит значения ошибки, функция ЕСЛИ возвращает значение ЛОЖЬ. Формулу можно упростить еще больше:
=СУММ(ЕСЛИ(ЕОШИБКА(Данные)*1))
Такой вариант формулы допустим, поскольку ИСТИНА*1=1 и ЛОЖЬ*1=0.
Суммирование значений с учетом условий
При выполнении определенных условий может потребоваться вложение значений. Например, в указанной ниже формуле массива суммируются только положительные целые числа в диапазоне с именем «Продажи».
=СУММ(ЕСЛИ(Продажи>0;Продажи))
В результате выполнения функции ЕСЛИ создается массив положительных значений и ложных значений. Функция СУММ будет игнорировать ложные значения, поскольку 0+0=0. Используемый в этой формуле диапазон ячеек может включать любое количество строк и столбцов.
Можно также выполнить суммирование значений с учетом нескольких условий. Например, в следующей формуле массива вычисления выполняются по значениям, которые больше 0 и не меньше 5:
=СУММ((Продажи>0)*(Продажи<=5)*(Продажи))
Следует помнить, что при наличии в указанном диапазоне одной или нескольких ячеек, не являющихся числовыми, эта формула возвратит ошибку.
Доступно создание формул массива с использованием условия типа ИЛИ. Например, можно выполнить сложение значений, которые меньше 5 и больше 15:
=СУММ(ЕСЛИ((Продажи<5)+(Продажи>15);Продажи))
Функция ЕСЛИ возвращает все значения меньше 5 и больше 15, которые затем передаются в функцию СУММ.
В формулах массива нельзя использовать непосредственно функции И или ИЛИ, поскольку эти функции возвращают отдельный результат, ИСТИНА или ЛОЖЬ, а для функций массива требуется массив результатов. Чтобы разрешить эту проблему, воспользуйтесь логикой, показанной в предыдущей формуле. Другими словами, математические операции, такие как сложение и умножение, выполняются в отношении значений, которые отвечают условию ИЛИ или И.
Подсчет среднего значения с исключением нулей
В этом примере демонстрируется, как удалить нулевые значения из диапазона, чтобы затем вычислить для него среднее значение. В формуле используется диапазон данных с именем «Продажи».
=СРЗНАЧ(ЕСЛИ(Продажи<>0,Продажи))
В результате выполнения функции ЕСЛИ создается массив значений, не равных 0, которые затем передаются в функцию СРЗНАЧ.
Подсчет количества различающихся ячеек в двух диапазонах
В данной формуле массива сравниваются значения в двух диапазонах ячеек с именами МоиДанные и ДругиеДанные, в результате чего возвращается количество различающихся ячеек между этими двумя диапазонами. Если содержимое двух диапазонов идентично, формула возвращает 0. Эту формулу можно использовать только для диапазонов ячеек с одинаковым размером и одинаковой размерностью (например, если МоиДанные — это диапазон из 3 строк и 5 столбцов, то диапазон ДругиеДанные тоже должен состоять из 3 строк и 5 столбцов).
=СУММ(ЕСЛИ(МоиДанные=ДругиеДанные;0;1))
В результате выполнения формулы создается массив, имеющий такой же размер, что и сравниваемые диапазоны. Функция ЕСЛИ заполняет массив значениями 0 и 1 (0 для ячеек с различными значениями, 1 — для ячеек с одинаковыми значениями). Затем функция СУММ возвращает сумму значений в массиве.
Эту формулу можно упростить следующим образом:
=СУММ(1*(МоиДанные<>ДругиеДанные))
Подобно формуле, подсчитывающей количество значений ошибки в диапазоне, эта формула работает благодаря тому, что ИСТИНА*1=1, а ЛОЖЬ*1=0.
Поиск позиции максимального значения в диапазоне
Следующая формула массива возвращает номер строки максимального значения в диапазоне с именем «Данные», состоящем из одного столбца:
=МИН(ЕСЛИ(Данные=МАКС(Данные);СТРОКА(Данные);»»))
В результате выполнения функции ЕСЛИ создается новый массив, соответствующий диапазону с именем «Данные». Если соответствующая ячейка содержит максимальное значение в диапазоне, массив будет содержать номер этой строки. В обратном случае массив содержит пустую строку («»). Функция МИН использует полученный массив в качестве своего второго аргумента и возвращает наименьшее значение, соответствующее номеру строки с максимальным значением в диапазоне с именем «Данные». Если диапазон «Данные» содержит одинаковые максимальные значения, формула возвращает строку первого значения.
Если требуется, чтобы формула возвращала фактический адрес ячейки с максимальным значением, воспользуйтесь следующей формулой:
=АДРЕС(МИН(ЕСЛИ(Данные=МАКС(Данные);СТРОКА(Данные);»»));СТОЛБЕЦ(Данные))
Подтверждение
Части этой статьи основаны на серии рубрик «Опытные пользователи Excel», написанных Колином Уилкоксом (Colin Wilcox), а также на главах 14 и 15 из книги «Формулы Excel 2002», написанной Джоном Уокэнбахом (John Walkenbach), бывшим специалистом по Excel со статусом MVP.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Динамические массивы и поведение рассеянного массива
Формулы динамического массива и устаревшие формулы массива CSE
Функция ФИЛЬТР
Функция СЛУЧМАССИВ
Функция ПОСЛЕДОВ
Функция СОРТ
Функция СОРТПО
Функция УНИК
Ошибки #ПЕРЕНОС! в 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 умножаются на ноль и суммируются только нужные заказы.
Ссылки по теме
- Формула массива для извлечения непустых ячеек из диапазона
- Формула массива для извлечения уникальных ячеек из диапазона
- Формула массива для извлечения данных из списка (многоразовый ВПР)
#Руководства
- 25 июл 2022
-
0
Как с помощью массивов ускорить расчёты в таблицах с тысячами значений? Как поменять местами столбцы и строки? Разбираемся на примерах.
Иллюстрация: Meery Mary для Skillbox Media
Рассказывает просто о сложных вещах из мира бизнеса и управления. До редактуры — пять лет в банке и три — в оценке имущества. Разбирается в Excel, финансах и корпоративной жизни.
Часто новичкам в Excel кажется, что массивы — это высший пилотаж в работе с таблицами. На деле всё гораздо проще.
Массивы в Excel — это данные из двух и более смежных ячеек таблицы, которые используют в расчётах как единую группу, одновременно. Массивом может быть одна строка или столбец, несколько строк или столбцов и даже целые таблицы.
Операции с массивами — не основная функциональность Excel, но они делают работу с большими диапазонами значений удобнее и быстрее. С помощью массивов можно проводить расчёты не поочерёдно с каждой ячейкой диапазона, а со всем диапазоном одновременно. Или создать формулу, которая выполнит сразу несколько действий с любым количеством ячеек.
В статье разберёмся:
- какие виды массивов есть в Excel;
- что такое формула массива и как она работает.
Подробно покажем на примерах, как выполнить четыре базовые операции с помощью формул массивов и операторов Excel:
- построчно перемножить значения двух столбцов;
- умножить одно значение сразу на весь столбец;
- выполнить два действия одной формулой;
- поменять местами положение столбцов и строк таблицы.
В конце расскажем, как создать формулу массива в «Google Таблицах».
Массивы в Excel бывают одномерными и двумерными.
В одномерных массивах все данные расположены в одной строке или в одном столбце. В зависимости от этого их делят на горизонтальные и вертикальные.
Скриншот: Excel / Skillbox Media
Скриншот: Excel / Skillbox Media
В двумерных массивах данные расположены сразу в нескольких столбцах и строках. Такие массивы могут образовывать целые таблицы, а иногда занимают даже несколько листов.
Скриншот: Excel / Skillbox Media
Работа с массивами в Excel похожа на стандартную работу с одиночными ячейками. Отличие в том, что расчёты и операции проводят одновременно для всех значений диапазонов, а не для одного. Для этого используют формулы массивов.
Формула массива — формула, где в качестве входящих параметров используют диапазоны значений, а не одиночные ячейки. Диапазоны значений обозначаются через двоеточие :. Например, A1:A10 или А1:В10.
С формулами массива можно выполнить несколько математических действий одновременно. Например, чтобы перемножить значения двух столбцов и затем суммировать полученные числа, понадобится одна формула массива и одно действие.
В целом формулы массивов работают так же, как и обычные формулы. В них можно использовать любые математические действия.
Формулы массивов можно использовать как для одной ячейки, так и для нескольких одновременно. Например, можно посчитать в одной ячейке сумму значений из нескольких столбцов. Такая формула массива называется одноячеечной. Или можно перемножить значения двух столбцов построчно, а результат вывести в третий. Формула массива будет называться многоячеечной.
В следующих разделах покажем четыре примера, как создавать и использовать формулы массивов.
Допустим, нужно рассчитать смету устройства фундаментов. У нас есть перечень необходимых работ, их объёмы и цена единиц измерения объёмов.
Скриншот: Excel / Skillbox Media
Определим стоимость каждой работы.
Можно пойти классическим путём — перемножить первые ячейки столбцов «Количество» и «Цена ед., руб.», а затем растянуть результат вниз на все остальные виды работ. Но если видов будет несколько сотен или тысяч, этот вариант может быть неудобен.
Формула массивов выведет результаты одновременно для всего диапазона — никаких дополнительных действий выполнять не потребуется. Рассмотрим, как это сделать.
Шаг 1. Выделяем столбец, в котором хотим получить результат расчёта, — в нашем случае это диапазон E2:E9. В строке ссылок вводим знак равенства.
Скриншот: Excel / Skillbox Media
Шаг 2. Выделяем первый массив, который участвует в расчётах, — все значения столбца «Количество». Одновременно с этим в строке ссылок появляется выбранный диапазон: B2:B9.
Скриншот: Excel / Skillbox Media
Шаг 3. Ставим знак умножения в строке ссылок и выбираем второй массив — все значения столбца «Цена ед., руб.».
Строка ссылок принимает вид: fx=B2:B9*D2:D9. Это значит, что значения первого массива должны умножиться на значения второго массива.
Скриншот: Excel / Skillbox Media
Шаг 4. Нажимаем Enter — в столбце «Стоимость, руб.» появляется результат расчёта. Так, в один клик, формула сработала сразу для всех строк.
Скриншот: Excel / Skillbox Media
По такому же принципу можно проводить разные арифметические вычисления для одного массива.
Допустим, для нашей сметы нужно рассчитать дополнительные расходы, составляющие долю в общей стоимости работ.
Скриншот: Excel / Skillbox Media
Как и в первом случае, можно перемножить первую ячейку столбца «Доля от стоимости работ» и ячейку с общей стоимостью работ. Затем растянуть результат вниз на все остальные расходы. А можно, для удобства и ускорения процесса, воспользоваться формулой массивов. Она позволит одним действием посчитать сумму всех расходов.
Шаг 1. Выделяем столбец для результата расчёта: С13:С16. В строке ссылок вводим знак равенства.
Скриншот: Excel / Skillbox Media
Шаг 2. Выделяем массив, который участвует в расчётах, — все значения столбца «Доля от стоимости работ». В формуле строки ссылок появляется выбранный диапазон: B13:B16. Добавляем к нему знак умножения и выбираем ячейку с общей стоимостью работ: E10.
Скриншот: Excel / Skillbox Media
Шаг 3. Нажимаем Enter. Во всём столбце «Стоимость, руб.» появляются результаты расчётов.
Скриншот: Excel / Skillbox Media
Вернёмся к нашему первому примеру со сметой. Там мы рассчитывали стоимость каждой работы отдельно. Общую стоимость работ в этом случае было проще определить путём сложения всех полученных значений.
Скриншот: Excel / Skillbox Media
Предположим, нам нужно получить общую стоимость устройства фундаментов одним действием, а стоимость каждой работы отдельно при этом не важна.
Для этого воспользуемся формулой массивов и оператором СУММ. Они выполнят одновременно два математических действия: перемножат столбцы и суммируют полученные результаты.
Шаг 1. Выделяем ячейку, в которой хотим получить результат расчёта. В строке ссылок вводим знак равенства и оператор СУММ и открываем скобку.
Скриншот: Excel / Skillbox Media
Шаг 2. По аналогии с алгоритмом из предыдущего раздела, выделяем первый массив — значения столбца «Количество» и второй массив — значения столбца «Цена ед., руб.». Ставим между ними знак умножения и закрываем скобку.
Строка ссылок принимает вид: fx=СУММ(B2:B9*D2:D9). Это значит, что значения первого массива должны перемножиться со значениями второго массива, а все полученные результаты — суммироваться.
Скриншот: Excel / Skillbox Media
Шаг 3. Нажимаем Enter. В выбранной ячейке появляется результат расчёта. Формула рассчитала одновременно два действия: перемножила значения ячеек двух массивов и суммировала полученные результаты.
Скриншот: Excel / Skillbox Media
По такой же схеме в формулах массивов можно использовать и другие функции Excel. Отличие от их классического применения будет в том, что аргументами будут не отдельные ячейки, а массивы таких ячеек.
Иногда при работе в Excel нужно поменять положение столбцов или строк — транспортировать их. Например, перевести шапку таблицы из горизонтального положения в вертикальное. Делать это вручную долго — особенно, когда ячеек очень много. Ускорить процесс помогут массивы и оператор ТРАНСП:
Шаг 1. Выделяем ячейку, в которой хотим получить результат операции. В строке ссылок вводим знак равенства и оператор ТРАНСП и открываем скобку.
Скриншот: Excel / Skillbox Media
Шаг 2. Выделяем шапку таблицы и закрываем скобку. Строка ссылок принимает вид: fx=ТРАНСП(A1:E1).
Скриншот: Excel / Skillbox Media
Шаг 3. Нажимаем Enter — функция меняет положение шапки таблицы на вертикальное.
Скриншот: Excel / Skillbox Media
Как создать формулу массива в «Google Таблицах»? Всё точно так же, как в Excel, но нужно добавить оператор ARRAYFORMULA. Его ставят перед всей формулой массива в строке ссылок. Например, если вы хотите перемножить данные в двух столбцах, формула в готовом виде будет выглядеть так:
fx=ARRAYFORMULA(B2:B9*D2:D9).
Скриншот: Google Таблицы / Skillbox Media
Другие материалы Skillbox Media по Excel
- Как сделать сводные таблицы в Excel — детальная инструкция со скриншотами
- Руководство: как сделать ВПР в Excel и перенести данные из одной таблицы в другую
- Руководство по макросам для новичков — для чего нужны и как их сделать
- Инструкция: как закреплять строки и столбцы в Excel
- Руководство по созданию выпадающих списков в Excel — как упростить заполнение таблицы повторяющимися данными
Научитесь: Excel + Google Таблицы с нуля до PRO
Узнать больше
Как узнать, является ли данная формула формулой массива? Что вообще она означает?
На этапе создания формула (или также функция) сама по себе не является ни формулой массива, ни обычной формулой. Это вы определяете, как Excel должен истолковать формулу, которую вы вводите. То, что формула является формулой массива – это не столько особенность самой формулы, а скорее способом, которым программа Excel введенную формулу «обрабатывает». Подтверждение формулы с помощью сочетания клавиш «Ctrl + Shitf + Enter» – это является для Excelя командой на выполнение (обработку данных) как массив вычислений. Тогда он используется в качестве аргумента функции и возвращает в качестве результата вычислений таблицу (массив данных).
Примеры формул массива и отличие от обычных формул в Excel
Некоторые функции Excelя по умолчанию в качестве аргумента принимают диапазон ячеек (массив) и в результате возвращают одно значение. Отличными примерами являются функции СУММ, СЧЕТЕСЛИ, СРЗНАЧ и т.д. Для этих функций не имеет никакого значения, вводите ли вы их как функции массива или нет. Они и так обрабатывают таблицы, и найдут выход (сработают правильно) из любой ситуации. Вот такие маленькие Excel-евские приспособленцы.
К счастью, существуют другие функции, которые работают совершенно иначе, т.е. в зависимости от вашего решения относительно их принадлежности к «функциям массива» (иногда они вообще не хотят работать). Прекрасным примером является функция ЕСЛИ.
Когда формула является формулой массива, а когда обычной?
Для начала определимся как выглядит обычный массив значений в Excel. Это значения, которые находятся внутри фигурных скобок и разделены между собой точкой с запятой. Например:
{23;-32;15;7} – это синтаксис массива значений в Excel. Он может быть использован в аргументах функций.
Диапазон ячеек A1:A4 – так же является массивом значений в Excel. Естественно так же используется в аргументах функций. Например сравним результаты вычислений двух формул: =СУММ(A1:A4) и =СУММ({23;-32;15;7}) – они идентичны:
Визуально формула массива находится так же внутри фигурных скобок, но они не должны быть введены вручную, а только лишь при помощи комбинации клавиш CTRL+SHIFT+Enter. Если ввести вручную фигурные скобки, то формула не будет выполнятся в массиве – это будет синтаксическая ошибка в Excel.
Формула массива (введенная с помощью сочитания CTRL+SHIFT+Enter) будет использоваться везде, где вы хотите, чтобы функция, которая обычно работает с отдельными значениями (ячейками), внезапно повела себя иначе и приняла в качестве аргумента и вернула в качестве результата массив значений (таблицу). Вернемся к уже упомянутой функции ЕСЛИ. В качестве аргумента она принимает логическое значение ИСТИНА или ЛОЖЬ. В классической форме:
=ЕСЛИ($A$1>0;»больше»;»меньше»)
Если значение в ячейке A1 больше нуля, в качестве аргумента функция получит значение ИСТИНА и в качестве результата вернет текстовую строку «больше». Однако, если бы вы хотели проверить несколько ячеек сразу и передать результат такой проверки другой функции, вы должны были бы использовать вышеуказанную формулу как формулу массива. Для этого при вводе нажмем сочитание клавиш CTRL+SHIFT+Enter, а не как обычно (просто Enter):
{=ЕСЛИ($A$1:$A$4>0;»больше»;»меньше»)}
В качестве аргумента функция принимает целый диапазон $A$1:$A$4. В результате проверки каждой ячейки диапазона в памяти компьютера создается таблица значений в массиве. Схематически таблицу можно отобразить так:
А так выглядят эти значения в массиве:
{ИСТИНА;ЛОЖЬ;ИСТИНА;ИСТИНА}
Например, чтобы прочитать этот массив и получить второе значение (сделать выборку значений) воспользуемся функцией:
=ИНДЕКС({ИСТИНА;ЛОЖЬ;ИСТИНА;ИСТИНА};2)
Тоже самое что и:
Затем создается другая таблица, значения которой зависят непосредственно от значений в первой таблице. Если элемент в первом массиве имеет значение ИСТИНА, во втором массиве он примет значение «больше». Если он имеет значение ЛОЖЬ, элемент во второй таблице примет значение «меньше». После этой операции первая таблица удаляется из памяти компьютера, и в конечном счете, функция возвращает массив {«больше», «меньше», «больше», «больше»}. Схематически вторую таблицу можно отобразить так:
Так же ее можно прочитать функцией:
=ИНДЕКС({«больше»;»меньше»;»больше»;»больше»};2)
В примере с функцией ЕСЛИ была введена формула массива только в одну ячейку, поэтому в результате получили только одно значение, соответствующее первому значению в таблице. Однако достаточно ввести формулу массива в диапазон ячеек, чтобы увидеть все значения массива результатов. Для этого выделяем диапазон из нескольких ячеек, нажимаем клавишу F2 (или заново вводим формулу вручную) и жмем CTRL+SHIFT+Enter.
В примере (рисунок ниже) видно, что таблица результатов содержит ровно четыре элемента, о которых я упоминал выше.
Примеры как использовать формулу массива в Excel
Это все хорошо, но возникают некоторые вопросы: «Зачем же нужна формула массива?» или «Как или где использовать формулу в массиве?», «Чем она лучше обычной формулы?».
Разумеется, массив, возвращаемый функцией ЕСЛИ, может передаваться далее на «обработку» в качестве аргумента для другой функции.
Пример. Представим, что вы хотели бы найти сумму ячеек B7:B10, но только тех, которые имеют значение больше нуля. Конечно же, вы можете использовать функцию СУММЕСЛИ, однако в нашем примере мы хотим сделать это только с помощью формулы массива. Суммируя значения ячеек нашего диапазона, необходимо будет как-то избавиться от значения «-32». Функции СУММ необходимо передать массив, в котором содержатся только значения больше нуля. Везде там, где значение меньше нуля, мы заменяем его на ноль, что, конечно же, не повлияет на результат. Как вы уже знаете, временную таблицу с соответствующими значениями вы можете получить, используя функцию ЕСЛИ. В конечном итоге соответствующая формула будет выглядеть так:
Вводим формулу и не забываем для подтверждения ввода нажать комбинацию клавиш CTRL+SHIFT+Enter. В результате проверки каждой ячейки диапазона $A$1:$A$4 (является ли значение больше нуля) в памяти компьютера создается массив {ИСТИНА; ЛОЖЬ; ИСТИНА; ИСТИНА}. Затем создается очередная таблица. Если элемент в первом массиве имеет значение ИСТИНА, то во второй таблице будет отображаться значение из соответствующей ячейки. Если он имеет значение ЛОЖЬ, то элемент во второй таблице примет значение 0. После этой операции первая таблица удаляется из памяти компьютера, и в конечном итоге функция ЕСЛИ возвращает массив {23; 0; 15; 7}. Затем эта таблица передается в качестве аргумента функции =СУММ({23; 0; 15; 7}), которая, согласно своему предназначению, возвращает сумму всех элементов в таблице. В нашем примере сумма равна 45. В завершении, посмотрите, что произойдет, если вы скажете Excelю обработать приведенную выше формулу не как формулу массива.
Ни одна из описанных выше таблиц, в этом случае, не будет создана. Только одна ячейка диапазона будет проверена (ячейка в той же строке, в которой находится функция). В нашем случае 15>0 значит, как первый аргумент функция ЕСЛИ получит логическое значение ИСТИНА. Затем ВЕСЬ диапазон A1:A4 будет передан функции СУММ, и в результате функция возвращает значение равное 13 (23-32+15+7). Если бы в ячейке вместо значения 15 было число меньше нуля, функция ЕСЛИ в качестве аргумента получила бы значение ЛОЖЬ, и, следовательно, только значение нуля было бы передано функции СУММ. Наша функция СУММ в результате также вернет значение равное нулю.
Как отличать формулу массива от обычной формулы
При нажатии клавиш CTRL+SHIFT+Enter для подтверждения ввода в строке формул будут отображены фигурные скобки по краям. Значит данная формула выполняется в массиве. Но что если еще на этапе создания неизвестно какой тип формул следует применять?
Правильное «распознавание», когда следует нажимать CTRL+SHIFT+Enter, а когда просто Enter полностью зависит от понимания того, как работают массивы в формулах. Когда вы это поймете, сможете сказать, что конкретную формулу следует вводить (подтверждать) сочетанием клавиш – CTRL+SHIFT+Enter.
Конечно же, не подтвержденная, а просто как формула также может возвращать КАКОЙ-ТО результат (в чем вы могли только что убедиться сами). Однако, если вы сможете прочитать формулу и понять механизм, то вы заметите, что такой результат является ОШИБОЧНЫМ. И поэтому для правильной работы формулы вам необходимо ее подтвердить «Ctr+Shift+Enter». Как и все, понимание и использование формул массива требует практики. Тем не менее, стоит некоторое время посвятить тому, чтобы во всем разобраться. Потому что формулы массива позволяют решить многие проблемы, которые на первый взгляд могут казаться неразрешимыми.
Примеры вычислений и анализа формул массива
Каким образом можно просматривать и проверять значения промежуточных результатов расчета, например, содержание массивов, созданных в памяти компьютера и используемых для выполнения последующих действий? Ничего сложного! Пример 1:
Перейдите на ячейку с формулой, а затем в строке формул выделите в первом аргументе функции ссылку на диапазон ячеек:
Нажмите клавишу F9 (или «Пересчет» в правом верхнем углу меню «Формулы»), и вы получите (в строке формулы) значения аргументов, которые используются для вычислений, как показано ниже:
— запись с использованием двоеточий означает, что мы имеем дело с элементами вертикального (столбикового) массива, элементы горизонтального (строкового) разделены стандартным символом — «;» (точкой с запятой).
Пример 2: Снова перейдите на ячейку с формулой массива, но на этот раз выделите первый аргумент функции целиком вместе со знаком сравнения «>» и значением критерия – «0»).
Нажмите кнопку F9, и вы получите массив результатов вычислений, как показано ниже:
То есть, созданный в памяти компьютера массив:
{ИСТИНА:ЛОЖЬ:ИСТИНА:ИСТИНА}
Пример 3: Выделите ячейку формулой массива где в функцию СУММ вложена функция ЕСЛИ. Затем в строке формул выберите весь аргумент функции СУММ (вместе с функцией ЕСЛИ):
Нажмите клавишу F9 и вы получите массив итоговых результатов вычисления, которые используются для суммирования, как показано ниже:
То есть, созданный в памяти компьютера массив:
{23157}
Пример 4: Просто перейдите на ячейку с формулой B1 и выберите инструмент «ФОРМУЛЫ»-«Зависимости формул»-«Вычислить формулу»
После чего нажмите на кнопку «Вычислить»:
В результате ссылка на диапазон ячеек в аргументе вложенной функции ЕСЛИ разложилась на массив значений. Снова нажмите на кнопку «Вычислить»:
Мы получили массив значений теперь уже для функции СУММ. Такой же, как и в примере 3.
Читайте также: Работа с массивами функций в Excel.
Часто неопытные пользователи Excel возмущаются, что формула не работает. В конце концов оказалось, как легко догадаться, формулу в массиве вводили как обычную (просто Enter). Речь идет не о недоразумении, которое произошло, а о том факте, что у этих пользователей возникает вопрос: как избегать таких ошибок? Поэтому важно сразу во всем разобраться, чтобы в дальнейшем больше не задавать таких вопросов.
Ранее я уже посвятил несколько заметок использованию формул массива:
- Excel. Транспонирование строк в столбцы (или столбцов в строки) с помощью формулы массива
- Excel. Суммирование по диапазону, содержащему ошибку, с помощью формулы массива
Полученные комментарии подсказали мне, что пользователи не часто используют формулы массива. Более того мало кто знаком с ними.
Предлагаю вашему вниманию посвященный массивам фрагмент книги Джона Уокенбаха. Подробное руководство по созданию формул в Excel 2002. – М.: Издательский дом «Вильямс», 2002. – 624 с.
Скачать заметку в формате Word, примеры в формате Excel
В Excel массивы могут быть одномерными (их еще называют векторами) или двумерными (матрицы). Размерность массива зависит от количества строк и столбцов в нем. Например, одномерный массив может храниться в диапазоне, состоящем из одной строки (горизонтальный массив) или столбце (вертикальный массив). Двумерный массив хранится в прямоугольном диапазоне ячеек. Excel (в отличие от языка программирования VBA) не поддерживает трехмерные массивы.
Однако, как будет показано далее, массивы вовсе не обязательно хранить в ячейках. Можно производить операции над массивами, которые существуют только в памяти Excel. Можно применять формулы массива для выполнения операций и получения результатов вычислений. Сама формула массива может находиться во многих ячейках или в одной единственной. Существует два вида формул массива: формула массива, которая возвращает несколько значений, и другая, которая возвращает только одно значение.
Формула массива, возвращающая несколько значений
Рис. 1 демонстрирует рабочий лист, на котором производится расчет объема продаж товаров. Для этого вычисляют значение в столбце D (объем продаж каждого товара), используя формулу =В2*С2, а затем копируют ее в расположенные ниже ячейки.
Рис. 1. Диапазон D2:D6 содержит традиционные формулы произведения (в ячейках D2 и D3 различные формулы, хотя и похожие)
После копирования этой формулы рабочий лист содержит пять формул в столбце D. Альтернативный путь вычислений – использование единой формулы (формулы массива) для вычисления всех пяти значений в диапазоне D2:D6. Эта единственная формула занимает пять ячеек и возвращает массив из пяти значений. Для создания единой формулы массива нужно произвести следующие операции:
- Выделить диапазон, в котором будет сохраняться результат вычислений. В данном случае это диапазон D2:D6.
- Ввести формулу: =В2:В6*С2:С6
- Обычно после введения формулы нажимается клавиша <Enter>, но только не в случае формулы массива. Так как введенная формула является формулой массива, нажимается комбинация клавиш <Ctrl+Shifi+Enter>.
Формула добавляется во все пять выделенных ячеек (рис. 2), при этом в строке формул появится следующее выражение:{=B2:B6*C2:C6}
Рис. 2. Диапазон D2:D6 содержит формулу массива (в ячейках D2 и D3 одна и та же формула)
Excel заключил формулу в фигурные скобки. Это говорит о том, что данная формула является формулой массива.
Эта формула производит вычисления и возвращает массив из пяти элементов. В данном случае формула массива производит операции над двумя другими массивами, оба из которых хранятся в диапазонах ячеек. Значения первого массива хранятся в диапазоне В2:В6, а второго — в С2:С6. Для отображения итогового массива требуется пять ячеек, потому что в одной ячейке нельзя отобразить более чем одно значение. Этим объясняется, зачем нужно выделять пять ячеек перед введением формулы.
Конечно, эта формула массива возвращает точно такие же значения, что и пять формул, введенных в соответствующие ячейки диапазона D2:D6
=В2*С2
=ВЗ*СЗ
=В4*С4
=В5*С5
=В6*С6
Использование единой формулы массива предпочтительнее, чем использование нескольких формул, так как предоставляет определенные преимущества:
- Легко убедиться, что все формулы в диапазоне идентичны.
- Использование формул массива, возвращающих сразу несколько значений, избавляет от случайных изменений в формуле. Нельзя просто изменить одну ячейку в формуле массива.
- Использование формул массива почти всегда предотвращает вмешательство начинающих пользователей, которые хотят внести свои изменения в формулы.
Формула массива, возвращающая одно значение
Обратимся к рис. 3. Следующая формула массива размещается в одной ячейке – D8:
{=СУММ(B2:B6*C2:C6)}
Рис. 3. Сумма произведений в виде формулы массива
Эту формулу можно ввести в любую ячейку. При вводе формулы не нужно использовать фигурные скобки, а после введения не забудьте использовать комбинацию клавиш <Ctrl+Shift+Enter>.
Эта формула массива возвращает общую сумму, на которую продано товаров. Важно понимать, что значение, возвращаемое этой формулой, не зависит от информации в столбце D. Фактически можно удалить столбец D, а формула будет выполняться по-прежнему.
Эта формула оперирует значениями, находящимися в двух массивах. Оба массива хранятся в ячейках. Первый – в диапазоне ячеек В2:В6, второй – C2:С6. Формула перемножает соответствующие значения в этих двух массивах и создает новый массив (который существует только в памяти компьютера). Функция СУММ выполняет операцию над этим новым массивом и возвращает значение суммы его элементов.
Создание массива констант
В предыдущих примерах использовались массивы, хранящиеся в диапазоне ячеек рабочего листа. Но… массив не обязательно должен храниться в диапазоне ячеек. Массив, который хранится исключительно в памяти, называется массивом констант.
Для создания массива констант нужно список его элементов заключить в фигурные скобки. Вот пример горизонтального массива констант, состоящего из пяти элементов: {1;0;1;0;1}. Для создания вертикального массива констант используйте в качестве разделителя двоеточие.
Формула =СУММ({1;0;1;0;1}) использует функцию СУММ, аргументом которой является массив констант. Формула возвращает значение суммы элементов массива, равное 3. Отметим, что эта формула использует массив в качестве аргумента, но при этом не является формулой массива. Поэтому не нужно использовать клавиши <Ctrl+Shift+Enter> для ввода формулы.
В случае непосредственного задания массива (как показано выше) необходимо заключать элементы массива в фигурные скобки. С другой стороны, при вводе формулы массива фигурные скобки не ставятся.
Пока, возможно, трудно заметить, какие-либо преимущества использования массивов констант. Действительно, формула =СУММ(1;0;1;0;1) возвращает точно такое же значение, как и =СУММ({1;0;1;0;1}).
Очевидные преимущества становятся ясны при дальнейшем рассмотрении. Следующая формула использует два массива констант: =СУММ({1;2;3;4}*{5;6;7;8}). Эта формула создает в памяти новый массив, который состоит из произведения соответствующих элементов двух других массивов: {5;12;21;32}. Созданный массив используется впоследствии в качестве аргумента для функции СУММ, которая возвращает результат вычислений (70). Формула эквивалентна следующей формуле, которая не использует массивы: =СУММ(1*5;2*6;3*7;4*8)
Можно составлять формулы массивов для разных типов массивов. Например, можно составить формулу, в которой будет одновременно использоваться массив констант и массив, элементы которого хранятся в диапазоне ячеек (рис. 4). Для подсчета суммы значений, которые являются произведением элементов массива в диапазоне Al:D1 и соответствующих элементов массива констант, применяется следующая формула: ={СУММ((A1:D1*{1;2;3;4})}. Эта формула эквивалентна следующей: =СУММ(А1*1;В1*2;С1*3;D1*4)
Рис. 4. Сумма произведений массива рабочего листа и массива констант
Элементы массива констант
Массивы констант могут состоять из чисел, текста, логических значений (например, ИСТИНА, ЛОЖЬ) и даже значений ошибок, таких как #Н/Д. Числа в массиве могут быть целыми, с десятичной точкой или экспоненциальными. Текст в массиве констант заключается в двойные кавычки (например, "
Вторник"
). Массив констант может состоять из элементов разного типа, например: {1;2,3;4;ИСТИНА;ЛОЖЬ;ИСТИНА;"
Вася"
;"
Петя"
}
Массивы констант не могут включать в себя формулы, функции или другие массивы. Числовые значения не могут включать символы доллара, точки с запятой (точки), круглые скобки или символ процента. Например, неверный массив констант: {КОРЕНЬ(32);$56,32;12,5%}
Понятие размерности массива
Массивы могут быть одномерными или двумерными. Ориентация одномерного массива может быть горизонтальной или вертикальной.
Одномерные горизонтальные массивы
Элементы в одномерном горизонтальном массиве разделяются точкой с запятой (запятыми в английской версии программы). Ниже приведен пример одномерного горизонтального массива констант: {1;2;3;4;5}
Для отображения этого массива в диапазоне необходимо пять последовательных ячеек в строке. Чтобы ввести этот массив в диапазон, выделите диапазон ячеек, состоящий из одной строки и пяти столбцов. Затем введите: ={1;2;3;4;5} и нажмите <Ctrl+Shtft+Enter> (рис. 5).
Рис. 5. Одномерный горизонтальный массив.
Обратите внимание, внутренние фигурные скобки обозначают массив констант; внешние фигурные скобки – формулу массива. Если ввести этот массив в горизонтальный диапазон, состоящий более чем из пяти ячеек, то лишние ячейки будут содержать #Н/Д (что указывает на недопустимые значения). Если ввести этот массив в вертикальный диапазон ячеек, то в каждой ячейке диапазона появится первый элемент (1) массива.
Ниже приведен пример другого горизонтального массива. Он состоит из семи элементов и создает текстовую последовательность: {"
Понедельник"
;"
Вторник"
;"
Среда"
;"
Четверг"
;"
Пятница"
;"
Суббота"
;"
Воскресенье"
}. Для ввода этого массива выделите семь элементов в строке и введите следующий текст: ={"
Понедельник"
;"
Вторник"
;"
Среда"
;"
Четверг"
,"
Пятница"
;"
Суббота"
;"
Воскресенье"
}. Нажмите <Ctrl+Shift+Enter>.
Одномерные вертикальные массивы
Элементы в одномерном вертикальном массиве разделяются двоеточием (точкой с запятой в английской версии программы). Ниже приведен пример вертикального массива констант, состоящего из шести элементов: {10:20:30:40:50:60}. Для отображения этого массива в диапазоне необходимо шесть ячеек в столбце. Чтобы ввести этот массив в диапазон, выделите диапазон ячеек, состоящий из шести строк и одного столбца. Затем введите: ={10:20:30:40:50:60} и нажмите <Ctrl+Shift+Enter>.
Ниже приведен пример другого вертикального массива, состоящего из четырех элементов: {"
Иванов"
:"
Петров"
:"
Сидоров"
:"
Итого"
}
Двумерные массивы
В двумерных массивах используются точки с запятыми (запятые в английской версии программы) для разделения горизонтальных элементов и двоеточия (точки с запятой в английской версии программы) для разделения вертикальных элементов. Ниже приведен пример массива констант размерностью 3×4: {1;2;3;4:5;6;7;8:9;10;11;12}. Для отображения этого массива в диапазоне требуется двенадцать ячеек. Чтобы ввести этот массив в диапазон, выделите диапазон ячеек, состоящий из трех строк и четырех столбцов. Затем введите следующую формулу ={1;2;3;4:5;6;7;8:9;10;11;12} после чего нажмите <Ctrl+Shift+Enter> (рис. 6).
Рис. 6. Двумерный массив
Если ввести массив в диапазон, состоящий из большего числа ячеек, Ехсеl отобразит #Н/Д в лишних ячейках (рис. 7).
Рис. 7. Показано, что получится, если ввести массив 3×4 в диапазон ячеек 10×5.
Каждая строчка двумерного массива должна содержать одинаковое количество элементов. Например, представленный ниже массив недопустимый, потому что его третья строка состоит только из трех элементов; {1;2;3;4:5;6;7;8:9;10;11}. Excel не даст возможности ввести формулу, в которой присутствует недопустимый формат массива.
Присвоение имени массивам констант
Excel позволяет создать массив констант, присвоить ему имя и затем использовать это имя в формулах. Фактически присвоение имени массиву заключается в присвоении имени формуле (рис. 8). Пройдите по меню: Формулы – Диспетчер имен.
Рис. 8. Показано, как присвоить имя массиву, используя диалоговое окно Создание имени.
Массиву присвоено имя ДеньНедели, которое соответствует следующему массиву констант: {"
Понедельник"
;"
Вторник"
;"
Среда"
;"
Четверг"
;"
Пятница"
;"
Суббота"
;"
Воскресенье"
}. Отметим, что в диалоговом окне Создание имени для задания массива необходимо использовать знак равенства (=) перед массивом констант. В противном случае массив будет воспринят как текстовая строка. Также необходимо самостоятельно взять элементы массива в фигурные скобки. Excel в этом случае не вводит скобки автоматически. После присвоения имени массиву, его имя можно использовать в формулах (рис. 9).
Рис. 9. Ввод поименованного массива в диапазон Al:G1
Так как элементы массива разделяют точки с запятой, ориентация массива будет горизонтальной. Для создания вертикальных массивов используются двоеточия. Также можно воспользоваться функцией транспонирования для того, что бы вставить горизонтальный массив в вертикальный диапазон (рис. 10). Для этого введите в диапазон семи вертикальных ячеек A1:A7 формулу массива: {=ТРАНСП(ДеньНедели)}
Рис. 10. Ввод горизонтального массива в вертикальный диапазон
При использовании функции Excel ИНДЕКС можно получить доступ к отдельному элементу массива. Например, ниже приведенная формула возвращает значение «Четверг», четвертого элемента массива ДеньНедели: =ИНДЕКС(ДеньНедели;4)
Если вас заинтересовали формулы массива, рекомендую книгу Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel