Операции с массивами
Массив – это группа данных, которая расположена на листе в смежных ячейках. По большому счету, любую таблицу можно считать массивом, но не каждый из них является таблицей, так как он может являться просто диапазоном. По своей сущности такие области могут быть одномерными или двумерными (матрицы). В первом случае все данные располагаются только в одном столбце или строке.
Во втором — в нескольких одновременно.
Кроме того, среди одномерных массивов выделяют горизонтальный и вертикальный тип, в зависимости от того, что они собой представляют – строку или столбец.
Нужно отметить, что алгоритм работы с подобными диапазонами несколько отличается от более привычных операций с одиночными ячейками, хотя и общего между ними тоже много. Давайте рассмотрим нюансы подобных операций.
Создание формулы
Формула массива – это выражение, с помощью которого производится обработка диапазона с целью получения итогового результата, отображаемого цельным массивом или в одной ячейке. Например, для того, чтобы умножить один диапазон на второй применяют формулу по следующему шаблону:
Над диапазонами данных можно также выполнять операции сложения, вычитания, деления и другие арифметические действия.
Координаты массива имеют вид адресов первой её ячейки и последней, разделенные двоеточием. Если диапазон двумерный, то первая и последняя ячейки расположены по диагонали друг от друга. Например, адрес одномерного массива может быть таким: A2:A7.
А пример адреса двумерного диапазона выглядит следующим образом: A2:D7.
- Чтобы рассчитать подобную формулу, нужно выделить на листе область, в которую будет выводиться результат, и ввести в строку формул выражение для вычисления.
После ввода следует нажать не на кнопку Enter, как обычно, а набрать комбинацию клавиш Ctrl+Shift+Enter. После этого выражение в строке формул будет автоматически взято в фигурные скобки, а ячейки на листе будут заполнены данными, полученными в результате вычисления, в пределах всего выделенного диапазона.
Изменение содержимого массива
Если вы в дальнейшем попытаетесь удалить содержимое или изменить любую из ячеек, которая расположена в диапазоне, куда выводится результат, то ваше действие окончится неудачей. Также ничего не выйдет, если вы сделаете попытку отредактировать данные в строке функций. При этом появится информационное сообщение, в котором будет говориться, что нельзя изменять часть массива. Данное сообщение появится даже в том случае, если у вас не было цели производить какие-либо изменения, а вы просто случайно дважды щелкнули мышью по ячейке диапазона.
Если вы закроете, это сообщение, нажав на кнопку «OK», а потом попытаетесь переместить курсор с помощью мышки, или просто нажмете кнопку «Enter», то информационное сообщение появится опять. Не получится также закрыть окно программы или сохранить документ. Все время будет появляться это назойливое сообщение, которое блокирует любые действия. А выход из ситуации есть и он довольно прост
- Закройте информационное окно, нажав на кнопку «OK».
Затем нажмете на кнопку «Отмена», которая расположена в группе значков слева от строки формул, и представляет собой пиктограмму в виде крестика. Также можно нажать на кнопку Esc на клавиатуре. После любой из этих операций произойдет отмена действия, и вы сможете работать с листом так, как и прежде.
Но что делать, если действительно нужно удалить или изменить формулу массива? В этом случае следует выполнить нижеуказанные действия.
Для изменения формулы выделите курсором, зажав левую кнопку мыши, весь диапазон на листе, куда выводится результат
Это очень важно, так как если вы выделите только одну ячейку массива, то ничего не получится. Затем в строке формул проведите необходимую корректировку
После того, как изменения внесены, набираем комбинацию Ctrl+Shift+Esc. Формула будет изменена.
- Для удаления формулы массива нужно точно так же, как и в предыдущем случае, выделить курсором весь диапазон ячеек, в котором она находится. Затем нажать на кнопку Delete на клавиатуре.
После этого формула будет удалена со всей области. Теперь в неё можно будет вводить любые данные.
Использование Erase
Функция Erase может использоваться для массивов, но она работает по-разному в зависимости от типа массива.
Для статического массива функция Erase сбрасывает все значения по умолчанию. Если массив состоит из целых чисел, то все значения устанавливаются в ноль. Если массив состоит из строк, то все строки устанавливаются в «» и так далее.
Для динамического массива функция удаления стирает память. То есть она удаляет массив. Если вы хотите использовать его снова, вы должны использовать ReDim для выделения памяти.
Давайте рассмотрим пример статического массива. Этот пример аналогичен примеру ArrayLoops в последнем разделе с одним отличием — мы используем Erase после установки значений. Когда значение будет распечатано, все они будут равны нулю.
Public Sub EraseStatic() ' Объявить массив Dim arrMarks(0 To 3) As Long ' Заполните массив случайными числами Dim i As Long For i = LBound(arrMarks) To UBound(arrMarks) arrMarks(i) = 5 * Rnd Next i ' ВСЕ ЗНАЧЕНИЯ УСТАНОВЛЕНЫ НА НОЛЬ Erase arrMarks ' Распечатайте значения - там все теперь ноль Debug.Print "Место нахождения", "Значение" For i = LBound(arrMarks) To UBound(arrMarks) Debug.Print i, arrMarks(i) Next i End Sub
Теперь мы попробуем тот же пример с динамикой. После того, как мы используем Erase, все места в массиве были удалены. Нам нужно использовать ReDim, если мы хотим использовать массив снова.
Если мы попытаемся получить доступ к членам этого массива, мы получим ошибку «Индекс вне диапазона».
Public Sub EraseDynamic() ' Объявить массив Dim arrMarks() As Long ReDim arrMarks(0 To 3) ' Заполните массив случайными числами Dim i As Long For i = LBound(arrMarks) To UBound(arrMarks) arrMarks(i) = 5 * Rnd Next i ' arrMarks теперь освобожден. Места не существуют. Erase arrMarks End Sub
Пример: меняем местами строки и столбцы
Очень часто может появляться ситуация, когда нужно строки и колонки менять местами. Такая операция называется транспонированием. С помощью массивов функций это делать невероятно легко. Представим, у нас есть такой двумерный массив, расположенный по вертикали.
14
Нам нужно выделить диапазон данных, в котором будет размещаться готовая таблица. Поскольку в нашем примере 8 рядов и 2 колонки, то соответственно нужно выделять наоборот, 8 колонок и 2 ряда.
После этого надо ввести формулу =ТРАНСП, введя в качестве аргумента функции A1:B8.
15
После этого нажимаем вышеуказанную комбинацию клавиш для создания формулы массива, после чего получаем транспонированную таблицу.
16
Размер массива
Размер массива является произведением длин всех его измерений. Он представляет собой общее число элементов, в данный момент содержащихся в массиве. Например, в следующем примере объявляется двухмерный массив с четырьмя элементами в каждом измерении. Как видно из выходных данных в примере, размер массива равен 16 (или (3 + 1) * (3 + 1).
Примечание
Это обсуждение размера массива не применяется к массивам зубчатых размеров. Сведения о массивах немассивности и определении размера массива массивов см .
Размер массива можно определить с помощью свойства Array.Length. Длину каждого измерения многомерного массива можно узнать с помощью Array.GetLength метода.
Можно изменить размер переменной массива, назначив ей новый объект массива или используя инструкцию инструкции . В следующем примере оператор используется для изменения массива 100-element на массив 51-element.
Существует ряд особенностей, о которых следует помнить при работе с размером массива.
Примечания | |
---|---|
Длина измерения | Индекс каждого измерения основан на 0, что означает, что он находится в диапазоне от 0 до верхней границы. Таким образом, длина данного измерения больше, чем объявленная верхняя граница этого измерения. |
Ограничения длины | Длина каждого измерения массива ограничена максимальным значением типа данных, которое равно Int32.MaxValue или (2 ^ 31)-1. Однако общий размер массива также ограничен доступной памятью в системе. При попытке инициализировать массив, размер которого превышает объем доступной памяти, среда выполнения создает исключение OutOfMemoryException . |
Размер и размер элемента | Размер массива не зависит от типа его элементов. Размер всегда представляет общее число элементов, а не число байтов, используемых в памяти. |
Потребление памяти | Небезопасно делать какие-либо предположения относительно способа хранения массива в памяти. Хранение зависит от разрядности платформы, поэтому один и тот же массив может занимать больше памяти в 64-разрядных системах, чем в 32-разрядных. В зависимости от конфигурации системы при инициализации массива среда CLR может использовать такие способы хранения, как упаковка элементов максимально близко друг к другу или выравнивание всех элементов по естественным аппаратным границам памяти. Кроме того, массив нуждается в хранении служебной информации, и размер этой информации возрастает при добавлении каждого измерения. |
Определение массива
Чтобы понять, что такое массив, необходимо вспомнить, что такое переменная.
Переменная — область памяти, за которой закреплено определенной имя, например «x = 5» или «Имя = “Андрей”». Переменная всегда содержит только одно значение, т.е. не может быть разделена на более мелкие части. Данное определение больше подходит для переменных в языках программирования. Чтобы не отходить от темы Excel, переопределим его.
Каждый лист Excel является таблицей, за которой закреплена область в памяти компьютера. Таблица состоит из ячеек, которые имеют свой уникальный адрес. Сама ячейка не может быть разделена на более мелкие части, поэтому ее можно назвать переменной. Массив содержит набор переменных и имеет имя. То, что называют в Excel диапазоном, по своей сути является массивом: строка листа, столбец листа, количество ячеек >1, все это массивы данных. НО! Чтобы не вносить путаницу в определения функций и т.п. данные понятия необходимо разделять, т.к. приложение по-разному обрабатывает диапазоны и массивы.
Чтобы дать программе понять, что формула содержит массив, нужно после ввода данных в строку формул одновременно нажать клавиши клавиатуры Ctrl + Shift + Enter. Все ее содержимое заключится в фигурные скобки {}.
Далее будет подробнее описана работа с массивами.
Массив констант
Константа это та же переменная, только не меняющая значение. Если значение переменной можно поменять в любое время, то константа задается один раз и больше не меняется. Наверное, самая известная константа – число Пи.
Массив констант отличается от обычного массива тем, что обычный массив ссылается на диапазон ячеек, а массив констант задается пользователем вручную:
Представьте, что Вам необходимо использовать в расчетах большой массив, состоящий из сотни констант, и использовать его нужно многократно. Набивать константы каждый раз для каждой формулы ручками – дело «неблагодарное». Поэтому, создайте синоним массива с помощью функции присвоения имен, расположенной на вкладке «Формулы» -> раздел «Определенные имена» -> кнопка «Диспетчер имен». В появившемся окне нажмите на кнопку «Создать», после чего появиться следующая форма:
- Имя – имя диапазона;
- Область – место, где данное имя будет доступно;
- Примечание – комментарий. Текст, введенный здесь, будет высвечиваться при выборе имени массива из определенной для него области;
- Диапазон – сам массив в виде ссылки на диапазон либо массив констант «=».
После заполнения формы, нажмите «OK».
Теперь данный массив доступен по заданному имени в ячейках из определенной для него области.
О том, как их применять рассказывается дальше.
Как в Ворде сделать фигурную скобку
Те, кто часто использует Microsoft Word для работы с текстовыми документами, наверняка знают об основных возможностях этой программы, особенно тех, которыми приходится пользоваться относительно часто. Малоопытным пользователям в этом плане куда сложнее, причем трудности могут возникнуть даже с задачами, решение которых кажется очевидным. Одной из таковых является написание фигурных скобок, и сегодня сегодня мы расскажем о том, как это сделать.
Фигурные скобки в Ворде
Кажется, что поставить фигурные скобки в Word проще простого, тем более что эти символы нарисованы на клавиатуре. Но нажав на них в русской раскладке, мы получим буквы “х” и “ъ”, а в английской — квадратные скобки . Так как же получить фигурные скобки? Сделать это можно несколькими способами, причем не все они подразумевают использование клавиш.
Способ 1: Ввод с клавиатуры
Итак, мы видим интересующие нас символы на паре клавиш «х» и «ъ». Для того чтобы получить вместо них фигурные скобки, необходимо выполнить следующее:
Нажмите клавиши «SHIFT+х», то есть «SHIFT» и ту кнопку, на которой находится открывающаяся фигурная скобка (русская буква «х»).
Открывающаяся скобка будет добавлена. Теперь кликните в том месте, где необходимо установить закрывающуюся скобку.
Нажмите «SHIFT+ъ» (SHIFT и кнопка, на которой находится интересующий нас символ). Закрывающаяся скобка будет добавлена.
Мы рассмотрели самый простой способ, с помощью которого можно поставить фигурные скобки в текстовом документе Microsoft Word. У него есть небольшой недостаток, который заключается в необходимости переключения на другую языковую раскладку и использовании дополнительных клавиш. Рассмотренное ниже решение таких проблем лишено.
Способ 2: Вставка символов
В составе Microsoft Word имеется огромный набор символов и знаков, которые также можно вставлять в документы. Большинство из них вы не найдете на клавиатуре, но и интересующие нас фигурные скобки тоже входят в этот «комплект».
- Кликните ЛКМ там, где нужно добавить открывающуюся фигурную скобку, и перейдите во вкладку «Вставка».
Разверните меню кнопки «Символ», расположенной в группе «Символы» и выберите пункт «Другие символы».
В открывшемся окне из выпадающего меню «Набор» выберите «Основная латиница» и прокрутите немного вниз появившийся список символов.
Найдите там открывающуюся фигурную скобку, кликните по ней и нажмите кнопку «Вставить», расположенную внизу.
Не закрывая окно «Символ» (его можно просто отодвинуть в сторону), напишите то, что должно находиться внутри скобок, предварительно нажав ЛКМ в нужном месте, или сделайте это после выполнения следующего шага.
Кликните в том месте, где должна находиться закрывающаяся фигурная скобка, выделите ее в окне «Символ» и нажмите по кнопке «Вставить», после чего нажмите «Закрыть».
При желании вы можете более детально изучить символы, представленные в одноименном разделе текстового редактора от Microsoft – там есть много знаков, которые, в отличие от фигурных скобок, отсутствуют на клавиатуре.
Способ 3: Преобразование кода
Даже бегло изучив интерфейс диалогового окна «Символ», можно заметить пункт «Код знака», напротив которого после выделения символа появляется четырехзначная комбинация, состоящая из одних только цифр или цифр с большими латинскими буквами.
Это кодовая комбинация, зная которую можно добавлять необходимые символы в документ значительно быстрее, чем это делается рассмотренным выше способом. После ввода кода нужно также нажать определенные клавиши, которые и преобразуют его в необходимый символ.
- Установите указатель в месте, где должна находиться открывающаяся фигурная скобка, и введите «007B» без кавычек.
Для добавления закрывающейся фигурной скобки введите в том месте, где она должна находиться, код «007D» без кавычек, тоже в английской раскладке.
Нажмите «ALT+X» для преобразования введенного кода в закрывающуюся фигурную скобку.
Таким образом мы с вами не только узнали кодовые комбинации, закрепленные за открывающейся и закрывающейся фигурной скобкой, но и горячие клавиши, которые позволяют преобразовать их в этот знак. По такому же алгоритму можно добавлять и любые другие символы, представленные во встроенном наборе текстового редактора.
Заключение
Вот, собственно, и все, теперь вы знаете обо всех существующих методах, с помощью которых в Microsoft Word можно вставить фигурные скобки. Проще всего это сделать с клавиатуры, но использование встроенного набора символов позволяет ознакомиться с его содержимым и научиться использовать его в дальнейшей работе.
Мы рады, что смогли помочь Вам в решении проблемы. Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
5 основных функции для работы с массивами
Доброго времени суток друзья!
Сегодня я бы хотел затронуть тему массивов, так как частенько возникает ситуация, когда нужно найти значение в большом массиве данных. Для этих целей в Excel существует целый раздел функции для работы с массивами, которые помогают нам выполнять работы с массивами, но сейчас мы рассмотрим самые распространенные.
Обратите внимание, на эти функции, так как работа с огромными массивами данных, одна из самых распространенных и правильное использование этих функции позволит вам значительно упростить и облегчить работу с таблицами Excel. Ну, что же, изучим необходимые функции для работы с массивами:. Ну, что же, изучим необходимые функции для работы с массивами:
Ну, что же, изучим необходимые функции для работы с массивами:
Split
Функция Split возвращает массив, который содержит определенное количество значений, разделенных на основе разделителя.
СинтаксисПараметры и Описание
- Выражение — требуемый параметр. Строковое выражение, которое может содержать строки с разделителями.
- Разделитель — необязательный параметр. Параметр, который используется для преобразования в массивы на основе разделителя.
- Count — необязательный параметр. Количество подстрок, которые нужно вернуть, и если указано как -1, то возвращаются все подстроки.
- Compare — Необязательный параметр. Этот параметр указывает, какой метод сравнения следует использовать.
- = vbBinaryCompare — выполняет двоичное сравнение
- 1 = vbTextCompare — выполняет текстовое сравнение
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click() ' Splitting based on delimiter comma '$' Dim a as Variant Dim b as Variant a = Split("Red $ Blue $ Yellow","$") b = ubound(a) For i = 0 to b msgbox("The value of array in " & i & " is :" & a(i)) Next End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Функция, которая возвращает массив, содержащий указанное количество значений. Разделить на разделитель.
Как в ворде поставить фигурные скобки? Ответы на вопросы
- Щелкните ячейку, в которую нужно ввести формулу массива.
- Введите необходимую формулу. В формулах массива используется синтаксис обычных формул. …
- Нажмите ввод (если у вас есть текущая Microsoft 365 подписка); в противном случае нажмите CTRL+SHIFT+ВВОД.
Мы рассмотрели самый простой способ, с помощью которого можно поставить фигурные скобки в текстовом документе Microsoft Word. У него есть небольшой недостаток, который заключается в необходимости переключения на другую языковую раскладку и использовании дополнительных клавиш. Рассмотренное ниже решение таких проблем лишено.
Как ввести формулу массива
Формула массива в Excel может быть двух разновидностей:
- Первая категория – формулы, исполняющие множество вычислений ради одного ответа.
- Вторая категория – формулы, исполняющие множество вычислений.
В первом случае ввод формулы осуществляется по следующему алгоритму:
- Выбирается табличная ячейка, в которую надо ввести формулу.
- Вводится соответствующая формула. В случае массивов синтаксис точно такой же, как и при стандартных функциях. В начале текста всегда проставляется символ «Равно».
- Нажимается «Ввод» (клавиша на клавиатуре – «Enter»).
Во втором случае ввод производится по похожей схеме:
- Пользователь выбирает диапазон табличных ячеек, куда будет вводиться формула.
- Вводится синтаксис. В самом начале также проставляется равенство.
- Нажимается «Ввод».
В некоторых версиях Экселя для активации формулы нужно зажать другую комбинацию кнопок на клавиатуре – «Ctrl», «Enter», «Shift».
Формулы массива в 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 умножаются на ноль и суммируются только нужные заказы.
ReDim с Preserve
Если мы используем ReDim для существующего массива, то массив и его содержимое будут удалены.
В следующем примере второй оператор ReDim создаст совершенно новый массив. Исходный массив и его содержимое будут удалены.
Sub UsingRedim() Dim arr() As String ' Установить массив в слоты от 0 до 2 ReDim arr(0 To 2) arr(0) = "Яблоко" ' Массив с яблоком теперь удален ReDim arr(0 To 3) End Sub
Если мы хотим расширить размер массива без потери содержимого, мы можем использовать ключевое слово Preserve.
Когда мы используем Redim Preserve, новый массив должен начинаться с того же начального размера, например мы не можем сохранить от (0 до 2) до (от 1 до 3) или до (от 2 до 10), поскольку они являются различными начальными размерами.
В следующем коде мы создаем массив с использованием ReDim, а затем заполняем массив типами фруктов.
Затем мы используем Preserve для увеличения размера массива, чтобы не потерять оригинальное содержимое.
Sub UsingRedimPreserve() Dim arr() As String ' Установить массив в слоты от 0 до 1 ReDim arr(0 To 2) arr(0) = "Яблоко" arr(1) = "Апельсин" arr(2) = "Груша" ' Изменение размера и сохранение исходного содержимого ReDim Preserve arr(0 To 5) End Sub
Из приведенных ниже снимков экрана видно, что исходное содержимое массива было «сохранено».
Предостережение: в большинстве случаев вам не нужно изменять размер массива, как мы делали в этом разделе. Если вы изменяете размер массива несколько раз, то вам захочется рассмотреть возможность использования коллекции.
Использование Preserve с 2-мерными массивами
Preserve работает только с верхней границей массива.
Например, если у вас есть двумерный массив, вы можете сохранить только второе измерение, как показано в следующем примере:
Sub Preserve2D() Dim arr() As Long ' Установите начальный размер ReDim arr(1 To 2, 1 To 5) ' Изменить размер верхнего измерения ReDim Preserve arr(1 To 2, 1 To 10) End Sub
Если мы попытаемся использовать Preserve на нижней границе, мы получим ошибку «Индекс вне диапазона».
В следующем коде мы используем Preserve для первого измерения. Запуск этого кода приведет к ошибке «Индекс вне диапазона»:
Sub Preserve2DError() Dim arr() As Long ' Установите начальный размер ReDim arr(1 To 2, 1 To 5) ' Ошибка «Вне диапазона» ReDim Preserve arr(1 To 5, 1 To 5) End Sub
Когда мы читаем из диапазона в массив, он автоматически создает двумерный массив, даже если у нас есть только один столбец.
Применяются те же правила сохранения. Мы можем использовать Preserve только на верхней границе, как показано в следующем примере:
Sub Preserve2DRange() Dim arr As Variant ' Назначить диапазон массиву arr = Sheet1.Range("A1:A5").Value ' Preserve будет работать только на верхней границе ReDim Preserve arr(1 To 5, 1 To 7) End Sub
Формулы массива в EXCEL, возвращающие несколько значений
history 31 марта 2013 г.
Формулы массива
Формулы массива могут возвращать как отдельное значение, так и несколько значений. В первом случае для отображения результата потребуется одна ячейка, во втором – диапазон. В этой статье рассмотрим формулы массива, которые возвращают несколько значений.
Начнем сразу с примеров.
СОВЕТ :Начальные знания о формулах массива можно прочитать в статье Формулы массива. Знакомство . О формулах массива, возвращающих одно значение можно прочитать в статье Формулы массива, возвращающие одно значение .
Пример1. Создание таблицы умножения
Решение задачи по созданию таблицы умножения приведено в файле примера .
Для расчета всей таблицы умножения использована только одна формула массива =B4:K4*A5:A14
Чтобы создать таблицу умножения нужно:
- создать строку (см. строка 4 на рисунке выше) и столбец (A) со значениями – множителями (1, 2, 3, …);
- выделить диапазон B5:K14 , в котором будет размещены результаты произведения множителей;
- в Строке формул ввести формулу массива =B4:K4*A5:A14 и нажать CTRL+SHIFT+ENTER ;
- все выделенные ячейки автоматически заполнятся результатами перемножения соответствующих множителей из строки и столбца.
Теперь попробуем удалить любой компонент формулы массива. Например, щелкните ячейку E7 и нажмите клавишу DELETE . Появится сообщение: Нельзя изменять часть массива . Для того, чтобы удалить формулу массива, возвращающую множество значений, придется выделить весь диапазон ячеек B 5: K 14 и нажать клавишу DELETE .
Таким же образом можно изменить формулу: выделите весь диапазон ячеек, в Строке формул измените формулу. После этого нужно нажать сочетание клавиш CTRL+SHIFT+ ENTER , чтобы подтвердить изменение формулы.
Очевидно, что такая процедура изменения/ удаления формулы массива снижает риск ее случайного изменения.
Иногда возникает необходимость увеличить диапазон формулы массива. Увеличим размер таблицы умножения до 10х14:
- выделите диапазон ячеек, содержащий текущую формулу массива ( B5:K14 ), а также пустые ячейки ( B15:K18 ), расположенные ниже.
- в Строке формул измените формулу массива на =B4:K4*A5:A18 ;
- нажмите сочетание клавиш CTRL+SHIFT+ENTER . Формула в ячейках B5:K14 будет обновлена, при этом экземпляры новой формулы (и результаты их вычисления) будут вставлены в новые ячейки B15:K18 .
Такой же подход можно использовать при обычном перемножении значений двух столбцов.
Пример2. Три наибольших значения
Найдем 3 наибольших значения в списке и выведем их в 3-х ячейках.
Формула массива для решения этой задачи: =НАИБОЛЬШИЙ(A2:A11;<1:2:3>)
- выделите 3 ячейки, которые будут содержать 3 наибольших значения.
- в Строке формул введите вышеуказанную формулу массива;
- нажмите сочетание клавиш CTRL+SHIFT+ENTER .
Выделенные ячейки будут заполнены значениями
Стоит обратить внимание на использованный в формуле массива массив констант . Элементы разделены двоеточием, что заставляет интерпретировать EXCEL данный массив констант как столбец
Эту задачу можно конечно решить и без формул массива записав в 3-х ячейках 3 различные формулы: =НАИБОЛЬШИЙ(A2:A11;1) =НАИБОЛЬШИЙ(A2:A11;2) =НАИБОЛЬШИЙ(A2:A11;3) Здесь наглядно видно, что формулы массива представляют лишь сокращенную запись группы обычных формул.
Виды массивов и формулы массивов в Excel
Массивы в Excel бывают одномерными и двумерными.
В одномерных массивах все данные расположены в одной строке или в одном столбце. В зависимости от этого их делят на горизонтальные и вертикальные.
Пример одномерного вертикального массиваСкриншот: Excel / Skillbox Media
Пример одномерного горизонтального массиваСкриншот: Excel / Skillbox Media
В двумерных массивах данные расположены сразу в нескольких столбцах и строках. Такие массивы могут образовывать целые таблицы, а иногда занимают даже несколько листов.
Пример двумерного массиваСкриншот: Excel / Skillbox Media
Работа с массивами в Excel похожа на стандартную работу с одиночными ячейками. Отличие в том, что расчёты и операции проводят одновременно для всех значений диапазонов, а не для одного. Для этого используют формулы массивов.
Формула массива — формула, где в качестве входящих параметров используют диапазоны значений, а не одиночные ячейки. Диапазоны значений обозначаются через двоеточие . Например, A1:A10 или А1:В10.
С формулами массива можно выполнить несколько математических действий одновременно. Например, чтобы перемножить значения двух столбцов и затем суммировать полученные числа, понадобится одна формула массива и одно действие.
В целом формулы массивов работают так же, как и обычные формулы. В них можно использовать любые математические действия.
Формулы массивов можно использовать как для одной ячейки, так и для нескольких одновременно. Например, можно посчитать в одной ячейке сумму значений из нескольких столбцов. Такая формула массива называется одноячеечной. Или можно перемножить значения двух столбцов построчно, а результат вывести в третий. Формула массива будет называться многоячеечной.