Функции ссылок и массивов excel
Содержание:
Функция АДРЕС
Возвращает текст, представляющий адрес ячейки, заданной номерами строки и столбца.
Синтаксис: =АДРЕС(строка; столбец; ; ; ), где:
- Строка – обязательный аргумент. Число, представляющая номер строки, для которой необходимо вернуть адрес;
- Столбец – обязательный аргумент. Число, представляющее номер столбца целевой ячейки.
-
тип_закрепления – необязательный аргумент. Число от 1 до 4, обозначающее закрепление индексов ссылки:
- 1 – значение по умолчанию, когда закреплены все индексы;
- 2 – закрепление индекса строки;
- 3 – закрепление индекса столбца;
- 4 – адрес без закреплений.
-
стиль_ссылки – необязательный аргумент. Логическое значение:
- ИСТИНА – формат ссылок «A1»;
- ЛОЖЬ – формат ссылок «R1C1».
- имя_листа – необязательный аргумент. Строка, представляющая имя листа, который необходимо добавить к тексту адреса ячейки.
Пример использования:
=АДРЕС>(1;1)>=АДРЕС>(1;1;4)>=АДРЕС>(1;1;4;ЛОЖЬ)>=АДРЕС>(1;1;4;ЛОЖЬ;»Лист1″)>
Оператор ПРОИЗВЕД
В Эксель, помимо использования формулы, также предусмотрена специальная функция для выполнения умножения под названием – ПРОИЗВЕД. Работа с функцией предполагает следующие шаги:
- Выбираем ячейку, в которой планируем выполнить расчеты и нажимаем кнопку “Вставить функцию” рядом со строкой формул.
- В открывшемся окне мастера функций выбираем категорию “Математические”, находим оператор “ПРОИЗВЕД”, отмечаем его и жмем OK.
- Откроется окно с аргументами функции (максимум, до 255), в которых могут быть указаны:
- обычные числа;
- ссылки на ячейки (относительные или абсолютные), которые пишутся либо вручную, либо просто выбираются путем клика на листе;
- комбинированные аргументы, т.е. и конкретные числа, и ссылки на ячейки.
- Когда все аргументы заполнены, жмем кнопку OK и получаем результат в ячейке с функцией (в нашем случае – произведение ячеек).
Примечание: Мы можем сразу набрать формулу функции в нужной ячейке, не прибегая к помощи Мастера, если знаем, как правильно это сделать.
Пример 6: умножаем столбец на ячейку
Предположим, нам нужно посчитать скидку по перечню товаров, представленному в одном столбце (B). Размер скидки указан в отдельной ячейке (E2).
Алгоритм действий следующий:
- Для начала пишем в самой верхней ячейке столбца C (не считая шапки) формулу умножения ячейки B2 на E2.
- Не спешим нажимать клавишу Enter. Дело в том, что сейчас в формуле используются относительные ссылки, а это значит, что при ее копировании в другие ячейки произойдет смещение адресов (т.е. B3 будет умножаться на E3). Нам же нужно зафиксировать адрес E2, т.е. сделать ссылку на эту ячейку абсолютной. Для этого находясь курсором до, после, или внутри адреса (между буквой и цифрой) нажимаем клавишу F4.
- Перед обозначением столбца и номером строки появятся символы “$”. Теперь можно нажимать Enter.
- Растягиваем формулу на другие ячейки с помощью маркера заполнения.
- Как мы можем убедиться на примере формулы в ячейке C9, в ней по-прежнему участвует ячейка E2, а это значит, что мы все сделали правильно.
Пример 3: умножаем ячейку на ячейку
Предположим, у нас есть таблица, в которой указана стоимость товара и количество. Нам нужно найти сумму.
Алгоритм действий практически идентичен тому, что мы рассмотрели выше, за исключение того, что в качестве второго числа мы, также, указываем адрес ячейки, которая будет участвовать в умножении.
Формулу пишем в ячейке D2, и она имеет следующий конечный вид: =B2*С2 .
Жмем клавишу Enter и получаем требуемый результат.
Примечание: умножение можно комбинировать с другим математическими действиями. В формуле может быть более более двух сомножителей (если это необходимо), представленных в виде конкретных чисел или ссылок на ячейки.
Многомерные массивы в Excel Visual Basic
Массивы Visual Basic, о которых шла речь выше, считаются одномерными. Это означает, что они хранят простой список имён. Однако, массивы могут иметь множество измерений. Например, двумерный массив можно сравнить с сеткой значений.
Предположим, что нужно сохранить ежедневные показатели продаж за январь для 5 разных команд. Для этого потребуется двумерный массив, состоящий из 5 наборов показателей для 31 дня. Объявим массив таким образом:
Dim Jan_Sales_Figures(1 To 31, 1 To 5) As Currency
Для того, чтобы получить доступ к элементам массива Jan_Sales_Figures, нужно использовать два индекса, указывающих день месяца и номер команды. Например, адрес элемента, содержащего показатели продаж для 2-ой команды за 15-ое января будет записан так:
Jan_Sales_Figures(15, 2)
Таким же образом можно объявить массив с 3-мя и более измерениями – достаточно добавить дополнительные измерения в объявление массива и использовать дополнительные индексы для ссылки на элементы этого массива.
Функция ВПР
Вертикальное первое равенство. Ищет совпадение по ключу в первом столбце определенного диапазона и возвращает значение из указанного столбца этого диапазона в совпавшей с ключом строке.
Синтаксис: =ВПР(ключ; диапазон; номер_столбца; ), где
- ключ – обязательный аргумент. Искомое значение, для которого необходимо вернуть значение.
- диапазон – обязательный аргумент. Таблица, в которой необходимо найти значение по ключу. Первый столбец таблицы (диапазона) должен содержать значение совпадающее с ключом, иначе будет возвращена ошибка #Н/Д.
- номер_столбца – обязательный аргумент. Порядковый номер столбца в указанном диапазоне из которого необходимо возвратить значение в случае совпадения ключа.
-
интервальный_просмотр – необязательный аргумент. Логическое значение указывающее тип просмотра:
- ЛОЖЬ – функция ищет точное совпадение по первому столбцу таблицы. Если возможно несколько совпадений, то возвращено будет самое первое. Если совпадение не найдено, то функция возвращает ошибку #Н/Д.
- ИСТИНА – функция ищет приблизительное совпадение. Является значением по умолчанию. Приблизительное совпадение означает, если не было найдено ни одного совпадения, то функция вернет значение предыдущего ключа. При этом предыдущим будет считаться тот ключ, который идет перед искомым согласно сортировке от меньшего к большему либо от А до Я. Поэтому, перед применением функции с данным интервальным просмотром, предварительно отсортируйте первый столбец таблицы по возрастанию, так как, если это не сделать, функция может вернуть неправильный результат. Когда найдено несколько совпадений, возвращается последнее из них.
Важно не путать, что номер столбца указывается не по индексу на листе, а по порядку в указанном диапазоне. Пример использования:
Пример использования:
На изображении приведено 3 таблицы. Первая и вторая таблицы располагают исходными данными. Третья таблица собрана из первых двух.В первой таблице приведены категории товара и расположение каждой категории.Во второй категории имеется список всех товаров с указанием цен.Третья таблица содержать часть товаров для которых необходимо определить цену и расположение.
Для цены необходимо использовать функцию ВПР с точным совпадением (интервальный просмотр ЛОЖЬ), так как данный параметр определен для всех товаров и не предусматривает использование цены другого товара, если вдруг она по случайности еще не определена.
Для определения расположения товара используется ВПР с приблизительным совпадением (интервальный просмотр ИСТИНА), так как распределение товара осуществляется по категориям. Из-за того, что наименование товара состоит из названия категории плюс дополнительный текст, по условиям сортировки от А до Я наименования товаров будут идти сразу после наименования категории, поэтому когда в таблице не обнаруживается совпадений с ключом подтягивается первое значение сверху.
В принципе, данный подход устраивал бы, если для товаров, для которых отсутствует категория, не подтягивалось расположение
Обратите внимание на товар «Лук Подмосковье». Для него определено расположение «Стелаж №2», хотя в первой таблице нет категории «Лук»
Это происходит все по тем же причинам, когда функцией не обнаруживается равенств, то она определяет для значения значение меньшего самого близкого по сортировке ключа, а для «Лук Подмосковье» это категория «Картофель».
Он подобного эффекта можно избавиться путем определения категории из наименования товара используя текстовые функции ЛЕВСИМВ(C11;ПОИСК(» «;C11)-1), которые вернут все символы до первого пробела, а также изменить интервальный просмотр на точный.
Помимо всего описанного, функция ВПР позволяет применять для текстовых значений подстановочные символы – * (звездочка – любое количество любых символов) и ? (один любой символ). Например, для искомого значения «*» & «иван» & «*» могут подойти строки Иван, Иванов, диван и т.д.
Также данная функция может искать значения в массивах – =ВПР(1;{2;»Два»:1;»Один»};2;ЛОЖЬ) – результат выполнения строка «Два».
Erase
Функция Erase используется для сброса значений массивов фиксированного размера и освобождения памяти динамических массивов.Он ведет себя в зависимости от типа массивов.
Синтаксис
- Фиксированный числовой массив, каждый элемент в массиве сбрасывается до нуля.
- Исправлен строковый массив, каждый элемент в массиве сбрасывается до нулевой длины «».
- Массив объектов, каждый элемент в массиве сбрасывается до специального значения .
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
Dim NumArray(3)
NumArray(0) = "VBScript"
NumArray(1) = 1.05
NumArray(2) = 25
NumArray(3) = #23/04/2013#
Dim DynamicArray()
ReDim DynamicArray(9) ' Allocate storage space.
Erase NumArray ' Each element is reinitialized.
Erase DynamicArray ' Free memory used by array.
' All values would be erased.
msgbox("The value at Zeroth index of NumArray is " & NumArray(0))
msgbox("The value at First index of NumArray is " & NumArray(1))
msgbox("The value at Second index of NumArray is " & NumArray(2))
msgbox("The value at Third index of NumArray is " & NumArray(3))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Функция, которая восстанавливает выделенную память для переменных массива.
Предыдущие статьи
- Функции даты-времени в VBA. Работа с датой и временем — 25/03/2018 17:33
- Работа со строками в VBA: InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse — 25/03/2018 15:57
- Работа с циклами в VBA:loop, for each, for next — 17/03/2018 18:40
- Решения, условия, алгоритмы if, then, switch в VBA Excel — 10/03/2018 21:52
- Константы в VBA Excel — Const. Как присвоить значение константам — 10/03/2018 07:53
- Поле ввода в VBA Excel — InputBox. Синтаксис, параметры и описание — 10/03/2018 07:03
- Окно сообщения в VBA Excel — MsgBox — 09/03/2018 06:34
- Простые Макросы Excel, написать шаг за шагом — 10/02/2018 20:07
- Переменные в VBA, значения и типы — 26/06/2017 06:37
- Программирование vba, макросы в Word и Excel — 19/12/2015 16:18
Подход №2
Второй подход можно применить как для уменьшения, так и для увеличения размера массива в Excel. Здесь главное, чтобы у старого и нового массивов была как минимум одна общая ячейка.
На рисунке ниже представлен массив, диапазон которого необходимо уменьшить с С1:С10 до C1:C5.

Чтобы проделать это, выполните следующие действия:
- Выделите диапазон, содержащий формулу массива.
- Нажмите клавишу F2, чтобы перейти в режим редактирования.
- Нажмите комбинацию клавиш Ctrl+Enter. Это действие вводит отдельную формулу в каждую из ячеек диапазона. Причем эти формулы не являются формулами массивов. Например, в ячейке С3 содержится следующая формула:
- Перезадайте диапазон, в котором будет находиться новый массив, и сделайте активной ячейку из старого массива. Это позволит сохранить формулу, пусть и с “ложными” ссылками. В нашем случае мы просто уменьшим размер диапазона до С1:C5:
- Снова перейдите в режим редактирования. На данном этапе можно перезадать области, участвующие в формировании массива. В нашем случае мы перезададим обе области:
- Нажмите комбинацию клавиш Ctrl+Shift+Enter, чтобы сохранить изменения. Размер массива будет уменьшен.
- Удалите лишние формулы из диапазона C6:C10.
Как видите, оба подхода достаточно сложные и запутанные, поэтому их реальная применимость в Excel под большим вопросом. Все манипуляции, проведенные выше, сводятся к одному – сохранить формулу. А точнее ее структуру, поскольку ссылки в большинстве случаев приходится перезадавать заново. На много проще скопировать формулу из старого массива, затем удалить его и создать новый.
Итак, в данном уроке мы рассмотрели несколько подходов к редактированию формул массива. Будете Вы ими пользоваться или нет – это Ваше право. Если желаете получить еще больше информации о массивах в Excel, читайте следующие статьи:
- Знакомство с формулами массива в Excel
- Многоячеечные формулы массива в Excel
- Одноячеечные формулы массива в Excel
- Массивы констант в Excel
- Редактирование формул массива в Excel
- Применение формул массива в Excel
Урок подготовлен для Вас командой сайта office-guru.ru
Перевел: Антон АндроновПравила перепечаткиЕще больше уроков по Microsoft Excel
Массивы в Excel пример использования
Массивы в Excel пример использования
Добрый день, уважаемые подписчики и читатели блога! Сегодня чуть больше поговорим о массивах и практике их применения в Excel.
Задам несколько целей — нужно в расчётах таблицы использовать формулы массива и комбинировать их с обычными формулами, подробнее рассмотреть плюсы и минусы использования массивов.

Как обычно мы действуем? Вводим формулу — количество * цену, плюсуем доставку, enter, протягиваем за маркер автозаполнения вниз, получаем результат. Способ классический, рабочий.
Давайте выполним те же самые действия, только умножать и прибавлять будем не ячейки, а целые диапазоны. Предварительно выделив диапазон от F3 до F11.

Первый нюанс, когда работаем с формулой массива нельзя нажимать Enter! Нажимаем Ctrl+Shift+Enter! Что это даст в итоге.

К обычной формуле добавятся фигурные скобки в самом начале и конце. Это говорит о том, что применён массив. То есть — если таблица большая, проще выделить весь столбец и использовать массив, чтобы не протягивать маркером до конца таблицы.
Комбинации формул массива и обычных формул
Усложняем задачу — нужно подвести итог (СУММ) по всему столбцу «ИТОГО», высчитать максимальную сумму заказа и узнать среднюю сумму заказа без копеек.

Аналогично воспользуемся функцией СУММ, только передадим ей опять массив в виде вычислений. Не забываем про Ctrl+Shift+Enter!

Взглянем в строчку формул.

Посмотрим, что в этому случае делает программа Excel — пройдём по шагам вычислений. На вкладке «Формулы» нажмём кнопку «Вычислить формулу».

В окне вычислений видно, что теперь программа извлекает значения из каждой ячейки массива, затем производит математическое действие и выводит результат. Минус — на такое извлечение, если данных много, можно потратить много времени.
Аналогично подсчитаем максимальную стоимость покупки. Используем формулу МАКС и передадим ей массив.

Настала очередь средней суммы покупки. Для округления будем использовать ЦЕЛОЕ (чтобы результат был без копеек) и СРЗНАЧ.

Готово. В этом случае даже получилось «экономнее» нежели в обычных формулах, так как для промежуточного итога нет своего столбца!
Как видно их примеров — у массивов есть свои плюсы и свои минусы. Не пробуйте удалять массив (если он содержится в диапазоне ячеек). Изменить только одну ячейку массива нельзя! Плюс — улучшаем безопасность, минус — приходится переделывать весь массив, если что-то пошло не так.
Если остались вопросы — посмотрите новое видео. Ну и по традиции — вам может понравиться статья про функцию ПЛТ. Всем удачи!
Правила изменения формул массива
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки
Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы
Для удобства также приводим ссылку на оригинал (на английском языке) .
Предположим, вы пытаетесь изменить формулу массива, но при этом запутались. Вы выделяете формулу в ячейке или в строке формул, но изменить ее не удается. Формулы массива — особый случай, поэтому выполните одно из следующих действий.
Если вы уже введенные формулы массива с одной ячейкой, выделите ячейку, нажмите клавишу F2, внесите необходимые изменения и нажмите клавиши Ctrl + Shift + Ввод.
Если вы уже введенные формулы массива с несколькими ячейками, выделите все ячейки, содержащие ее, нажмите клавишу F2 и следуйте таким правилам:
нельзя перемещать отдельные ячейки, содержащие формулу, но вы можете перемещать их в виде группы, и ссылки на ячейки в формуле изменятся вместе с ними. Чтобы переместить все ячейки, выделите их, нажмите сочетание клавиш CTRL+S, выберите новое расположение и нажмите сочетание клавиш CTRL+V;
Нельзя удалять ячейки в формуле массива (появится ошибка «Нельзя изменять часть массива»), но вы можете Удалить всю формулу и Начать сначала.
Нельзя добавлять новые ячейки к блоку результатов ячеек, но добавлением новых данных на листе и затем разверните формулу.
После внесения изменений нажмите сочетание клавиш CTRL+SHIFT+ВВОД.
Наконец, можно сэкономить время при использовании константы массива — части формулы массива для ввода символов в строке формул. Но есть несколько редактирования и правила использования. Дополнительные сведения о них: Использование констант массива в формулах массива.
Как изменить часть массива в excel
На этом шаге мы рассмотрим ввод и редактирование формул массива, выделение массива.
Ввод формулы массива Для ввода формулы массива необходимо выполнять специальную процедуру, чтобы программа знала, что это не обычная формула, а формула массива. Обычная формула вводится в ячейку посредством нажатия клавиши Enter. А формула массива вводится в одну или несколько ячеек с помощью комбинации клавиш Ctrl + Shift + Enter.
В строке формул формула массива заключена в фигурные скобки. При вводе формулы массива фигурные скобки набирать не нужно, Excel сделает это сам. Если результат работы формулы массива — несколько значений, то, прежде чем вводить формулу, не забудьте отметить нужные ячейки. Если этого не сделать, то в ячейке будет отображено только первое значение.
Редактирование формулы массива Если формула массива помещена в несколько ячеек, то необходимо отредактировать все ячейки диапазона как одну ячейку. Нельзя изменять только один элемент, содержщий формулу массива! Если Вы попытаетесь сделать это, Excel выдаст сообщение, показанное на рисунке 1.
Рис. 1. Предупреждение программы Excel о том, что нельзя редактировать содержимое ячейки, которая входит в массив
Ниже перечислены правила, относящиеся к формулам массивов. При нарушении хотя бы одного из них Excel выдаст предупреждение.
- Нельзя изменять содержимое одной из ячеек, сдержащих формулу массива.
- Нельзя перемещать отдельные ячейки, на которые распространяется формула массива (можно перемещать только все ячейки с формулой массива сразу).
- Нельзя удалять отдельные ячейки, на которые распространяется формула массива (можно удалять только весь массив целиком).
- Нельзя вставлять новые ячейки в массив. Это правило относится также к вставке новых строк или столбцов, которые добавляют новые ячейки к массиву.
Чтобы отредактировать формулу массива, выделите все ячейки массива и активизируйте строку формул (щелкните на ней или нажмите F2). При редактировании формулы Excel удаляет фигурные скобки. Закончив редактирование формулы, нажмите Ctrl + Shift + Enter, чтобы ввести изменения. Теперь содержимое всех ячеек массива изменится в соответствии с внесенными изменениями.
Выделение массива Используя обычные процедуры можно выделить диапазон массива вручную. Кроме того, можно использовать один из следующих методов.
- Перейдите к одной из ячеек диапазона массива. Выберете команду Правка | Перейти или нажмите клавишу F5, в открывшемся диалоговом окне Переход щелкните на кнопке Выделить и в следующем диалоговом окне Выделение группы ячеек выберете опцию Текущий массив. Щелкните на кнопке OK, чтобы закрыть диалоговые окна.
- Перейдите к одной из ячеек диапазона массива и нажмите комбинацию клавиш Ctrl + /, чтобы выделить весь массив.
Хотя нельзя изменить формулу массива в отдельной его ячейке, тем не менее, можно отформатировать весь массив или отдельные его части.
На следующем шаге рассмотрим использование массивов констант.
Пример: товарный чек
А теперь давайте приступим к рассмотрению особенностей работы с формулами массива более детально, на конкретных примерах. Существует множество видов задач, в которых ее использование является необходимостью. Наиболее простой среди них является обычный товарный чек.
Допустим у нас есть набор товаров, которые были проданы клиенту. Нам известна их цена и количество, которое получилось реализовать. наша задача – посчитать итоговую стоимость каждой из товарных позиций.
8
Как бы эта задача решалась без использования формулы массива? Сперва нам необходимо было бы посчитать, сколько в сумме было продано товаров. Для этого надо было бы умножить количество на цену.
9
После этого нам нужно было бы получить сумму от всех стоимостей, чтобы получить итоговый результат. Причем нам надо было бы создавать отдельную колонку, чтобы осуществить подсчеты.
10
А чтобы сделать то же самое с помощью формулы массива, достаточно лишь ее указать.
Поскольку перед нами стоит задача рассчитать сумму, то нам и нужно использовать соответствующую функцию. В нашем случае нужно осуществлять суммирование произведений, поэтому нам так и нужно записать. Сначала выбрать нужный диапазон из столбца B, после чего осуществить умножение на соседние ячейки, находящиеся в столбце C.
11
Правда, если все оставить в таком же виде, то будет выдана ошибка после подтверждения ввода формулы с помощью клавиши Enter. Все потому, что наша формула пока еще не является формулой массива. Для этого нажимаем комбинацию Ctrl + Shift + Enter.
12
Почему формула массива оказалась более успешной в выполнении этой задачи? Последовательность действий была довольно сложной. Сначала осуществилось умножение соседних ячеек по горизонтали, а потом было произведено их сложение. Простыми словами, пришлось осуществлять суммирование массива. При этом результат получился один, а дополнительных вычислений не понадобилось.
Если посмотреть на строку формул, то вы увидите, что там показываются фигурные скобки, которые показывают на то, что человек работает с формулой массива.
13
Операции с массивами
Массив – это группа данных, которая расположена на листе в смежных ячейках. По большому счету, любую таблицу можно считать массивом, но не каждый из них является таблицей, так как он может являться просто диапазоном. По своей сущности такие области могут быть одномерными или двумерными (матрицы). В первом случае все данные располагаются только в одном столбце или строке.

Во втором — в нескольких одновременно.

Кроме того, среди одномерных массивов выделяют горизонтальный и вертикальный тип, в зависимости от того, что они собой представляют – строку или столбец.

Нужно отметить, что алгоритм работы с подобными диапазонами несколько отличается от более привычных операций с одиночными ячейками, хотя и общего между ними тоже много. Давайте рассмотрим нюансы подобных операций.
Создание формулы
Формула массива – это выражение, с помощью которого производится обработка диапазона с целью получения итогового результата, отображаемого цельным массивом или в одной ячейке. Например, для того, чтобы умножить один диапазон на второй применяют формулу по следующему шаблону:
Над диапазонами данных можно также выполнять операции сложения, вычитания, деления и другие арифметические действия.
Координаты массива имеют вид адресов первой её ячейки и последней, разделенные двоеточием. Если диапазон двумерный, то первая и последняя ячейки расположены по диагонали друг от друга. Например, адрес одномерного массива может быть таким: A2:A7.

А пример адреса двумерного диапазона выглядит следующим образом: A2:D7.

- Чтобы рассчитать подобную формулу, нужно выделить на листе область, в которую будет выводиться результат, и ввести в строку формул выражение для вычисления.

После ввода следует нажать не на кнопку Enter, как обычно, а набрать комбинацию клавиш Ctrl+Shift+Enter. После этого выражение в строке формул будет автоматически взято в фигурные скобки, а ячейки на листе будут заполнены данными, полученными в результате вычисления, в пределах всего выделенного диапазона.

Изменение содержимого массива
Если вы в дальнейшем попытаетесь удалить содержимое или изменить любую из ячеек, которая расположена в диапазоне, куда выводится результат, то ваше действие окончится неудачей. Также ничего не выйдет, если вы сделаете попытку отредактировать данные в строке функций. При этом появится информационное сообщение, в котором будет говориться, что нельзя изменять часть массива. Данное сообщение появится даже в том случае, если у вас не было цели производить какие-либо изменения, а вы просто случайно дважды щелкнули мышью по ячейке диапазона.

Если вы закроете, это сообщение, нажав на кнопку «OK», а потом попытаетесь переместить курсор с помощью мышки, или просто нажмете кнопку «Enter», то информационное сообщение появится опять. Не получится также закрыть окно программы или сохранить документ. Все время будет появляться это назойливое сообщение, которое блокирует любые действия. А выход из ситуации есть и он довольно прост
- Закройте информационное окно, нажав на кнопку «OK».

Затем нажмете на кнопку «Отмена», которая расположена в группе значков слева от строки формул, и представляет собой пиктограмму в виде крестика. Также можно нажать на кнопку Esc на клавиатуре. После любой из этих операций произойдет отмена действия, и вы сможете работать с листом так, как и прежде.

Но что делать, если действительно нужно удалить или изменить формулу массива? В этом случае следует выполнить нижеуказанные действия.
Для изменения формулы выделите курсором, зажав левую кнопку мыши, весь диапазон на листе, куда выводится результат
Это очень важно, так как если вы выделите только одну ячейку массива, то ничего не получится. Затем в строке формул проведите необходимую корректировку

После того, как изменения внесены, набираем комбинацию Ctrl+Shift+Esc. Формула будет изменена.

- Для удаления формулы массива нужно точно так же, как и в предыдущем случае, выделить курсором весь диапазон ячеек, в котором она находится. Затем нажать на кнопку Delete на клавиатуре.

После этого формула будет удалена со всей области. Теперь в неё можно будет вводить любые данные.

Динамические массивы
Динамические массивы в VBA Excel, в отличие от статических, объявляются без указания размерности:
|
1 |
PublicMassiv1()AsInteger DimMassiv2()AsString |
Такие массивы используются, когда заранее неизвестна размерность, которая определяется в процессе выполнения программы. Когда нужная размерность массива становится известна, она в VBA Excel переопределяется с помощью оператора ReDim:
|
1 |
PublicMassiv1()AsInteger DimMassiv2()AsString ReDimMassiv1(1To20) ReDimMassiv2(3,5,4) |
Переопределять размерность динамических массивов в процессе работы программы можно неоднократно, как по количеству измерений, так и по количеству элементов в измерении.
С помощью оператора ReDim невозможно изменить обычный массив, объявленный с заранее заданной размерностью. Попытка переопределить размерность такого массива вызовет ошибку компиляции с сообщением: Array already dimensioned (Массив уже измерен).
При переопределении размерности динамических массивов в VBA Excel теряются значения их элементов. Чтобы сохранить значения, используйте оператор Preserve:
|
1 |
DimMassiv1()AsString ——операторы—— ReDimMassiv1(5,2,3) ——операторы—— ReDimPreserveMassiv1(5,2,7) |
Обратите внимание!Переопределить с оператором Preserve можно только последнюю размерность динамического массива. Это недоработка разработчиков, которая сохранилась и в VBA Excel 2016
Без оператора Preserve можно переопределить все размерности.
Формулы массива в EXCEL. Знакомство
Вводная статья для тех, кто никогда не использовал формулы массива.
Без формул массива (array formulas ) можно обойтись, т.к. это просто сокращенная запись группы однотипных формул. Однако, у формул массива есть серьезное преимущество: одна такая формула может заменить один или несколько столбцов с обычными формулами.
Например, можно найти сумму квадратов значений из диапазона А2:A12 , просто записав в ячейке B14 формулу =СУММ(A2:A12^2) . Для сравнения: чтобы найти сумму квадратов, используя обычные формулы, нам потребуется дополнительный столбец для вычисления квадратов значений и одна ячейка для их суммирования (см. файл примера или диапазон B 2 :B13 на рисунке ниже).

В отличие от ввода обычных формул, после ввода формулы массива нужно нажать вместо ENTER комбинацию клавиш CTRL+SHIFT+ENTER (поэтому, иногда, формулы массива также называются формулами CSE — это первые буквы от названия клавиш, используемых для ввода C trl, S hift, E nter). После этого формула будет обрамлена в фигурные скобки (их не вводят с клавиатуры, они автоматически появляются после нажатия CTRL+SHIFT+ENTER ). Это обрамление показано на рисунке выше (см. Строку формул ).
Если бы мы нажали просто ENTER , то получили бы сообщение об ошибке #ЗНАЧ!, возникающую при использовании неверного типа аргумента функции, т.к. функция СУММ() принимает в качестве аргумента только диапазон ячеек (или формулу, результатом вычисления которой является диапазон, или константы). В нашем случае мы в качестве аргумента ввели не диапазон, а некое выражение, которое еще нужно вычислить перед суммированием, поэтому и получили ошибку.
Чтобы глубже понять формулы массива проведем эксперимент:
- выделим ячейку B13 , содержащую обычную формулу =СУММ($B$2:$B$12) ;
- в C троке формул выделим аргумент функции СУММ() , т.е. $B$2:$B$12 ;
- нажмем клавишу F9 , т.е. вычислим, выделенную часть формулы;
- получим – массив квадратов значений из столбца В . Массив – это просто набор неких элементов (значений).
Т.е. обычная функция СУММ() в качестве аргумента получила некий массив (или точнее ссылку на него).Теперь проведем тот же эксперимент с формулой массива:
- выделим ячейку, содержащую формулу массива =СУММ($A$2:$A$12^2) ;
- в строке формул выделим аргумент функции СУММ() , т.е. $A$2:$A$12^2 ;
- нажмем клавишу F9 , т.е. вычислим, выделенную часть формулы;
- получим – тот же массив, что и в первом случае.
Т.е. нажатие CTRL+SHIFT+ENTER заставило EXCEL перед суммированием произвести промежуточные вычисления с диапазоном ячеек (с массивом содержащихся в нем значений). Для самой функции СУММ() ничего не изменилось – она получила тот же массив, только предварительно вычисленный, а не прямо из диапазона ячеек, как в случае с обычной формулой. Понятно, что вместо функции СУММ() в формуле массива может быть использована любая другая функция MS EXCEL: СРЗНАЧ() , МАКС() , НАИБОЛЬШИЙ() и т.п.
Вышеприведенный пример иллюстрирует использование функции массива возвращающей единственное значение, т.е. результат может быть выведен в одной ячейке. Это достигается использованием функций способных «свернуть» вычисленный массив до одного значения ( СУММ() , СРЗНАЧ() , МАКС() ). Примеры таких функций массива приведены в статье Формулы массива, возвращающие одно значение .
Формулы массива также могут возвращать сразу несколько значений. Понятно, что для того чтобы отобразить такой результат необходимо задействовать целый диапазон ячеек. Примеры таких функций приведены в статье Формулы массива, возвращающие несколько значений .
Преимущества и недостатки формул массива рассмотрены в одноименной статье Формулы массива. Преимущества и недостатки .
В файле примера также приведено решение данной задачи функцией СУММПРОИЗВ() , которая зачастую не требует введения ее как формулы массива: =СУММПРОИЗВ($A$2:$A$12^2)
Здесь, при вводе формулы СУММПРОИЗВ() нажимать CTRL+SHIFT+ENTER необязательно.
Ссылки на статьи о формулах массива на сайте Microsoft:
2. Основы формул массива (на английском) из книги авторов Colin Wilcox и John Walkenbach
ПРИМЕЧАНИЕ При создании Именованных формул и правил Условного форматирования формулы массива нельзя ввести нажимая CTRL+SHIFT+ENTER . Эти формулы вводятся только в ячейки листа. Однако, если формуле массива присвоить Имя , то EXCEL «сообразит», что нужно с ней нужно делать. Например, если формуле =СУММ($A$2:$A$12^2) присвоить имя Сумма_квадратов, а затем в ячейке указать =Сумма_квадратов , то получим правильный результат.
Пример 2: умножаем ячейку на число
В данном случае принцип тот же, что и в разобранном выше примере. Разница заключается лишь в том, что перемножать мы будем не два конкретных числа, а одно число и ячейку, в которой содержится числовое значение.
Допустим, у нас есть таблица, в которой представлена стоимость одной единицы товара. Нам нужно посчитать стоимость при количестве 5 шт.
- Встаем в ячейку, в которой требуется выполнить умножение (в нашем случае – это самая верхняя ячейка столбца C, не считая шапки таблицы). Затем:
- ставим знак “=”;
- указываем адрес ячейки – первого числа (для нас – это B2). Сделать это можно путем ручного ввода координат с клавиатуры. Также можно просто кликнуть по нужной ячейке в самой таблице;
- пишем знак умножения “*“;
- указываем число 5.
- Нажимаем Enter, чтобы получить результат.