- Что такое формула массива в Excel
- Массивы в Excel
- Отличие массивов от диапазонов в Excel
- Размерность массивов
- Виды массивов
- Методы создания массивов
- Массив констант, созданный вручную
- Именованный массив констант
- С помощью функций
- С помощью математических операторов
- С помощью операторов сравнения
- С помощью других массивов
- С помощью комбинаций указанных методов
- Вывод массива на лист
- Взаимодействие функций Excel с массивами
- Формулы массива – примеры формул
Формулы массива – загадочная и, казалось бы, сложнейшая сущность в Excel. Но на практике все очень просто, нужно только понять принцип их работы и рассмотреть несколько примеров.
Не знаю, новичок вы в Excel или уже опытный пользователь, но коль судьба привела вас на эту страницу, в ходе прочтения вы:
- узнаете все о формулах массива;
- увидите множество примеров таких формул;
- сможете начать активно их применять на практике.
Поехали!
Формула массива (array formula) – это такая формула, в процессе вычисления которой создается один или несколько массивов. При этом не обязательно как результат вычисления, но и как промежуточный этап.
Будьте на 100% уверены: если формула
- принимает массив на вход,
- создает его как промежуточную сущность
- или выводит как результат вычислений
– это формула массива.
Слишком очевидно и все еще непонятно? Не беда – читаем далее.
На деле, прежде, чем говорить о формулах массива, нужно упомянуть сами массивы и их отличие от диапазонов. Т.к. многие не до конца понимают разницу.
Массивы в Excel
Массив (array) – это фиксированный набор элементов с фиксированным порядком. Иными словами, все элементы массива, включая их положение в нем, являются его неотъемлемой частью, их порядок и количество нельзя изменить.
Отличие массивов от диапазонов в Excel
В отличие от массива, диапазон (range) – это просто метод адресации к ячейкам в Excel, никак не связанный с самим их содержимым.
Между ячейками диапазона можно вставить дополнительные столбцы и строки, сделав его длиннее и шире, а ссылка на такой диапазон изменится автоматически.
Содержимое диапазона также можно свободно сортировать, если в нем нет объединенных ячеек.
Если же на лист Excel выведен массив, ни сортировка строк, ни вставка строк и столбцов в середину диапазона, в который он выведен, не возможна – это нарушило бы само его определение.
При попытке изменения порядка элементов массива Excel выдаст ошибку. К сожалению, она не очень информативна и не сообщает, какой массив или массивы имеются в виду. Текст ошибки:
Нельзя изменить часть массива.
Размерность массивов
Как массивы, так и диапазоны в Excel могут быть одномерными (вектор), двумерными (таблица) и трехмерными (многослойная таблица).
Одномерные массивы (векторы) в свою очередь могут быть вертикальными и горизонтальными.
Трехмерные массивы – довольно редко используемая на практике сущность.
Виды массивов
По типам элементов в них:
По типу данных –
- числовой массив (массив чисел)
- строковый массив (текстовые значения)
- булевый массив (значения ИСТИНА-ЛОЖЬ)
- смешанного типа
По изменяемости элементов –
- массив констант,
- вычисляемый массив
Методы создания массивов
Создать массив в Excel можно множеством способов. Ниже – подробнее с примерами. Все перечисленные выражения в них являются формулами массива, даже если не содержат в себе функций.
Массив констант, созданный вручную
Одномерные и двумерные массивы констант можно создавать вручную и сразу выводить на лист безо всяких дополнительных операций над ними.
При этом разделителем между элементами слева направо является точка с запятой, а разделителем строк – двоеточие.
Двумерные массивы вводятся построчно, т.е. сначала первая строка через точку с запятой, далее двоеточие, вторая строка через точку с запятой, и так далее.
Именованный массив констант
Если приходится один и тот же набор сущностей использовать часто в формулах, его можно сохранить в книге как именованный массив.
Массив цифр как в примере ниже, поможет быстро найти цифры в текстовых ячейках.
Это позволит больше не вводить его вручную, а обращаться к нему по его имени. Более того, Microsoft Excel помогает при их вводе всплывающими подсказками.
С помощью функций
Указанные выше методы создания массивов довольно редки на практике. Чаще всего массивы создаются автоматически при обращении различных функций к диапазонам в Excel.
Единственное условие для создания массива с помощью функции – функция не должна обладать агрегирующим свойством. Например, СУММ, СРЗНАЧ не создадут массив при обращении к диапазону.
На этом сайте есть статья – как дописать символ, слово или текст к нескольким ячейкам. Там рассматриваются несколько способов, в том числе без создания дополнительного столбца. Но вот еще один – с помощью функции СЦЕПИТЬ и формулы массива:
Кавычки-ёлочки в этой формуле нам помогает создать функция СИМВОЛ.
С помощью математических операторов
Достаточно применить любую из математических операций к диапазону – и будет создан массив, аналогичный по размерам.
С помощью операторов сравнения
Аналогично математическим операторам, массивы создаются при сравнении диапазонов с константой или значением ячейки. Результатом операции сравнения являются значения ИСТИНА или ЛОЖЬ.
С помощью других массивов
В двух предыдущих примерах массивы создавались на основе взаимодействия диапазона ячеек и некой константы.
Но можно создать массив и по принципу наоборот – на основе одной ячейки, произведя ее взаимодействие (операторами или функциями) с массивом констант.
Размер результирующего массива в таком случае будет аналогичен размеру массива констант.
Еще раз обратите внимание на разделители строк и столбцов в массивах. Столбцы разделяются точкой с запятой, строки – двоеточием.
С помощью комбинаций указанных методов
Как вы уже догадались, возможности фантазии безграничны – можно строить какие угодно комбинации перечисленных выше методов, производя операции над массивами и диапазонами.
Вывод массива на лист
Для корректного вывода массива на лист нужно выделить диапазон ячеек эквивалентной размерности и размера, использовать метод создания массива (вручную или формулой), и нажать
Ctrl+Shift+Enter
Если выделить недостаточное количество ячеек – будут выведены не все элементы массива, а только те, что соответствуют по порядку.
Если выделить избыточное количество – лишние ячейки выдадут ошибку #Н/Д.
На примере результирующий массив должен быть размером 5*5, но перед вводом формулы массива был выделен диапазон 6*6.
Взаимодействие функций Excel с массивами
Как мы уже выяснили чуть ранее, некоторые функции могут создавать массивы, если их применить к диапазону ячеек. Они обычно обращаются к одной ячейке, и таких функций в Excel большинство.
Однако, есть ряд функций, называемых агрегирующими. Если им на вход подается диапазон или массив, они возвращают единственное результирующее значение. Самая популярная – функция СУММ. Но есть и множество других.
Из раздела математических функций к таковым также относятся ПРОИЗВЕД, СУММПРОИЗВ, СУММЕСЛИ, СУММЕСЛИМН.
Практически все статистические функции по природе берут на вход диапазон или массив и возвращают одно число. Наиболее популярные из них – СРЗНАЧ, МИН, МАКС, СЧЁТ, СЧЁТЗ, СЧЁТЕСЛИ.
Среди логических функций агрегирующим свойством обладают функция И и функция ИЛИ.
Ну и особняком можно выделить функции поиска. Их нельзя в полной мере назвать агрегирующими, но их взаимодействие с массивами весьма похоже. Ведь они тоже:
- учитывают весь массив
- выводят одно значение
ВЫБОР, ВПР, ГПР, ИНДЕКС, ПОИСКПОЗ – эти функции поиска используются наиболее часто.
Формулы массива – примеры формул
Ну что ж, теперь, когда основной понятийный аппарат рассмотрен, приступим к практическому этапу. Я покажу на нескольких задачках из реальной жизни, как их решать, используя комбинации функций и массивов, которые они создают и обсчитывают.
Приступаем к практическим шагам:
Учимся формулам массива 1/4:
Как создать алфавит в Excel
Содержание
- Формулы динамических массивов и устаревшие формулы для массивов CSE
- Формулы динамического массива:
- Дополнительные сведения
- Билл Джелен. Динамические массивы в Excel
- Содержание
- Введение
- Глава 1. Начало работы
- Формулы теперь могу разливаться
- Что происходит, если формула не может пролиться?
- Если ваша формула указывает на Таблицу, динамический массив будет расширяться при добавлении новых строк в Таблицу
- Использование нового типа ссылок на массив: E3#
- Что такое неявное пересечение
- Формулы динамического массива в Excel, не поддерживающими динамические функции
- Подробные сведения
- Дополнительные сведения
- Формулы динамического массива и поведение перенесенного массива
- Что означает перенос?
- Ключевые моменты
- Дополнительные сведения
Формулы динамических массивов и устаревшие формулы для массивов CSE
В сентябре 2018 г. мы выпустили формулы динамического массива для Excel для Microsoft 365. Различия между динамическими массивами и устаревшими формулами CTRL+SHIFT+ВВОД (CSE) рассмотрены ниже.
Примечание: В настоящее время эта функция доступна только для части ее текущих insiders. Мы будем оптимизировать такие функции в течение следующих нескольких месяцев. Когда они будут готовы, мы разпустим их для всех инсайдеров Office и подписчиков Microsoft 365.
Формулы динамического массива:
Может «пролит» за пределами границ ячейки, в которой введена формула. В следующем примере показана функция RANDARRAY в D1, которая передается через D1:F5 или 5 строк на 3 столбца. Технически динамическая формула массива существует только в ячейке D1, в то время как при устаревшей формуле CSE формула должна в должна быть введена во всем диапазоне.
При добавлении или удалении данных в диапазоне источника автоматически будет меняться их объем. Формулы массива CSE утесируют возвращаемую область, если она слишком мала, или #N/A, если она слишком большая.
Вычислять в контексте 1×1. Например, функция СЛ RAND возвращает один результат, поэтому если требуется вернуть в сетку несколько случайных чисел, можно использовать функцию СЛРАСП. Функции СТРОКАи СТОЛБЕЦ возвращают строку и столбец ячейки источника. Функцию ПОСЛЕПОРЯДОК(СТРОКА()) можно использовать для репликации старого поведения функции СТРОКА в устаревшей формуле массива.
Новые формулы, которые возвращают больше одного результата, будут автоматически пролиты. Не нужно нажимать CTRL+SHIFT+ВВОД.
Формулы массива CSE сохраняются из соображений совместимости. В будущем следует использовать динамические формулы массивов.
Если ячейки в устаревшей формуле массива CSE зависят друг от друга, Excel будет пытаться вычислить каждую из них по отдельности, а не как массив. Такое поведение называется «разбиваниеМЕся по CSE», и в некоторых случаях формулы, вычислимые таким образом, могут привести к несогласованным результатам. Чтобы избежать возможных несогласованных результатов, мы рекомендуем использовать отдельные формулы, вместо того чтобы полагаться на разбиение CSE. Динамические формулы массива не будут разорвано. Вместо этого они будут сообщать о циклской ссылке, чтобы вы могли ее решить.
Их можно легко изменить, изменив исходные ячейки, в то время как формулы массива CSE требуют одновременного редактирования всего диапазона.
Вставка и удаление столбцов и строк запрещается в активном диапазоне формул массива CSE. Сначала необходимо удалить все существующие формулы массива, которые на этом на пути.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Источник
Билл Джелен. Динамические массивы в Excel
Незаметно для меня Microsoft совершил прорыв, представив в сентябре 2018 новые возможности – динамические массивы. Ниже – перевод книги Bill Jelen. Excel Dynamic Arrays Straight to the Point. Книги серии Straight to the Point предназначены для глубокого освещения одного аспекта Excel.
Билл Джелен – основатель сайта MrExcel.com и автор множества книг о Excel. Сайт бесплатно отвечает на более чем 30 000 вопросов в год. В моем блоге представлены три книги Джелена:
Скачать заметку в формате Word или pdf, примеры в формате Excel
Содержание
Введение
Ранее многие люди пытались изучать формулы массива и потерпели неудачу. Майк Гирвин написал отличную книгу, чтобы объяснить, как работают формулы массива. Целые главы той книги здесь будут сведены к коротким предложениям, благодаря новым функциям.
О динамических массивах было объявлено 24 сентября 2018 года, но даже в MS Excel 2019 они пока не представлены. Динамические массивы доступны только в Office 365. Я думаю, что парадигма покупки бессрочной лицензии на Office каждые три или шесть лет устарела, и рекомендую переходить на подписку.
Как организована эта книга. В главе 1 вы узнаете о концепции формулы, распространяющейся на соседние ячейки. Вы увидите, как непустая ячейка может блокировать разлив массива, и как это исправить. Вы услышите о неявном пересечении и о том, как нотация @ может решить эту проблему. Главы 2–8 посвящены каждой из шести новых функций и их комбинациям. Глава 9 основана на превосходном видео Джо Макдэйда. Из этой главы вы узнаете термины, которые использует команда Excel Calc: Подъем, Трансляция, Попарный подъем, Усечение массива и Неявное пересечение. В главе 10 рассматриваются два способа, с помощью которых динамические массивы делают новую функцию ПРОСМОТРX более мощной. В 11-й – приведены 24 примера объединения динамических массивов с рядом обычных функций Excel. В 12-й главе показано, как динамические массивы могут работать с функциями кубов.
Оригинальные файлы с примерами можно загрузить с сайта автора. К каждой главе я приложу файл, адаптированный к настоящему переводу.
Глава 1. Начало работы
Формулы теперь могу разливаться
В этой главе рассматривается новая формула =A2:A20, ошибка #ПЕРЕНОС! и новый неявный оператор пересечения @.
Начнем с базовой формулы массива. Перейдите в ячейку Е3. Наберите =A2:C10. В более ранних версиях Excel вам пришлось бы включить этот диапазон в качестве аргумента какой-нибудь функции, или использовать формулу массива, одновременно нажав Ctrl+Shift+Enter.
Рис. 1. Формула указывает на диапазон ячеек
Теперь же достаточно нажать Enter. Excel возвращает значения в 27 ячеек, которые выбираются автоматически вправо и вниз. Посмотрите на формулу в строке формул… здесь нет фигурных скобок, а это значит, что никто не нажимал Ctrl+Shift+Enter.
Рис. 2. Одна формула вернула множество значений
Ячейка E4 содержит текст Central, и, хотя строка формул показывает формулу для этой ячейки, она отображается серым цветом. Давайте проверим с помощью VBA, что содержится в ячейках Е3 и Е4?
Рис. 3. VBA подтверждает, что в ячейке Е4 не формула
VBA показывает, что в ячейке Е3 – формула, а в Е4 – нет. Также в Excel можно ввести формулу =ЕФОРМУЛА(E4). Она вернет ЛОЖЬ. И еще одна проверка. Выберете диапазон D1:H20, и пройдите по меню Главная –> Найти и заменить –> Формулы. Будет выделена только ячейка E3.
Один из первых вопросов на YouTube в ответ на мои первые видео с динамическими массивами был: можно ли вы копировать и вставлять значения? Да! Выберите диапазон E3:G11, нажмите Ctrl+C, кликните правой кнопкой мыши на выбранную новую ячейку и выберите Специальная вставка –> Значения.
Что происходит, если формула не может пролиться?
Что произойдет, если ячейка, куда должен разлиться диапазон, будет занята?
Рис. 4. Как Excel справится с занятой ячейкой?
Excel вернет ошибку #ПЕРЕНОС! Excel сообщает, что не может вернуть массив целиком. Поэтому не вернет ни одного результата. Если выбрать контекстное меню слева от ячейки с ошибкой, можно выделить мешающие ячейки. Возможно, их получится перенести в другое место листа.
Рис. 5. Ошибка #ПЕРЕНОС! и ее контекстное меню
Как только вы очистите ячейки, мешающие размещению массива, он автоматически разольется.
Существует несколько типов ошибки #ПЕРЕНОС! Та, что выше, называется Диапазон для переноса данных не пустой. Другие ошибки:
- Неопределенный размер. Вы не можете использовать волатильные функции, например, СЛУЧМЕЖДУ(), в качестве аргумента функции ПОСЛЕДОВ().
- Выходит за пределы листа. Вы не можете ввести функцию =СОРТ(C:C) в ячейке E2.
- Табличная формула. Вы не можете использовать функции динамического массива внутри Таблицы.
- Не хватает памяти. Вам следует ссылаться на диапазон меньшего размера.
- Разлив в объединенные ячейки. Динамический массив не может разливаться в объединенную ячейку.
- Неопознанная ошибка. Excel не может распознать ошибку.
Если ваша формула указывает на Таблицу, динамический массив будет расширяться при добавлении новых строк в Таблицу
Рис. 6. Динамический массив «отслеживает» Таблицу
Сравните с рис. 2. Вы преобразовали диапазон А1:С19 в Таблицу (Ctrl+T). Формула в ячейке Е3 изменилась на =Таблица1. Теперь, если вы добавите еще одну строку в Таблицу (А11:С11), формула в ячейке Е3 не изменится, а динамический массив автоматически расширится еще одной строкой (Е12:G12).
Хотя формулы динамического массива могут указывать на Таблицу, в самой Таблице использовать формулы динамического массива нельзя.
Использование нового типа ссылок на массив: E3#
Как вы захотите сослаться на массив E3:G12, но не знаете, какого он размера, добавьте оператор разлитого диапазона (#) после ячейки, содержащей формулу массива.
Например, =E3 вернет East, =E3# вернет весь массив, формула которого хранится в E3. Неофициально это называется ссылочной нотацией массива. Такая нотация поддерживается только при ссылке внутри одной книги.
Что такое неявное пересечение
Если вы введете =@C2:C11 в любой ячейке в строках со 2 по 10, формула вернет значение из столбца С той строки, в которой вы ввели формулу. Знак @ известен как неявный оператор пересечения.
Рис. 7. Используйте нотацию @, когда вам нужно неявное пересечение.
Источник
Формулы динамического массива в Excel, не поддерживающими динамические функции
В сентябре 2018 г. мы представили формулы динамического массива. Формулы динамического массива могут автоматически заполнять или «перетащать» в соседние пустые ячейки, устраняя необходимость в устаревших формулах массива CTRL+SHIFT+ВВОД (CSE). При открытии книги, содержащего формулы динамического массива в более ранней версии Excel, необходимо учитывать некоторые аспекты совместимости.
Примечание: Поддержка формул динамического массива была выпущена для подписчиков Microsoft 365 в Current Channel в январе 2020 г.
Подробные сведения
При написании формулы в Excel с поддержкой динамических массивов она определяет, может ли формула возвращать несколько значений (даже если она в настоящее время возвращает только одно значение). Если он может вернуть несколько значений, мы сохраняем его как формулу динамического массива, которая будет отображаться в более ранних версиях Excel как устаревшая формула CSE.
Ниже приведены примеры функции MUNIT, введенной в виде формулы динамического массива и устаревшей формулы CSE. Обратите внимание, что устаревшие формулы массива CSE ведут себя очень аналогично формулам динамического массива. Основное различие заключается в том, что они не могут изменять размер и не имеют границы сброса. Сравнение этих двух значений см. в разделе » Формулы динамического массива и устаревшие формулы массива CSE».
Если вы знаете, что будете совместно использовать книги с динамическими формулами массива с другими пользователями Excel, не поддерживающими динамические функции, лучше избегать использования недоступных им функций. Средство проверки совместимости можно использовать для поиска формул, которые сохраняются как формулы динамического массива и будут отображаться как массивы CSE в более ранних версиях Excel.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Источник
Формулы динамического массива и поведение перенесенного массива
Формулы Excel, возвращающие набор значений, также известный как массив, возвращают эти значения в смежные ячейки. Это действие называется переносом.
Формулы, способные возвращать массивы переменного размера, называются формулами динамического массива. Формулы, которые в сейчас возвращают успешно переносимые массивы, можно назвать формулами перенесенного массива.
Ниже приведены несколько заметок, которые помогут вам в понимании и использовании формул такого типа.
Что означает перенос?
Примечание: Более старые формулы массива, известные как устаревшие формулы массива, всегда возвращают результат фиксированного размера — они всегда переносятся в одно и то же количество ячеек. Поведение при переносе, описанное в этом разделе, не применяется к устаревшим формулам массива.
Перенос означает, что формула привела к нескольким значениям, и эти значения были помещены в смежные ячейки. Например, =SORT(D2:D11;1,-1),, сортирующая массив в порядке убывания, возвращает соответствующий массив высотой 10 строк. Но вам нужно только ввести формулу в верхнюю левую ячейку или в данном случае F2, и она автоматически переместится в ячейку F11.
Ключевые моменты
При нажатии на ВВОД для подтверждения формулы Excel динамически изменит размер диапазона вывода и поместит результаты в каждую ячейку в этом диапазоне.
Если вы пишете формулу динамического массива для работы со списком данных, может быть удобно поместить его в таблицу Excel, а затем использоватьструктурированные ссылки для ссылки на данные. Это происходит потому, что структурированные ссылки автоматически корректируются при добавлении или удалении строк из таблицы.
Формулы перенесенного массива не поддерживаются в самих таблицах Excel, поэтому их следует размещать в сетке за пределами таблицы. Таблицы лучше всего подходят для хранения строк и столбцов независимых данных.
После ввода формулы перенесенного массива при выделении любой ячейки в области переноса Excel выделит рамкой границу диапазона. Граница исчезнет при выборе ячейки за пределами области.
Редактировать можно только первую ячейку в области переноса. При выборе другой ячейки в области переноса, формула будет видна в строке формул, но текст будет «фантомным» и недоступным для изменения. При необходимости обновить формулу, необходимо выбрать верхнюю левую ячейку в диапазоне массива, изменить ее по мере необходимости. При нажатии Enter Excel автоматически обновит остальную часть области переноса.
Перекрытие формул. Формулы массива нельзя ввести, если что-то блокирует выходной диапазон. и если это происходит, Excel возвращает ошибку #SPILL!, указывающую на наличие блокировки. Если удалить помеху, формула будет перенесена должным образом. В приведенном ниже примере выходной диапазон формулы перекрывает другой диапазон с данными и отображается с пунктирной рамкой, перекрывающей ячейки со значениями, указывающими, что он не может быть перенесен. Удалите блокирующие данные или скопируйте их в другое место, и формула перенесется, как и ожидалось.
Устаревшие формулы массива, введенные с помощью CTRL+SHIFT+ENTER (CSE), по-прежнему поддерживаются по соображениям обратной совместимости, но их больше нельзя использовать. Если хотите, вы можете преобразовать устаревшие формулы массива в формулы динамического массива, найдя первую ячейку в диапазоне массива, скопировав текст формулы, удалив весь диапазон устаревшего массива, а затем повторно введя формулу в верхней левой ячейке. Перед обновлением устаревших формул массива до динамических формул массива следует помнить о некоторых счетных различиях между ними.
Приложение Excel ограничило поддержку динамических массивов в операциях между книгами, и этот сценарий поддерживается, только если открыты обе книги. Если закрыть исходную книгу, все связанные формулы динамического массива вернут ошибку #ССЫЛКА! после обновления.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Источник
Управление массивами в Microsoft Excel
Смотрите такжеNext i знаниями в той очищался используют конструкцию и строки. Т.е.UBound(iArray,2)Range(«A2») = «Февраль» службу построить отчет, диапазон формулы массива и те, что объявлении двумерного массиваКак это работает продемонстрировановозвращает значение элементаCtrl+Shift+Enter же изменить уже функций в Экселе
если у васВо время работы с
Операции с массивами
Next n теме, где Вы ReDim Preserve что есть наПавелRange(«A3») = «Март» параметры, оформление (т.е. в диапазон дают на выходе индексы его измерений ниже на примере из массива констант,, чтобы сохранить изменения. существующую формулу массива является не было цели таблицами Excel довольно’выгружаем наши новые с Nerv-ом мне
ReDim Preserve массив листе — то
ЛастикRange(«A4») = «Апрель»SSIS научу строить A10:H11 в нашем целый набор (массив) разделяются запятой: кода, который выводит
положение которого задано Формула будет отредактирована. в Excel?СУММ производить какие-либо изменения, часто приходится оперировать данные обратно на очень помогли), но (новая верхняя граница) и будет в
Создание формулы
: Давайте теперь рассмотримRange(«A5») = «Май» интеграционные пакеты. Расскажу случае) значений. Рассмотрим ихDim Jan_Sales_Figures(1 To имена каждого члена порядковым номером (оценкой).Очень часто возникает необходимостьКогда формула массива помещена. Её можно применять, а вы просто
с целыми диапазонами
лист иногда нужно перебратьВот пример. массиве. пример работы с
’переносим данные из о том какВспомните детство, школу, свою на простых примерах… 31, 1 To команды последовательно вДанная формула не является уменьшить или увеличить в одну ячейку, как для суммирования случайно дважды щелкнули данных. При этомRange(«F1»).Resize(UBound(myArr, 1), UBound(myArr,
строки целиком и1) Сперва мыС датами интересно ДВУМЕРНЫМ массивом диапазона А1:А5 в
- их делать. тетрадку по математике…Задача: рассчитать общую сумму 5) As Currency ячейки столбца формулой массива, хоть количество ячеек в
- то ее редактирование содержимого отдельных ячеек, мышью по ячейке некоторые задачи подразумевают, 2)) = myArr перебор выглядит как создаём пустой динамический -Sub TestArray5() массивКому это интересно На обороте тетради заказа. Если идтиОднако, если не указыватьA она и содержит
Изменение содержимого массива
формуле массива. Скажу в Excel обычно так и для диапазона. что вся группаEnd Sub то не очень массив — вв ячейке значениеDim iArray(1 ToiArray = Range(«A1:A5»).Value обращайтесь на почту на обложке было классическим путем, то начальный индекс дляактивного рабочего листа массив. Поэтому при сразу, что дело не представляет особой нахождения суммы целыхЕсли вы закроете, это ячеек должна бытьДанный метод - рационально. данном случае это 40909
5, 1 To’теперь наш массив [email protected] что? Таблица умножения нужно будет добавить обоих измерений массива Excel. ее вводе достаточно это не простое сложности. Здесь главное массивов. Синтаксис этого сообщение, нажав на преобразована буквально в намного быстрее, чемvikttur не обязательно, т.к.форматом выводит как 3) ‘объявляем двумерных iArray имеет размерностьЛастик вот такого вида:
- столбец, где перемножить и объявить егоFor i = нажать клавишу
- и в большинстве не забыть закончить оператора для массивов кнопку один клик. В обрабатывать каждую ячейку: Тему прошел «по Redim тоже создаёт 01.янв, массив с размерностью (1 to 5,: если честно, лучшаяПри помощи формул массива цену и количество, вот так: 1 To 20Enter
случаев будет проще редактирование комбинацией клавиш выглядит следующим образом:«OK» Экселе имеются инструменты, на листе.
- диагонали», может, это массива в массиве 1 To 5, 1) — 5 школа это: она вся делается а потом взятьDim Jan_Sales_Figures(31, 5) Cells(i,1).Value = Team_Members(i). удалить старый массивCtrl+Shift+Enter
- =СУММ(массив1;массив2;…), а потом попытаетесь которые позволяют проводитьТ.е. мы сперва
- упоминалось раньше.2) через Redim: a(1,1) : 1 To 3 строк и 11) делать какое-либо в одно движение: сумму по этому As Currency Next iКонечно же, мы в
- и создать новый..Данный оператор выводит результат переместить курсор с подобные операции. Давайте
Функции массивов
берём данные сНебольшое предостережение, недавно определяем границы массива #01.01.2012# : Variant/DateDim i As столбец. т.е. он задание для себявыделяем диапазон B2:K11 столбцу. Если жето эта запись будетОчевидно, что работа с силах скопировать даннуюПрежде чем удалять старыйЕсли же формула многоячеечная, в одну ячейку, помощью мышки, или выясним, как можно листа Excel в
сам из-за неопытности от 1 доСодержимое массивов удобно Long, n As у нас ДВУМЕРНЫЙ (по работе иливводим формулу =A2:A11*B1:K1 применить формулу массива, расценена, как двумерный массивом, в котором
формулу в остальные массив, скопируйте его т.е. возвращает массив, а поэтому для просто нажмете кнопку управлять массивами данных массив, обрабатываем их напоролся. 10 элементов смотреть в окне Long ‘2 числовые’давайте циклом посмотрим учёбе)жмем то все будет
массив, первое измерение сохранено 20 имён,
Оператор СУММ
ячейки и получить формулу как текст, то сразу возникают того, чтобы произвести«Enter» в этой программе. и обратно выгружаемМассив, заданный как3) заполняем массив Locals — сразу переменные для работы содержимое массива
2) задавать вопросы
Ctrl + Shift + гораздо красивее: которого содержит 32 значительно менее громоздка нужный нам результат: а затем используйте определенные трудности, особенно подсчет, после внесения, то информационное сообщениеСкачать последнюю версию на лист. Это M(a To b) данными
всё понятно, что с цикламиFor i =
Оператор ТРАНСП
на форуме и Enterвыделяем ячейку элемента с индексами и более аккуратна,Но грамотнее будет использовать ее в новом у начинающих пользователей. вводных данных достаточно появится опять. Не Excel быстрее, чем обращение формирует массив строки,4) увеличиваем верхнюю где.For i = LBound(iArray) To UBound(iArray) читать форум каждый, чтобы Excel воспринялС7 от 0 до чем использование 20 многоячеечную формулу массива. массиве. При громоздких Давайте рассмотрим несколько нажать кнопку получится также закрытьМассив – это группа к ячейкам листа но не столбца.
границу массива до
Ластик LBound(iArray, 1) To
‘цикл от нижней день ее как формулу
Оператор МОБР
вводим с клавиатуры 31, а второе отдельных переменных. А Выглядеть она будет формулах такой подход правил, которые необходимо«OK» окно программы или данных, которая расположенаR Dmitry Если задать M(a 15 элементов: угу, но я UBound(iArray, 1) ‘т.е. границе массива доЯ прочитал по массива=СУММ( измерение массива содержит что, если этих следующим образом: позволит сэкономить уйму усвоить, прежде чемв окне аргументов сохранить документ. Все на листе в: Паш есть способ
To b;1), тогда
Sub TestArary6() не стал писать от 1 до
верхней границы массива
Excel и VBAи получаем результат:
выделяем диапазон 6 элементов с имён не 20,Мы можем пойти еще времени. начать редактирование массива. функции или клавишу время будет появляться смежных ячейках. По чуть проще :) a To bDim myArray() ‘объявляем об этом, чтобы 5MsgBox i & книг 20, ноПосмотрите как при помощиB2:B5 индексами от 0 а 1000? А дальше и присвоитьЕсли же необходимо изменитьНельзя изменять содержимое однойEnter это назойливое сообщение,
большому счету, любую
lumpics.ru
Редактирование формул массива в Excel
для данного примера, — строки. динамический массив на начальном этапеFor n = «-й элемент массива все прочитанные знания одной формулы массивавводим знак умножения ( до 5. если, вдобавок, требуется массиву констант имя. расположение массива на
Правила редактирования формул массива
ячейки, содержащей формулу, если ввод выполнялся которое блокирует любые таблицу можно считать но ты правЕще момент, наDim i As не запутывать. LBound(iArray, 2) To равен: » &
быстро забываются, если красиво и легкозвездочкаВсе массивы в рассмотренных сохранить отдельно фамилии Имя назначается точно рабочем листе, не массива. Но к вручную.
- действия. А выход массивом, но не на все сто%%%%%%% котором время тратил, Long
- А определение взял UBound(iArray, 2) ‘т.е. iArray(i, 1) ‘i их не применять
- выбираются данные по) выше примерах имеют и отчества?! Ясно,
- так же, как меняя его размерность, каждой ячейке можноУрок:
- из ситуации есть каждый из них[a1:d1] = [a1:d1* пытаясь разобраться, почемуReDim myArray(1 To из Wikipedia
от 1 до — строка, 1 на практике. Я определенному товару ивыделяем диапазон фиксированное количество измерений. что вскоре станет и обычной константе, просто переместите его применить свое форматирование.
Выделение массива в Excel
Как посчитать сумму в и он довольно является таблицей, так 2] созданный массив на 10) ‘переопределяем размерVDM 3 — это столбец
- отдал все свои заказчику:C2:C5 Однако, во многих совершенно невозможно справиться через диалоговое окно
- как обычный диапазон.Нельзя удалять ячейки, которые Экселе прост как он можетHugo лист выгружается на массива (от 0: У меня вотiArray(i, n) =Next i книги и перешёл
В данном случае формулаи закрываем скобку случаях мы не с таким объёмомСоздание имениСуществует несколько подходов к входят в формулу
Функция
- Закройте информационное окно, нажав являться просто диапазоном.: Вот нашёл пример столбец правее: до 10 элементов)
Как удалить формулу массива
ещё какой вопросы i * n’а теперь давайте на форум, читая массива синхронно пробегает функции СУММ - знаем заранее, какого данных в коде: редактированию размеров массива,
Как отредактировать формулу массива
массива. Можно удалитьТРАНСП на кнопку По своей сущности кода (не записал,M(a;1) — этоFor i = есть по массивам:Next n
выгрузим обратно наш ответы на вопросы
- по всем элементам в итоге должно размера должен быть VBA без помощиНе забывайте указывать знак
- которые, возможно, Вам только весь массив.является типичным оператором«OK» такие области могут где применял) - не первый столбец, 1 To 10Если двумерный массив
- Next i массив на лист
- других людей и диапазонов C3:C21 и получиться так: наш массив. Можно массива.
Изменение размеров формулы массива
равенства в поле пригодятся. Подходы приведеныНельзя перемещать ячейки, которые массивов. Она позволяет. быть одномерными или тут нужно было второй. Первый «0» ‘ цикл 10 мы можем рассматривать
’сейчас у нас в столбец С пытаясь помочь другим B3:B21, проверяя, совпадаютчтобы Excel воспринял нашу выйти из ситуации,Массивы Visual Basic, оДиапазон в данном уроке.
входят в формулу переворачивать таблицы илиЗатем нажмете на кнопку двумерными (матрицы). В удалить строки с (Option Base не
раз как аналог рабочего массив такой’мы расширяем диапазон людям быстрее осваиваешь
ли они с формулу как формулу объявив огромный массив, которых шла речь, иначе Excel восприметИтак, сегодня Вы научились массива. Зато можно матрицы, то есть,«Отмена» первом случае все значениями, присутствующими на
- объявлен).myArray(i) = i
- лиса Excel, то:’iArray(1,1)
- от ячейки С1 материал и учишься.
- заданными значениями из
- массива жмем не размер которого будет
- выше, считаются одномерными. массив как текстовую
выделять, удалять и переместить весь массив.
менять строки и
, которая расположена в
office-guru.ru
Массивы констант в Excel
данные располагаются только другом листе (поПростые вещи, но + 7 ‘1. Можно ли’iArray(1,2) вниз на количествоПерейдём к массивам, ячеек G4 и Enter, как обычно, наверняка больше, чем Это означает, что
Коротко о массивах констант
строку. редактировать формулы массива,Нельзя вставлять новые ячейки, столбцы местами. При группе значков слева в одном столбце первым столбцам): новички ошибаются.
заполняем массив числами
в самом массиве’iArray(1,3) строк массива (5) вот 3 примера G5. Если совпадения
а
нужно для нашей они хранят простойТеперь формула выглядит менее а также узнали в том числе этом она использует от строки формул,
или строке.
Sub tt()VDM от 1 до оперировать с «Resize»’iArray(2,1) и на 1
работы с массивами
нет, то результатCtrl + Shift + задачи. Но такое список имён. Однако, пугающей:
Пример применения массива констант в Excel
несколько полезных правил строки и столбцы, исключительно вывод результата
и представляет собойВо втором — вDim tm: tm: Пока отвечал HUGO, 102. Можно ли’iArray(2,2) столбецSub TestArray() равенства ноль, если Enter решение потребует много массивы могут иметь
Как видите, в некоторых
по работе с в диапазон массива. в диапазон ячеек, пиктограмму в виде нескольких одновременно. = Timer
получил ещё 2Next i оперировать целой строкой
’iArray(2,3)’логика — Ячейка(С1).РасширитьДиапазон(кол-воDim iArray() ‘объявляем совпадение есть, тоВуаля! лишней памяти и
множество измерений. Например, случаях массивы констант ними. Если желаетеНельзя использовать многоячеечные формулы поэтому после введения крестика. Также можноКроме того, среди одномерныхDim r As
ответа:)MsgBox «Значение 10-его или столбцом массива,’.. строк, кол-во столбцов)
массив единица. Таким образомТ.е. Excel произвел попарное может замедлить работу
двумерный массив можно бывают даже очень получить еще больше массива в таблицах, данного оператора обязательно нажать на кнопку массивов выделяют горизонтальный Range, a(), b(),Во общем решил,
элемента массива равно: аналог EntireColumn, EntireRow’.. = наш_массивReDim iArray(1 To суммы всех сделок,
умножение элементов массивов программы. Есть решение
сравнить с сеткой полезны. информации о массивах созданных с помощью
нужно применять сочетаниеEsc и вертикальный тип, i& что не буду » & myArray(10)как работая с’iArray(5,1)
- Range(«C1»).Resize(UBound(iArray, 1), UBound(iArray, 5) ‘указываем размерность
- где заказчик не B2:B5 и C2:C5
- лучше. Мы можем значений.
- Итак, в данном уроке в Excel, читайте
- командыCtrl+Shift+Enter
- на клавиатуре. После в зависимости от
Application.ScreenUpdating = 0 впереди паровоза бежать,
ReDim Preserve myArray(1
самим массивом, так
office-guru.ru
Массивы в Visual Basic for Application
’iArray(5,2) 2)) = iArray массива (5 элементов: ANTON и товар и образовал новый использовать динамический массивПредположим, что нужно сохранить Вы познакомились с следующие статьи:
Таблица. Также нужно отметить, любой из этих того, что ониSet r = понял что всё To 15) ‘расширяем и заполняя и’iArray(5,3)End Sub
от 1 до не Boston Crab массив стоимостей (в – это такой ежедневные показатели продаж
массивами констант иЗнакомство с формулами массива. что перед введением операций произойдет отмена собой представляют – Range([a1], [a65536].End(xlUp)) это сложновато пока массив до 15
выгружая с рабочегоMsgBox «Верхний индекс
Так же скопируйте 5) Meat умножаются на памяти компьютера), а массив, размер которого за январь для
их применением в в Excel
Как видите, все перечисленные самого выражения нужно действия, и вы строку или столбец.a = r.Value для восприятия. элементов с сохранением листа? ПЕРВОЙ размерости массива в русской раскладке’ВАРИАНТ 1 ноль и суммируются затем сложил все может быть установлен 5 разных команд. Excel. Если желаетеМногоячеечные формулы массива в выше правила подчеркивают, выделить на листе сможете работать сНужно отметить, что алгоритмWith Sheets(«что искать»)Все спасибо за значений массиваДимон
равен: » & код в VBE’заполняем массив по-индексно только нужные заказы. элементы этого нового и изменён сколько Для этого потребуется получить еще больше Excel
что массив – область, у которой листом так, как работы с подобными
b = .Range(.[a1], разъяснения.MsgBox «Значение 10-его: Ого какая хорошая UBound(iArray, 1) & и запустите пошагово названиями месяцевСтудент++ массива. угодно раз в двумерный массив, состоящий информации о массивах,Одноячеечные формулы массива в это одно целое. количество ячеек в и прежде. диапазонами несколько отличается .[a65536].End(xlUp)).ValueHugo
Многомерные массивы в Excel Visual Basic
элемента массива равно: тема:) я и vbLf & _ через F8.iArray(1) = «Январь»: Добрый день. ИщуОбратите внимание на фигурные процессе выполнения макроса. из 5 наборов читайте следующие статьи: Excel
Если не выполнить, столбце будет равноНо что делать, если от более привычныхEnd With: VDM, на самом » & myArray(10) сам с удовольствием»Верхний индекс ВТОРОЙЧто не понятно
iArray(2) = «Февраль» человека который будет скобки, появившиеся в
Динамический массив объявляется с показателей для 31Знакомство с формулами массиваМассивы констант в Excel хотя бы одно числу ячеек в действительно нужно удалить операций с одиночнымиWith CreateObject(«Scripting.Dictionary») деле с массивом & vbLf & почитал так как размерости массива равен: — спрашивайтеiArray(3) = «Март»
обучать меня программированию
формуле — отличительный пустыми скобками, вот дня. Объявим массив в ExcelПрименение формул массива в из вышеперечисленных правил, строке исходной таблицы или изменить формулу ячейками, хотя и.CompareMode = 1
Объявление массивов в Excel Visual Basic
работать проще, чем _ с массивами тоже » & UBound(iArray,ПавелiArray(4) = «Апрель» на vba in признак так: таким образом:
Многоячеечные формулы массива в Excel
Excel не даст (матрицы) и, наоборот, массива? В этом общего между нимиFor i = с листом.»Значение 12-его элемента толком еще не 2) & vbLfЛастикiArray(5) = «Май» excelформулы массиваDim Team_Members() AsDim Jan_Sales_Figures(1 To Excel
Подходы к редактированию формул отредактировать массив и
количество ячеек в случае следует выполнить тоже много. Давайте 1 To UBound(b)И за счёт массива равно: (пусто) умею обращаться:) но & _
: Если для понимания’MsgBox «3-й элемент
На условиях взаимообучения. Вводить их вручную String 31, 1 ToОдноячеечные формулы массива в массива в Excel
выдаст следующее предупреждение: строке должно равняться нижеуказанные действия. рассмотрим нюансы подобных.Item(b(i, 1)) = скорости работы с » & myArray(12) насколько я понимаю»Значение индекса 5,2
нужно определение массива, массива равен: «О себе Я
с клавиатуры бесполезноДалее нужно будет объявить 5) As Currency ExcelУрок подготовлен для Вас
Если необходимо изменить формулу их числу в
Для изменения формулы выделите операций. 1 массивом — приEnd Sub — строка массива равен: » & то массив можно & iArray(3) близок к MCTS — они автоматически
Динамические массивы
измерение массива вДля того, чтобы получитьРедактирование формул массива в командой сайта office-guru.ru массива, то первое, столбце исходника. Синтаксис курсором, зажав левуюФормула массива – этоNext нужде его переопределитьНО!!! Нужно знать, — это цикл iArray(5, 2) описать так:Dim i As по SQL SERVER появляются при нажатии процессе выполнения кода доступ к элементам ExcelАвтор: Антон Андронов что нужно сделать оператора следующий: кнопку мыши, весь выражение, с помощьюFor i =
можно просто создав что через ReDim с фиксированным номером
End SubМассив — это
Long ‘объявляем переменную BI. Собственно иCtrl + Shift + при помощи выражения массиваПрименение формул массива в
Автор: Антон Андронов – это выделить
=ТРАНСП(массив) диапазон на листе, которого производится обработка 1 To UBound(a) новый массив нужного Preserve можно изменять
строки и переменнойТак же скопируйте именованный набор однотипных типа Long (целое
в Excel я Enter.ReDimJan_Sales_Figures ExcelВ Microsoft Excel можно диапазон, в которомУрок: куда выводится результат. диапазона с цельюIf .exists(a(i, 1)) размера и переложить вниз/вверх только верхнюю
номера столбца? в русской раскладке переменных, расположенных в число)
не новичок. НоПри работе с таблицами:, нужно использовать дваПодходы к редактированию формул создавать массивы, которые содержится массив. ВТранспонирование матриц в Excel Это очень важно, получения итогового результата, Then a(i, 1) данные в него. границу массива. ИзменениеHugo клавиатуры код в
памяти непосредственно другFor i =
хотелось бы это
часто возникает необходимость
ReDim Team_Members(1 To
office-guru.ru
Формулы массива в Excel
Терминология
индекса, указывающих день массива в Excel не хранятся в Excel существует, какУрок: так как если отображаемого цельным массивом = «d»Но конечно если нижней границы вызовет: VDM, 2 - редактор VBA и за другом, доступ LBound(iArray) To UBound(iArray) обучение реализовать побыстрее. поменять местами строки
20) месяца и номерУрок подготовлен для Вас диапазонах ячеек. Их минимум, 3 способаКак перевернуть таблицу в вы выделите только или в однойNext это делать часто ошибку это к слэну, пожагово через F8 к которым осуществляется
Пример 1. Классика жанра — товарный чек
‘цикл от нижней В целом по и столбцы, т.е.И если в процессе команды. Например, адрес командой сайта office-guru.ru принято называть сделать это: Экселе одну ячейку массива, ячейке. Например, дляr.Value = a
- в цикле -По-английски данное условие
- он спец по пройдитесь по коду
- по индексу. границе массива до
- excel уверенный пользователь, развернуть таблицу на выполнения кода потребуется
- элемента, содержащего показателиАвтор: Антон Андроновмассивами константВыделить диапазон массива вручную,Функция то ничего не
- того, чтобы умножитьr.SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete это очень не звучит так: CopyMemory, я этоПавелМассивы бывают Одномерные,
верхней границе массива
но не такой бок, чтобы данные, снова изменить размер продаж дляАвтор: Антон Андронов. В этом уроке т.е. с помощьюМОБР получится. Затем в
один диапазон наEnd With оптимально.when you use понять не могуЛастик Двумерные и т.д.MsgBox i & конечно как на которые раньше шли массива, то можно
Пример 2. Разрешите Вас… транспонировать?
2-ойМассивы в Visual Basic Вы узнаете, что мыши. Это самыйпозволяет производить вычисление строке формул проведите второй применяют формулуDebug.Print Timer -По правде, у Preserve, you can :): Все примеры, приведённыеДвумерный массив - «-й элемент массива этом форуме, но по строке, теперь использовать выражение ReDim
команды за for Application – же такое массивы
- простой, но в обратной матрицы. Все необходимую корректировку. по следующему шаблону: tm меня не было change the sizeВот его пример в этой теме это как ячейки
- равен: » & цели пока такой
- располагались в столбцах снова:15-ое
это структуры, которые констант и как ряде случаев абсолютно правила ввода значенийПосле того, как изменения=адрес_массива1*адрес_массива2
Редактирование формулы массива
End Sub такой нужды - of the array кода: я поместил в на листе Excel. iArray(i) и нет. Хотя и наоборот. ВIf Team_Size >января будет записан обычно хранят наборы с ними работать непригодный способ. у этого оператора
внесены, набираем комбинациюНад диапазонами данных можноКода мало, работает переопределять многомерные массивы. only by changingно можно еще файл Excel, чтобы Т.е. есть строкиNext i бывает конечно если математике такая операция 20 Then ReDim так: взаимосвязанных переменных одного
в Excel.С помощью диалогового окна точно такие же,Ctrl+Shift+Esc также выполнять операции почти моментально. Всегда иначе можно the upper bound; быстрее — цикл
Пример 3. Таблица умножения
вам было удобнее и есть столбцы.’ВАРИАНТ 2 есть желание я называется транспонированием. При Team_Members(1 To Team_Size)
Jan_Sales_Figures(15, 2) типа. Доступ кЧтобы создать массив констант,
- Выделить группу ячеек
- как и у
- . Формула будет изменена. сложения, вычитания, деленияЭто были только выкрутиться. changing the lower copymemory по столбцам
тестировать код. См.
Пример 4. Выборочное суммирование
Если к Одномерному’массив можно заполнить захожу сюда и помощи формулы массива End IfТаким же образом можно
записям массива осуществляется введите его элементы. Для этого выделите предыдущего. Но важноДля удаления формулы массива и другие арифметические числа, т.е. вНо если бы bound causes anDeclare Sub CopyMemory файл массиву можно обратиться циклом решаю какую-нибудь задачу. и функцииНужно иметь в виду, объявить массив с по их числовому и заключите их любую ячейку, которая
planetaexcel.ru
VBA. Создание виртуальных массивов. Выгрузка массива на лист
знать, что вычисление нужно точно так действия. удаляемые строки пишем можно было «удлинять» error.
Lib «kernel32» Alias
P.S. Код можно так:For i =Что я знаюТРАНСП (TRANSPOSE) что изменение размера 3-мя и более индексу. в фигурные скобки. принадлежит массиву: обратной матрицы возможно же, как иКоординаты массива имеют вид текст, потом эти массив вниз -Если у нас «RtlMoveMemory» (Destination As посмотреть нажав Alt+F11переменная = Массив(5)
LBound(iArray) To UBound(iArray) о vba.
это делается на динамического массива таким измерениями – достаточно
Например, есть команда из Например, на рисункеА затем на вкладке исключительно в том
в предыдущем случае, адресов первой её строки удаляем.
это было бы
массив двумерный, например Any, Source As
ПавелТо к Двумерному ‘цикл от нижнейЗнаю объектную модель раз. способом приведёт к добавить дополнительные измерения 20 человек, имена ниже представлен массив, Главная из раскрывающегося случае, если она выделить курсором весь ячейки и последней,VDM
очень неплохо :)Redim myArray (1 Any, ByVal Lengthvikttur массиву нужно обращаться границе массива до Application, workbook, sheet,
Допустим, имеем двумерный массив потере всех значений,
в объявление массива
которых нужно сохранить состоящий из 6
списка содержит равное количество
диапазон ячеек, в разделенные двоеточием. Если: Нет, Вы меняR Dmitry to 10, 1 As Long): Студент++, здесь знаниями
указывая и первый верхней границе массива cell
ячеек, который хотим хранившихся в массиве.
и использовать дополнительные
для дальнейшего использования констант:
Найти и выделить строк и столбцов,
котором она находится. диапазон двумерный, то не так поняли
: зря вы так to 3)Sub arrdel_str_copymem() не отделаетесь, бутылкой
и второй индекс,iArray(i) = iЗнаю что такое
транспонировать. Для того, чтобы индексы для ссылки
в коде VBA.={1;2;3;4;5;6}выберите пункт и если её
Затем нажать на первая и последняя — я не про массивы, если
то через ReDimarr = Range(«A1:B5»).Value тоже (не пьет). например: ‘каждому индексу массива переменные и какВыделяем диапазон ячеек для сохранить данные, уже на элементы этого Можно было быТакой массив можно использоватьВыделить группу ячеек определитель не равен кнопку ячейки расположены по
собираюсь отказываться от ими умело пользоваться, Preserve можно будет
Dim delStr&, j&,
Готовьте большущую шоколадкуПеременная = массив(5,3)
присваиваем его номер их объявлять dim размещения транспонированной таблицы. находящиеся в массиве, массива.
просто объявить 20
в формулах Excel..
нулю. Если применять
Delete
диагонали друг от
массивов).
все будет работать
менять только индекс mr& :)
Вот ещё одинNext i i,j as variant Поскольку исходный массив
нужно использовать ключевоеРанее в этой статье переменных для хранения Например, следующая формулаОткроется диалоговое окно
данную функцию кна клавиатуре. друга. Например, адресУ меня уже
гораздо быстрее и
3 (т.е. верхний
delStr = 3:Студент++
пример заполнения ОДНОМЕРНОГОMsgBox «4-й элементЗнаю чем метод ячеек был 8 слово
мы уже рассмотрели каждого имени, вот суммирует значения этого
Выделить группу ячеек
области с разнымПосле этого формула будет одномерного массива может
сейчас вся отчётность
качественнее. Сама по индекс второй размерности) mr = UBound(arr)
: ОК. Спасибо Павел. массива массива равен: « отличается от свойства строк на 2
Preserve несколько примеров объявления так: массива:
. Установите переключатель на
количеством строк и удалена со всей быть таким:
на них построена.
себе скорость перебора на что-то другое,For j = Если что тоSub Test3() & iArray(4) и области видимости столбца, то надо, как показано ниже: массивов в VBA,Dim Team_Member1 As=СУММ({1;2;3;4;5;6}) пункт текущий массив
столбцов, то вместо области. Теперь в
A2:A7
Просто не буду массива минимальна, основное а другие индексы 1 To UBound(arr, нужно по тому
Dim iArray()
’ВАРИАНТ 3Общее понимание циклов. выделить диапазон пустыхIf Team_Size >
но эта тема String Dim Team_Member2
В формулах можно обрабатывать и нажмите
корректного результата на
неё можно будет
.
пытаться применить то,
время отнимают операции
менять уже нельзя. 2) (SQL BI) из
’заполнять массив можно
’давайте умножим каждыйМогу написать Msgbox ячеек размером 2 20 Then ReDim заслуживает более подробного As String … сразу несколько массивов.
ОК выходе отобразится значение
вводить любые данные.А пример адреса двумерного чего не знаю. сравнения , преобразования Т.е. вы не
CopyMemory arr(delStr, j), того что я так же через элемент массива на «Hello world» строки на 8
Preserve Team_Members(1 To
рассмотрения. Как было Dim Team_Member20 As Например, следующая формула.
«#ЗНАЧ!»Наиболее удобно в качестве диапазона выглядит следующимБудем учиться постепенно. и т.д. внутри можете изменить 10
arr(delStr + 1, написал пишите мне функцию Array
3В чем проблема/
столбцов.
Team_Size) End If показано, одномерный массив String вернет максимальное значение,Текущий массив будет выделен:
. Синтаксис у этой формул использовать уже
образом:
55557 цикла. на 15 j), 16 * на почту. Буду
’нужно учесть, чтоFor i = зачем я всевводим функцию транспонирования =ТРАНСП(К сожалению, ключевое слово можно объявить вотНо можно использовать гораздо
которое получится вПри помощи комбинации клавиш
формулы такой: готовые встроенные функцииA2:D7слэнЕсть разные способы
’ так сработает (mr — delStr) разбирать ваши примеры
первый индекс будет
LBound(iArray) To UBound(iArray) это пишу. Мне Preserve так:
более простой и
результате сложения двухCtrl+/=МОБР(массив)
Excel. Доступ к
.
: это никаким образом и хитрости какRedim myArray (1
arr(mr, j) =Студент++ начинаться с 0, ‘цикл от нижней надоело читать книги
в качестве аргумента функцииможно использовать только,Dim Team_Members(1 To
организованный способ – массивов констант:. Для этого выберитеДля того чтобы рассчитать ним можно получитьЧтобы рассчитать подобную формулу,
не нарушает формулировку
увеличить скорость,например при
to 10, 1 Empty: Это да а не с
границе массива до
по vba. Мне выделяем наш массив
чтобы изменить верхнюю 20) As String
сохранить список имён=МАКС({1;2;3;4;5;6}+{7,8,9,10,11,12}) любую ячейку массива
определитель, применяется функция через
нужно выделить на — в этом поиске уникальных использовать
to 3)Nextnerv 1
верхней границе массива нужен толковый человек ячеек A1:B8
границу измерения массива.
Такое объявление сообщает компилятору членов команды вМассивы констант могут содержать
и нажмите комбинацию.
со следующим синтаксисом:
Мастер функций
листе область, в случае все элементы словари, индексировать массивReDim Preserve myArray
End Sub
: Студент++, можете мнеiArray = Array(«Январь»,iArray(i) = iArray(i) который мне нажмем Нижнюю границу массива
VBA, что массив массиве из 20 числа, текст, логическиеСамое простое, что Вы=МОПРЕД(массив)
, нажав кнопку которую будет выводиться будут однотипно типа словарем и т.д. (1 to 10,
R Dmitry на почту написать. «Февраль», «Март», «Апрель», * 3 ‘каждой примерах объяснит что
Ctrl + Shift + таким образом изменить
Team_Members
переменных типа
значения и значения можете сделать с
Урок:
«Вставить функцию»
результат, и ввести
вариант :)
, все зависит
1 to 7)
: 1-нет (можно увеличить
В теле письма:
«Май»)
элемент массива умнажаем
такое массивы и
Enter нельзя. Кроме того,состоит из 20String ошибки
массивом в ExcelОбратная матрица в Excelслева от строки в строку формулnerv
от конкретной ситуации.’а так нет последнюю размерность массива
1. Чему именно
MsgBox «1-й элемент на 3 как с нимии получаем «перевернутый если массив имеет переменных, к которым
:
#Н/Д – это удалитьКак видим, операции с формул. Или же выражение для вычисления.: Чего? О_о НетЛастикRedim myArray (1
с помощью Redim хотите научиться.
массива: » &
Next i бороться и научить массив» в качестве несколько измерений, то, можно обратиться поDim Team_Members(1 To
: его. Для этого диапазонами помогают сэкономить во вкладкеПосле ввода следует нажать вообще таких понятий: VDM, to 10, 1 Preserve)
2. Что уже iArray(1) & vbLf
MsgBox «5-й элемент делать более менее результата: используя ключевое слово
индексам от 1 20) As String
={12;»Текст»;ИСТИНА;ЛОЖЬ;#Н/Д} достаточно выделить нужный
время при вычислениях,«Формулы» не на кнопку
как «массив строки»Смотрите как удобно
to 3)2-не понял чего знаете (если знаете). & «т.к. 0
массива равен: « сложную логику наЕсли формула массива расположенаPreserve
до 20. Однако,В строке, показанной выше,У Вас может возникнуть массив и нажать а также свободноена ленте можноEnter или «массив столбца».
работать с даннымиReDim Preserve myArray хотите сотворить со3. Знакомы ли
элемент массива Январь», & iArray(5) vba не в одной, можно изменить размер нам может прийти мы объявили массив. резонный вопрос: Зачем клавишу пространство листа, ведь выбрать одну из, как обычно, а Существуют одномерные, многомерные
на листе через (1 to 15,
строкой? с помощью Вы с синтаксисом
, «»End Sub
В основном проблема
ячейке (как в только последнего измерения
в голову пронумеровать Теперь запишем значение нужен такой массив?Delete не нужно дополнительно
категорий, в которой набрать комбинацию клавиш и массивы массивов. массивы 1 to 3) функции index можно
vb?End Sub
Скопируйте этот код с массивами. Требуется Примере 1), а массива.
наши переменные массива в каждый из Отвечу на него.
суммировать данные, которые находится интересующий васCtrl+Shift+Enter
Также массивы подразделяютсяSub Test()P.S. Пример с вытащить из двухмерного
4. Для чегоПавел в редактор VBA около 10 часов в нескольких ячейках
Урок подготовлен для Вас числами от 0 его элементов, вот в виде примера.На рисунке ниже представлена объединены в диапазон, оператор.. После этого выражение на статические иDim myArr(), i листом Excel это массива строку или это Вам нужно?Ластик
(только копировать в практических занятий, то (как в Примере командой сайта office-guru.ru до 19, и таким образом:На рисунке ниже приведен
формула массива, которая для последующей работы
После того, как пользователь в строке формул динамические. Директива Option
As Long, n так для «умственного» столбец, и выгрузить5. Изучали ли: Определение границ массива, РУССКОЙ РАСКЛАДКЕ КЛАВИАТУРЫ)
есть по аське
2), то Excel
Источник: http://www.excelfunctions.net/Visual-Basic-Arrays.html в таком случае
Team_Members(1) = «John список студентов, которые
складывает значения двух с ними. Все в
будет автоматически взято Base [Число] переопределяет As Long восприятия. Так же
их на лист Вы и практиковались
на примере одномерного
и запустите его
или как то не позволит редактироватьПеревел: Антон Андронов массив должен быть Smith»
получили определенные оценки: диапазонов. Из рисунка это выполняется «наМастере функций в фигурные скобки, нижнюю границу массива.’допустим есть какие-то можно выразиться, что или еще как в других языках
массива через F8 (пошаговый
так.
или удалить однуАвтор: Антон Андронов объявлен вот так:Дополнительное преимущество хранения данных
Наша задача перевести оценку видно, что при лету». А для
или на ленте
а ячейки на По умолчанию нижней данные на листе
двумерный массивы - нибудь приспособить :)
программирования?Sub TestArray4()
режим) и нажимайтеЧто я могу
отдельно взятую формулуПодDim Team_Members(0 To
в массиве, по из числового вида вводе формулы мы
преобразования таблиц и инструментов выберет наименование
листе будут заполнены
границей массива считаетсяRange(«A1:D1») = Array(«1», это матрица. НоЛастикp.s.: я, конечно,Dim iArray() ‘объявляем F8 до конца
научить (например в ячейкемассивом 19) As String
сравнению с использованием в ее словесное
допустили небольшую ошибку, матриц только функции конкретного оператора, откроется
данными, полученными в
0. «2», «3», «4»)
мне кажется, что: VDM,
не супер-профессионал, но динамический массив макроса, вы увидитеИнформационная поддержка
D10) и выдастобычно понимают наборНа самом деле, по отдельных переменных, становится
описание и вывести наша задача ее массивов и подходят, окно аргументов функции, результате вычисления, в
это M(1 To
Range(«A2:D2») = Array(«5», это сложнее понять.к сожалению, нельзя.
тем не менее,’заполняем массив названиями как работает код,Установка SQL server предупреждающее сообщение
данных, объединенных в умолчанию нумерация элементов очевидным, когда возникает соответствующие значения в исправить.
так как обычные куда можно вводить пределах всего выделенного
1) — одномерный
«6», «7», «8»)ПавелСвойства Resize, EntireRow, могу кое-чему научить. месяцев а комментарии вам c ноля
Невозможно изменить часть массива группу. Массивы бывают
массива начинается с необходимость выполнить одно диапазоне C2:C7. ВЧтобы отредактировать формулу массива, формулы не в исходные данные для диапазона. массивRange(«A3:D3») = Array(«9»,
VDM EntireColumn — относятся
HugoiArray = Array(«Январь», помогут понять смысл
Насторойка тестовых баз.одномерные 0, и в и то же данном случае создавать выполните следующие действия: силах справиться с расчета.Если вы в дальнейшемэто M(1 To
«10», «11», «12»)
: УУУ, как всё только к ячейкам: Я помнится тоже
«Февраль», «Март», «Апрель», массивов. их описание
Для редактирования формулы массива
(элементы массива образуют объявлении массива начальный действие над каждым
отдельную табличку дляВыделите диапазон массива любым подобными задачами. Но
Правила ввода и редактирования попытаетесь удалить содержимое 1, 1 To’берём их в сложно:) листа Excel. не сразу массивы «Май»)Если что-то будет
Общие знания T-sql,
необходимо выделить весь строку или столбец) индекс может быть
элементом массива. Если хранения текстового описания из известных Вам в то же функций, если они или изменить любую 1) — двумерный массив (массив получаетсяПравильно ли яКак бы аналог
понял, пару раз’определяем нижнюю и не понятно, спрашивайте
хорошие знания sql диапазон (A10:H11 в или не указан вовсе, бы имена членов оценок не имеет способов. В нашем время нужно учесть, выводят результат сразу из ячеек, которая массив двумерным) понимаю, что той
Resize для массива на форуме спрашивал верхнюю границу массиваПавел
92 стандарта реально нашем случае) идвумерные
вот так: команды были сохранены смысла, поэтому выгоднее случае это диапазон что к подобным в несколько ячеек, расположена в диапазоне,Поскольку таблица excel
myArr() = Range(«A1:D3»).Value гибкости в работе это разъяснения. Resize тожеMsgBox «Массив содержитЛастик
научу языку запросов изменить формулу в(матрица). Легко сообразить,Dim Team_Members(19) As в 20 отдельных
создать следующий массив C1:C12.
выражениям применяются дополнительные те же самые, куда выводится результат, представлена двумя измерениями,
’в цикле умножаем с диапазонами какRedim массив(новая размерность) непонятная штука была 5 элементов» &: Теперь давайте попробуем
sql, научу выбирать строке формул (или
что почти в String переменных, то потребовалось констант:Перейдите в режим редактирования
правила ввода и что и для то ваше действие на лист можно каждое значение столбца на рабочем листет.е. можно объявить :)
vbLf & _ применить массивы к данные из одной нажав любой таблице Excel
Такую запись компилятор VBA бы каждый раз={«»;»Неудовл.»;»Удовл.»;»Хорошо»;»Отлино»} формулы, для этого редактирования. обычных формул массива.
окончится неудачей. Также выгрузить (через resize) на 2 массивы нам не массив, например, из
Одно небольшое замечание»Нижняя граница массива данным на листе и более таблицF2 при желании можно расценит, как объявление записывать 20 строкВ данном случае первый щелкните по строкеАвтор: Максим Тютюшев То есть, после ничего не выйдет,
только двумерный массивFor n = представляют, и обращение 5 элементов по «Массив — равно индексу: « ExcelНаучу разбираться в
). Затем необходимо повторить найти один или
массива из 20 кода, чтобы выполнить элемент массива содержит формул или нажмите
В прошлых уроках мы
ввода значения обязательно если вы сделаете (насколько мне известно).
1 To UBound(myArr, к диапазону будет
Dim myArray (1 это именованный набор
& LBound(iArray) &Sub TestArray2()
джойнах, отличать левый ввод измененной формулы
несколько таких массивов: элементов с индексами одинаковое действие с
пустую строку, поскольку
клавишу разобрали основные понятия нужно установить курсор
попытку отредактировать данныеHugo 1) ‘цикл по далеко не таким
to 5) однотипных переменных». vbLf & _Dim iArray() ‘объявляем
от внутреннего массива, нажав сочетаниеФормулы массива
от 0 до
каждым из них.
предполагается, что оценкиF2 и сведения касаемо
в строку формул в строке функций.
: Чего? :)
строкам же прозрачным?а потом егоЕсли массив типа
»Верхняя граница массива массив. Размерность массиваПреобразования агрегация, типы. клавишв Excel - 19. Однако, если имена 1 быть не
. Excel удалит фигурные массивов в Excel. и набрать сочетание При этом появитсяSub tt()For i =
Тогда оставлю эту переопределить
Variant — т.е. равно индексу: « ниже в коде И много другого.Ctrl + Shift + это специальные формулыЭти же правила действуют сохранены в массиве, может.
скобки вокруг формулы
В этом уроке клавиш
информационное сообщение, вDim arr 1 To UBound(myArr,
затею пока, боюсь
Redim myArrray (1 как всюду в
& UBound(iArray)
не указываем.
Вставлять данные, удалять Enter.
для обработки данных
при объявлении многомерных
то выполнить нужное
Тогда формула, возвращающая нужный массива.
мы продолжим изучениеCtrl+Shift+Enter
котором будет говориться,
arr = Array(1, 2) ‘цикл по
разбросаюсь. to 10) примерах, без явного
End Sub
Dim i As
Проектирование БД общие
Excel также не позволит
из таких массивов. массивов Visual Basic.
действие с каждым
нам результат, будетВнесите необходимые корректировки в
формул массива, но. что нельзя изменять 2, 3) столбцам
А жаль, сейчасно при Redim указания типа массива,Чтобы узнать границы, Long вопросы
свободно перемещать ячейки, Формулы массива делятся Как уже было
из них можно выглядеть следующим образом: формулу:
с большим уклоном
Урок:
часть массива. Данное[a1].Resize(, UBound(arr) +myArr(n, i) = данные с листа — массив полностью то в массиве например, двумерного массива
’заполняем диапазон А1:А5Службы SSAS научу входящие в формулу на две категории показано в одном при помощи простогоВ этом примере функцияА затем нажмите комбинацию на их практическоеМастер функций в Excel сообщение появится даже 1) = arr myArr(n, i) * в массив забираю очищается
могут храниться и нужно писать так названиями месяцев
сделать куб массива или добавлять — те, что из примеров, при
цикла.ИНДЕКС клавиш применение. Итак, какОдной из наиболее востребованных в том случае,
End Sub 2
перебором (пользуясь полученными
Чтобы он не
числа, и даты,LBound(iArray,2)
Range(«A1») = «Январь»SSRS научу развернуть
новые строки-столбцы-ячейки в
planetaexcel.ru
возвращают одно значение
����������� ������ �������
����������� ������ �������
��� ��� VBA ��������� �������� ������������ ������ ������� �������, ��� ��������� �������� ������ ������ ������� ����������� ������ ������� ������� �� ����� ���������� ���������. ��� ���� ���� � VBA ������� ��� �������, ������ ������� ���������:
LBound(���_�������[, �����_���������])
RBound(���_�������[, �����_���������])
������� LBound ��������� �������� ������ ������� �������, a RBound � �������. ��� ������� ��������� � �������� ���������� ������������� ������� � ����� ���������, ������� �������� ����� ��������. ��������� ��������� ���������� � �������. ���� �������� �������������� ������, �� ��� �������� ����������� ������ �������. ��� ������� ���������� �������� ���� Long.
���� �������� ������ ��������� ������ � ������� ������ ������� ��������� ������� avarValues (�������� ����������� � ���������� ���� Long):
lngLBound = LBound(avarValues)
lngRBound = RBound(avarValues)
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2016 Excel для iPad Excel для iPhone Excel для планшетов с Android Excel для телефонов с Android Еще…Меньше
Формулы Excel, возвращающие набор значений, также известный как массив, возвращают эти значения в смежные ячейки. Это действие называется переносом.
Формулы, способные возвращать массивы переменного размера, называются формулами динамического массива. Формулы, которые в сейчас возвращают успешно переносимые массивы, можно назвать формулами перенесенного массива.
Ниже приведены несколько заметок, которые помогут вам в понимании и использовании формул такого типа.
Что означает перенос?
Примечание: Более старые формулы массива, известные как устаревшие формулы массива, всегда возвращают результат фиксированного размера — они всегда переносятся в одно и то же количество ячеек. Поведение при переносе, описанное в этом разделе, не применяется к устаревшим формулам массива.
Перенос означает, что формула привела к нескольким значениям, и эти значения были помещены в смежные ячейки. Например, =SORT(D2:D11;1,-1),, сортирующая массив в порядке убывания, возвращает соответствующий массив высотой 10 строк. Но вам нужно только ввести формулу в верхнюю левую ячейку или в данном случае F2, и она автоматически переместится в ячейку F11.
Ключевые моменты
-
При нажатии на ВВОД для подтверждения формулы Excel динамически изменит размер диапазона вывода и поместит результаты в каждую ячейку в этом диапазоне.
-
Если вы пишете формулу динамического массива для работы со списком данных, может быть удобно поместить его в таблицу Excel, а затем использоватьструктурированные ссылки для ссылки на данные. Это происходит потому, что структурированные ссылки автоматически корректируются при добавлении или удалении строк из таблицы.
-
Формулы перенесенного массива не поддерживаются в самих таблицах Excel, поэтому их следует размещать в сетке за пределами таблицы. Таблицы лучше всего подходят для хранения строк и столбцов независимых данных.
-
После ввода формулы перенесенного массива при выделении любой ячейки в области переноса Excel выделит рамкой границу диапазона. Граница исчезнет при выборе ячейки за пределами области.
-
Редактировать можно только первую ячейку в области переноса. При выборе другой ячейки в области переноса, формула будет видна в строке формул, но текст будет «фантомным» и недоступным для изменения. При необходимости обновить формулу, необходимо выбрать верхнюю левую ячейку в диапазоне массива, изменить ее по мере необходимости. При нажатии Enter Excel автоматически обновит остальную часть области переноса.
-
Перекрытие формул. Формулы массива нельзя ввести, если что-то блокирует выходной диапазон. и если это происходит, Excel возвращает ошибку #SPILL!, указывающую на наличие блокировки. Если удалить помеху, формула будет перенесена должным образом. В приведенном ниже примере выходной диапазон формулы перекрывает другой диапазон с данными и отображается с пунктирной рамкой, перекрывающей ячейки со значениями, указывающими, что он не может быть перенесен. Удалите блокирующие данные или скопируйте их в другое место, и формула перенесется, как и ожидалось.
-
Устаревшие формулы массива, введенные с помощью CTRL+SHIFT+ENTER (CSE), по-прежнему поддерживаются по соображениям обратной совместимости, но их больше нельзя использовать. Если хотите, вы можете преобразовать устаревшие формулы массива в формулы динамического массива, найдя первую ячейку в диапазоне массива, скопировав текст формулы, удалив весь диапазон устаревшего массива, а затем повторно введя формулу в верхней левой ячейке. Перед обновлением устаревших формул массива до динамических формул массива следует помнить о некоторых счетных различиях между ними.
-
Приложение Excel ограничило поддержку динамических массивов в операциях между книгами, и этот сценарий поддерживается, только если открыты обе книги. Если закрыть исходную книгу, все связанные формулы динамического массива вернут ошибку #ССЫЛКА! после обновления.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Функция ФИЛЬТР
Функция СЛУЧМАССИВ
Функция ПОСЛЕДОВ
Функция СОРТ
Функция СОРТПО
Функция УНИК
Ошибки #ПЕРЕНОС! в Excel
Оператор неявного пересечения: @
Нужна дополнительная помощь?
#Руководства
- 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.
Виды массивов функций Excel
Массив – данные, объединенные в группу. В данном случае группой является массив функций в Excel. Любую таблицу, которую мы составим и заполним в Excel, можно назвать массивом. Пример:
В зависимости от расположения элементов различают массивы:
- одномерные (данные находятся в ОДНОЙ строке или в ОДНОМ столбце);
- двумерные (НЕСКОЛЬКО строк и столбцов, матрица).
Одномерные массивы бывают:
- горизонтальными (данные – в строке);
- вертикальными (данные – в столбце).
Примечание. Двумерные массивы Excel могут занимать сразу несколько листов (это сотни и тысячи данных).
Формула массива – позволяет обработать данные из этого массива. Она может возвращать одно значение либо давать в результате массив (набор) значений.
С помощью формул массива реально:
- подсчитать количество знаков в определенном диапазоне;
- суммировать только те числа, которые соответствуют заданному условию;
- суммировать все n-ные значения в определенном диапазоне.
Когда мы используем формулы массива, Excel видит диапазон значений не как отдельные ячейки, а как единый блок данных.
Синтаксис формулы массива
Используем формулу массива с диапазоном ячеек и с отдельной ячейкой. В первом случае найдем промежуточные итоги для столбца «К оплате». Во втором – итоговую сумму коммунальных платежей.
- Выделяем диапазон Е3:Е8.
- В строку формул вводим следующую формулу: =C3:C8*D3:D8.
- Нажимаем одновременно клавиши: Ctrl + Shift + Enter. Промежуточные итоги посчитаны:
Формула после нажатия Ctrl + Shift + Enter оказалась в фигурных скобках. Она подставилась автоматически в каждую ячейку выделенного диапазона.
Если попытаться изменить данные в какой-либо ячейке столбца «К оплате» — ничего не выйдет. Формула в массиве защищает значения диапазона от изменений. На экране появляется соответствующая запись:
Рассмотрим другие примеры использования функций массива Excel – рассчитаем итоговую сумму коммунальных платежей с помощью одной формулы.
- Выделяем ячейку Е9 (напротив «Итого»).
- Вводим формулу вида: =СУММ(C3:C8*D3:D8).
- Нажимаем сочетание клавиш: Ctrl + Shift + Enter. Результат:
Формула массива в данном случае заменила две простые формулы. Это сокращенный вариант, вместивший всю необходимую информацию для решения сложной задачи.
Аргументы для функции – одномерные массивы. Формула просматривает каждый из них по отдельности, совершает заданные пользователем операции и генерирует единый результат.
Рассмотрим ее синтаксис:
Функции работы с массивами Excel
Предположим, в следующем месяце планируется увеличение коммунальных платежей на 10%. Если мы введем обычную формулу для итога =СУММ((C3:C8*D3:D8)+10%), то вряд ли получим ожидаемый результат. Нам нужно, чтобы каждый аргумент увеличился на 10%. Чтобы программа поняла это, мы используем функцию как массив.
- Посмотрим, как работает оператор «И» в функции массива. Нам нужно узнать, сколько мы платим за воду, горячую и холодную. Функция: . Итого – 346 руб.
- Функция «Сортировки» в формуле массива. Отсортируем суммы к оплате в порядке возрастания. Для списка отсортированных данных создадим диапазон. Выделим его. В строке формул вводим . Жмем сочетание Ctrl + Shift + Enter.
- Транспонированная матрица. Специальная функция Excel для работы с двумерными массивами. Функция «ТРАНСП» возвращает сразу несколько значений. Преобразует горизонтальную матрицу в вертикальную и наоборот. Выделяем диапазон ячеек, где количество строк = числу столбцов в таблице с исходными данными. А количество столбцов = числу строк в исходном массиве. Вводим формулу: . Получается «перевернутый» массив данных.
- Поиск среднего значения без учета нулей. Если мы воспользуемся стандартной функцией «СРЗНАЧ», то получим в результате «0». И это будет правильно. Поэтому вставляем в формулу дополнительное условие: . Получаем:
Скачать примеры массива функций
Распространенная ошибка при работе с массивами функций – НЕ нажатие кодового сочетания «Ctrl + Shift + Enter» (никогда не забывайте эту комбинацию клавиш). Это самое главное, что нужно запомнить при обработке больших объемов информации. Правильно введенная функция выполняет сложнейшие задачи.
Содержание:
-
Зачем нужны массивы
-
Что такое массив
-
Типы массивов
-
Объявление массивов
-
Объявление фиксированных массивов
-
Объявление динамических массивов
-
Изменение элементов массива
-
Чтение элементов массива
-
Определение границ массива
-
Перебор элементов массива
-
Передача массивов в подпрограммы
-
Массив с элементами типа массив
-
Функция Array
-
Функция Split
-
Нюансы работы с динамическими массивами
-
Неинициализированный массив
-
Расширение массива
-
Удаление массива
-
Получение массива на основе диапазона Excel
-
Дополнительные источники
Зачем нужны массивы
Массивы очень упрощают процесс программирования. Без них практически невозможно написать универсальную программу. Например, представьте себе, что вы манипулируете информацией о квартирах жилого дома. Вы объявляете переменные K1 — для первой квартиры, K2 — для второй и так далее. K1=54 будет означать, что площадь первой квартиры 54 кв.м., К2=72 и т.д. Теперь представим, что нам надо подсчитать общую площадь всех квартир в доме. Очевидно, что это что-то типа Total_S = K1+K2+…+Kn. В одном доме у нас 36 квартир, а в другом 144. Представляете бредовость процесса подобного программирования? Если в первом случае я должен буду использовать 36 отдельных переменных для вычисления общей площади, то для второго дома уже 144. Очень быстро вы придёте к мысли, что вам нужна переменная, состоящая из нумерованных ячеек. Тогда обретают смысл все те операторы циклов, входящие в состав любого языка программирования. Но об этом чуть позже…
▲ вверх
Что такое массив
Массив — переменная, состоящая из некоторого количества однотипных элементов. У массива, как и у любой другой переменной, есть имя. А доступ к конкретному элементу массива осуществляется через указание в скобках после имени его индекса. Например, A(5) означает, что я обращаюсь к элементу с индексом 5 массива, имеющего имя A.
▲ вверх
Типы массивов
Массивы в VBA и во многих других языках программирования делятся на 2 класса:
-
Фиксированные массивы. Такие массивы состоят из заранее известного количества элементов. Это количество определяется во время объявления массива и уже не может быть изменено в процессе его жизненного цикла. Вы, конечно же, сможете использовать меньшее количество элементов, но не существует способа увеличить количество элементов сверх объявленного.
-
Динамические массивы. Эти массивы можно «переобъявлять» в процессе жизненного цикла. То есть мы можем управлять количеством элементов динамических масивов в зависимости от наших потребностей. Это очень удобно, так как в подавляющем большинстве случаев программист не может заранее знать, с каким объёмом данных он столкнётся. Если вы собираетесь писать более-менее универсальные программы, то этот тип массивов определенно стоит изучить.
▲ вверх
Объявление массивов
Объявление фиксированных массивов
Рекомендация: при объявлении массивов VBA я советую вам давать всем именам префикс «arr«. Я сторонник венгерской нотации.
Как мы видим, тут объявлено 2 одномерных массива arrTemp и arrTest. Одномерные массивы в программировании также часто называют векторами. Типом элементов первого массива является Long, второго массива — String. В этом типе синтаксиса в скобках указан максимальный индекс (верхняя граница ) элемента массива. А что насчёт минимального индекса (нижней границы) массива? По-умолчанию минимальным индексом является ноль. В данном случае стандартное поведение интерпретатора языка VBA можно изменить при помощи оператора option base {0|1}. Option base 1 заставляет VBA считать нижней границей массива — единицу, а не ноль.
Таким образом, по-умолчанию массив arrTemp имеет 11 элементов — от 0 до 10. Но, если в начало модуля, в котором этот массив объявляется, вставить оператор Option Base 1, то массив arrTemp будет иметь 10 элементов — от 1 до 10.
Помимо вышеуказанного вы вправе использовать следующий синтаксис, который НЕ зависит от option base {0|1}:
таким образом вы в явном виде указываете и нижнюю, и верхнюю границы. Как видите, нижняя граница совершенно не обязательно должна начинаться с 0 или 1. Более того, индексы границ могут принимать и отрицательные значения, главное чтобы нижняя была меньше верхней.
Помимо одномерных массивов, можно объявлять и массивы с размерностью больше единицы.
arrMulti — двумерный массив, а arrData3 — трёхмерный. Первый содержит 11*31=341 элемент, второй — 2*3*10=60 элементов. Теоретически допускается объявлять до 60 размерностей массива.
Какие типы данных могут стать элементами массива? Тут всё, как в шутке про фамилию еврея, — абсолютно любой тип данных годится на роль элемента массива, включая объектные типы, User Data Type, другие массивы (через тип Variant). Если вы не указываете при объявлении тип данных массива, то предполагается, что этим типом является тип Variant.
▲ вверх
Объявление динамических массивов
Динамические массивы объявляться так:
Однако, использовать их после такого объявления пока ещё нельзя. Необходимо выделить память под массив. Особенность работы с динамическим массивом как раз состоит в том, что программист отвечает за его своевременное расширение (усечение) в памяти. Для этого существует специальный оператор, который имеет следующий синтаксис:
ReDim [Preserve] varname(subscripts) [As Type]
Например:
После этого оператора, вы можете использовать элементы массива arrOpen с 0-го по 5-й. Всё, что мы говорили про оператор option base и нижнюю границу, верно и для динамических массивов. Предположим, что вы сохранили информацию в элементах 0-5 и у вас поспела новая порция информации для элементов 6-11. Чтобы разместить в данном массиве новые элементы и не потерять старые, вы должны сделать следующее:
то есть мы тут увеличиваем верхнюю границу массива и используем ключевое слово Preserve, чтобы во время этой операции не потерять текущее содержимое arrOpen, так как в противном случае (без слова Preserve) массив будет расширен, а память заполнена нулями. Вы также вправе вообще не декларировать массив оператором Dim, а сделать это впервые через ReDim и там же указать лип элементов. Но, если вы в первом ReDim (или Dim) указали определенный тип элементов, то в последующих операторах ReDim этот тип переопределён быть не может — возникнет ошибка на этапе компиляции проекта.
▲ вверх
Изменение элементов массива
Пора бы нам уже научиться пользоваться нашими массивами — то есть записывать информацию в их элементы и считывать её оттуда. Это довольно просто:
Как и с обычными переменными запись информации в элемент массива происходит через оператор присваивания (=), но указанием индекса элемента массива.
▲ вверх
Чтение элементов массива
▲ вверх
Определение границ массива
В подпрограммах часто приходится иметь дело с массивами, которые переданы вам в качестве параметра (как это сделать показано ниже), поэтому в этом случае очень актуален вопрос определения нижней и верхней границ индекса массива. Для этого в языке предусмотрены 2 функции: LBound и UBound. Первая возвращает нижнюю границу индекса, вторая — верхнюю.
LBound( array [, dimension])
UBound( array [, dimension])
Для одномерных массивов параметр dimension можно не указывать. Для многомерных массивов его указывать необходимо. Кстати, это означает, что, если вы точно не знаете, с каким массивом имеете дело, но необходимо узнать его первую размерность, то лучше использовать вариант UBound(arrTemp,1), а не UBound(arrTemp), так как последний вариант вызовет ошибку, если массив окажется многомерным.
Если вы ошибётесь с указанием правильного индекса массива, то возникнет ошибка периода исполнения с кодом 9. Эта же ошибка возникнет, если вы в функции LBound / UBound укажете несуществующую размерность массива (например, 3 для двумерного массива).
▲ вверх
Перебор элементов массива
Собственно массивы нужны для того, чтобы хранить в них однотипную информацию и перебирать их в цикле. Как правило, алгоритм делает что-то полезное с одним элементом массива, а цикл повторяет эти типовые действия для всех элементов массива.
Наиболее удобный оператор цикла для перебора элементов массива — это безусловно For … Next.
так же есть способ не заботиться об определении нижней и верхней границ, если алгоритм не требует от нас знания текущего индекса массива:
Вы, конечно, можете перебирать массив и в других типах циклов Do … Loop, но, право, смысла и удобства в этом не много. По крайней мере я не сталкивался, кажется, с ситуациями, когда для перебора массива цикл For не подошёл.
▲ вверх
Передача массивов в подпрограммы
Массивы удобнее всего передавать в подпрограммы в виде параметра типа Variant.
Обратите внимание, что функции GetResult в качестве параметра передаются массивы. При чём, в первом случае это массив с типом элементов Long, а во втором — String. За счёт того, что внутри функции используются переменные типа Variant, то сначала функция нам возвращает сумму элементов массива arrIntegers, а во втором результат сложения (конкатенации) строк массива arrStrings. Кроме того, параметр parArray не описан как массив (parArray As Variant), но мы внутри функции GetResult ведём себя с ним, как с массивом (For Each Element In parArray)! Это возможно, так как переменные типа Variant умеют определять, что им присваивается и вести себя далее в соответствии с тем, что они содержат. Если переменной parArray присвоили массив (через вызов функции — строки 17 и 18), то она себя будет вести как массив.
▲ вверх
Массив с элементами типа массив
Продемонстрируем, как можно хранить в качестве элементов массива другие массивы.
Результат отладочной печати:
▲ вверх
Функция Array
Данная функция полезна для создания справочных массивов. Она возвращает переменную типа Variant, содержащую одномерный массив с типом элементов Variant.
Array( arglist )
Вызов функции без параметров приведёт к возврату массива нулевой длинны. При этом будет наблюдаться интересный эффект LBound вернёт вам 0, а UBound вернёт -1, то есть верхняя граница окажется меньше нижней границы.
▲ вверх
Функция Split
Split возвращает одномерный массив, содержащий подстроки, из строкового выражении с учётом указанного разделителя
Split(expression[, delimiter[, limit[, compare]]])
-
expression — строковое выражение, содержащая подстроки и разделители. Обязательный параметр.
-
delimiter — текстовый разделитель. Необязательный параметр. Если опущен, то предполагается, что разделителем является символ пробела.
-
limit — количество подстрок, которое необходимо вернуть. -1 или отсутствие параметра означает, что вернуть надо все подстроки.
-
compare — константа, указывающая тип сравнения для символов разделителей. 1 — текстовое сравнение (без учёта регистра), 0 — бинарное сравнение (с учётом регистра).
Результат выглядит так:
Если вы в качестве разделителя укажете пустую строку, то на выходе получите массив, состоящий из одного элемента. Кстати, split всегда возвращает массив с нулевой нижней границей вне всякой зависимости от наличия option base 1.
▲ вверх
Нюансы работы с динамическими массивами
Неинициализированный массив
У динамического массива есть такое промежуточное состояние, когда он уже объявлен, но ещё не содержит никаких элементов.
То есть у переменной динамического массива есть такое состояние, когда мы не можем воспользоваться вспомогательными функциями LBound / UBound для определения его (массива) статуса. Это особенно надо учитывать, когда вы пишите подпрограммы, работающие с массивами. Прежде чем работать (перебирать) массив необходимо убедиться, что он проинициализирован, в противном случае программа вылетит с ошибкой 9.
Для этого я предлагаю пользоваться функцией подобной нижеописанной IsNotEmptyArray:
▲ вверх
Расширение массива
Как правило, расширять динамический массив приходится в цикле. Возможны 2 стратегии: расширение на 1 элемент, как только в этом есть необходимость (назовём это эластичным расширением), и расширение авансом, когда вы увеличиваете верхнюю границу скачками, скажем сразу на 100 элементов. Реализовав оба варианта, я для себя сделал вывод, что авансовое расширение получилось и компактнее, и работает быстрее, так как операция расширения, вообще говоря, затратна и, чем реже вызывается, тем лучше.
Результат:
Авансовый метод вышел даже компактнее
▲ вверх
Удаление массива
Существует оператор Erase, который полностью освобождает память из-под динамического массива. Будучи вызванным для статического массива он его обнуляет, а если он строковый, то элементам присваивается пустые строки.
▲ вверх
Самый эффективный по скорости способ получить содержимое диапазона Excel для манипулирования в VBA — это скопировать его в массив с элементами Variant. Делается так:
Даже, если вы передаёте в массив столбец или строку, получаемый массив всегда будет иметь 2 измерения. Измерение 1 отвечает за строки, измерение 2 — за столбцы. То есть ячейка C5 будет в элементе arrTemp(5,3). Нижняя граница таких массивов всегда будет начинаться с единицы.
▲ вверх
Дополнительные источники
В качестве источника дополнительной информации по массивам я могу порекомендовать замечательный, исчерпывающий ресурс Чарльза Пирсона (Charles H. Pearson). Его сайт следует штудировать всем, кто серьёзно осваивает VBA. Конкретно по массивам там огромное количество готовых подпрограмм для работы с ними, исходные коды, снабженные подробнейшими комментариями, продвинутые объяснения для копающих в глубину. Без преувеличения великолепный ресурс!
▲ вверх
Читайте также:
-
Работа с объектом Range
-
Поиск границ текущей области
-
Структуры данных и их эффективность
-
Автоматическое скрытие/показ столбцов и строк
Терминология
Под массивом обычно понимают набор данных, объединенных в группу. Массивы бывают одномерные (элементы массива образуют строку или столбец) или двумерные (матрица). Легко сообразить, что почти в любой таблице 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 умножаются на ноль и суммируются только нужные заказы.
Ссылки по теме
- Формула массива для извлечения непустых ячеек из диапазона
- Формула массива для извлечения уникальных ячеек из диапазона
- Формула массива для извлечения данных из списка (многоразовый ВПР)
Содержание
- Виды массивов функций Excel
- Классика жанра – товарный чек
- Разрешите Вас… транспонировать?
- Функция СТРОКА
- Функция СТОЛБЕЦ
- Функция АДРЕС
- Функция ДВССЫЛ
- Функция ВЫБОР (CHOOSE)
- Функция ИНДЕКС (INDEX)
- Функция ПОИСКПОЗ (MATCH)
- Редактирование формулы массива
- Описание категории «Ссылки и массивы»
- ВПР
- Пример применения формулы массива
- ГПР
- Функции для работы со ссылками и массивами
- Функция ГПР
Массив – данные, объединенные в группу. В данном случае группой является массив функций в Excel. Любую таблицу, которую мы составим и заполним в Excel, можно назвать массивом. Пример:
В зависимости от расположения элементов различают массивы:
- одномерные (данные находятся в ОДНОЙ строке или в ОДНОМ столбце);
- двумерные (НЕСКОЛЬКО строк и столбцов, матрица).
Одномерные массивы бывают:
- горизонтальными (данные – в строке);
- вертикальными (данные – в столбце).
Примечание. Двумерные массивы Excel могут занимать сразу несколько листов (это сотни и тысячи данных).
Формула массива – позволяет обработать данные из этого массива. Она может возвращать одно значение либо давать в результате массив (набор) значений.
С помощью формул массива реально:
- подсчитать количество знаков в определенном диапазоне;
- суммировать только те числа, которые соответствуют заданному условию;
- суммировать все n-ные значения в определенном диапазоне.
Когда мы используем формулы массива, Excel видит диапазон значений не как отдельные ячейки, а как единый блок данных.
Классика жанра – товарный чек
Задача: рассчитать общую сумму заказа. Если идти классическим путем, то нужно будет добавить столбец, где перемножить цену и количество, а потом взять сумму по этому столбцу. Если же применить формулу массива, то все будет гораздо красивее:
- выделяем ячейку С7
- вводим с клавиатуры =СУММ(
- выделяем диапазон B2:B5
- вводим знак умножения (звездочка)
- выделяем диапазон C2:C5 и закрываем скобку функции СУММ – в итоге должно получиться так:
- чтобы Excel воспринял нашу формулу как формулу массива жмем не Enter, как обычно, а Ctrl + Shift + Enter
Вуаля!
Т.е. Excel произвел попарное умножение элементов массивов B2:B5 и C2:C5 и образовал новый массив стоимостей (в памяти компьютера), а затем сложил все элементы этого нового массива.
Обратите внимание на фигурные скобки, появившиеся в формуле – отличительный признак формулы массива. Вводить их вручную с клавиатуры бесполезно – они автоматически появляются при нажатии Ctrl + Shift + Enter.
Разрешите Вас… транспонировать?
При работе с таблицами часто возникает необходимость поменять местами строки и столбцы, т.е. развернуть таблицу на бок, чтобы данные, которые раньше шли по строке, теперь располагались в столбцах и наоборот. В математике такая операция называется транспонированием. При помощи формулы массива и функции ТРАНСП (TRANSPOSE) это делается на раз.
Допустим, имеем двумерный массив ячеек, который хотим транспонировать.
- Выделяем диапазон ячеек для размещения транспонированной таблицы. Поскольку исходный массив ячеек был 8 строк на 2 столбца, то надо выделить диапазон пустых ячеек размером 2 строки на 8 столбцов.
- вводим функцию транспонирования =ТРАНСП(
- в качестве аргумента функции выделяем наш массив ячеек A1:B8
жмем Ctrl + Shift + Enter и получаем “перевернутый массив” в качестве результата:
Функция СТРОКА
Определяет и возвращает номер строки указанной ссылкой ячейки.
Синтаксис: =СТРОКА([ссылка]), где аргумент «ссылка» не является обязательным. Если он опущен, но возвращается номер текущей строки.
Пример использования:
=СТРОКА(D4) – результат 4.
=СТРОКА() – функция вернет номер строки, в которой она расположена.
Функция СТОЛБЕЦ
Возвращает номер столбца ячейки, указанной ссылкой.
Синтаксис: =СТОЛБЕЦ([ссылка]), где «ссылка» не обязательный аргумент. По умолчанию возвращается номер текущего столбца.
Пример использования:
=СТОЛБЕЦ(C4) – формула вернет значение 3.
=СТОЛБЕЦ() – функция возвращает номер столбца, в котором расположена.
Функция АДРЕС
Возвращает текст, представляющий адрес ячейки, заданной номерами строки и столбца.
Синтаксис: =АДРЕС(строка; столбец; [тип_закрепления]; [стиль_ссылки]; [имя_листа]), где:
- Строка – обязательный аргумент. Число, представляющая номер строки, для которой необходимо вернуть адрес;
- Столбец – обязательный аргумент. Число, представляющее номер столбца целевой ячейки.
- тип_закрепления – необязательный аргумент. Число от 1 до 4, обозначающее закрепление индексов ссылки:
- 1 – значение по умолчанию, когда закреплены все индексы;
- 2 – закрепление индекса строки;
- 3 – закрепление индекса столбца;
- 4 – адрес без закреплений.
- стиль_ссылки – необязательный аргумент. Логическое значение:
- ИСТИНА – формат ссылок «A1»;
- ЛОЖЬ – формат ссылок «R1C1».
- имя_листа – необязательный аргумент. Строка, представляющая имя листа, который необходимо добавить к тексту адреса ячейки.
Пример использования:
=АДРЕС=АДРЕС=АДРЕС=АДРЕС
Функция ДВССЫЛ
Преобразует адрес ссылки, заданный текстовой строкой, в ссылку на данный адрес.
Синтаксис: =ДВССЫЛ(адрес_ссылки; [стиль_ссылки]), где
- адрес_ссылки – обязательный аргумент. Строка, представляющая адрес ссылки на ячейку или диапазон. Например, “C3”, “R3C3” или “D8:D9”.
- стиль_ссылки – необязательный аргумент. Логическое значение, определяющее стиль ссылки:
- ИСТИНА – стиль A1. Является значением по умолчанию;
- ЛОЖЬ – стиль R1C1.
Пример использования:
=ДВССЫЛ(“a3”) – возвращает ссылку на ячейку A3.
=ДВССЫЛ(“r3c3”) – вернет ошибку #ССЫЛКА!, так как текст для ссылки в формате R1C1, а второй аргумент имеет значение по умолчанию.
=ДВССЫЛ(“r3c3”; ЛОЖЬ) – возвращает ссылку на ячейку C3.
=ДВССЫЛ(АДРЕС(СТРОКА(C3);СТОЛБЕЦ(C3))) – функция вернет аналогичный предыдущему примеру результат.
Вложение функции ДВССЫЛ со ссылкой на диапазон:
Функция ВЫБОР (CHOOSE)
Позволит вам выбрать значение из общего списка по указанному номеру позиции:
=ВЫБОР(2;”Стул”;”Стол”;”Шкаф”;”Диван”)
Функция ИНДЕКС (INDEX)
Эта функция возвращает указанное значение из одно- или двумерного диапазона:
=ИНДЕКС(A1:C6;4;3)
Как видно с примера, полученное значение 37, в указанном диапазоне стоит на пересечении строки №4 и столбика №3 в диапазоне A1:C6 указанном в формуле. В более простом примере показано как в диапазоне С1:С6, на 2 месте находится значение 15:
=ИНДЕКС(С1:С6;2)
Функция ПОИСКПОЗ (MATCH)
Эта функция вернет позицию значения, которое вы будете искать в указанном диапазоне:
=ПОИСКПОЗ(B3;B2:B5;0)
С примера вы можете видеть что слово «Стол» занимает 2 позицию в указанном диапазоне. Замечу, что третий аргумент в функции не является обязательным. При введенном значении 0, функция вернет ту позицию элемента массива, которое точно совпадает со значением, которое мы ищем. В случае, когда точное совпадение отсутствует, функция выдаст ошибку #Н/Д (#N/A).
Редактирование формулы массива
Если формула массива расположена не в одной ячейке (как в Примере 1), а в нескольких ячейках (как в Примере 2), то Excel не позволит редактировать или удалить одну отдельно взятую формулу (например в ячейке D10) и выдаст предупреждающее сообщение Невозможно изменить часть массива.
Для редактирования формулы массива необходимо выделить весь диапазон (A10:H11 в нашем случае) и изменить формулу в строке формул (или нажав F2). Затем необходимо повторить ввод измененной формулы массива, нажав сочетание клавиш Ctrl + Shift + Enter.
Excel также не позволит свободно перемещать ячейки, входящие в формулу массива или добавлять новые строки-столбцы-ячейки в диапазон формулы массива (т.е. в диапазон A10:H11 в нашем случае)
Описание категории «Ссылки и массивы»
Категория функций «Ссылки и массивы», другое название категории «Функции просмотра» используются для поиска значений в списках или таблицах, манипулирования диапазоном данных, а также, для получения дополнительной информации, например, информации о количестве строк или столбцов диапазона.
Ярким представителем функций данной категории является самая популярная функция ВПР, которая позволяет найти значение из ячейки диапазона, выполнив поиск в первом столбце этого же диапазона
Принцип работы функции ВПР из категории «Ссылки и массивы»
ВПР
Функция ВПР (VLOOKUP) ищет значение в крайнем левом столбце таблицы и возвращает значение ячейки, находящейся в указанном столбце той же строки.
- Вставляем функцию ВПР:
=ВПР(A2;$E$4:$G$7;3;ЛОЖЬ)
=VLOOKUP(A2,$E$4:$G$7,3,FALSE)
Пояснение:
- Функция ВПР ищет значение ID (104) в крайнем левом столбце диапазона $E$4:$G$7 и возвращает значение из третьего столбца той же строки (так как третий аргумент функции имеет значение 3).
- Четвёртый аргумент функции равен ЛОЖЬ (FALSE) – это значит, что либо будет найдено точное совпадение, либо будет показано сообщение об ошибке #Н/Д (#N/A).
- Потащите мышью, чтобы скопировать функцию ВПР из ячейки B2 вниз по столбцу до ячейки B11.Пояснение: Когда мы копируем функцию ВПР вниз, абсолютная ссылка $E$4:$G$7 остаётся неизменной, в то время как относительная ссылка A2 изменяется на A3, A4, A5 и так далее.
Пример применения формулы массива
Наиболее простой задачей, которой можно проиллюстрировать мощь формулы массива, является простой товарный чек. То есть у нас есть наименование товаров, их количество и цена за единицу. На выходе мы должны получить общую сумму покупки.
Как бы мы решали данную задачу стандартным образом?
Во-первых, мы бы получили итоговую сумму по каждому товару, перемножив количество товара на его цену.
Ну а затем просуммировали бы получение суммы, для получения итоговой. То есть нам бы потребовался дополнительный столбец для промежуточных вычислений.
Ту же самую задачу можно решить с помощью простейшей формулы массива.
Нам нужно получить сумму, поэтому воспользуемся соответствующей функцией СУММ. А вот суммировать мы должны произведение цены товара на его количество, что мы и сделаем – выбираем диапазон значений из столица B и умножаем его на аналогичный диапазон значений столбца C.
Если сейчас нажать Enter, то появится ошибка.
Так как мы в формуле использовали диапазоны (массивы) данных, то и формула должна быть формулой массива. Для этого нужно нажать сочетание клавиш Ctrl + Shift + Enter и получим результат.
Что произошло и как работает формула массива? Это важно понять, так как в дальнейшем можно будет применять формулы массива для решения намного более заковыристых задач…
Итак, при вычислении формулы массива Excel произвел попарное умножение значений диапазонов B2:B5 и C2:C5. В результате получился массив значений который был просуммирован соответствующей функцией. Мы получили только одно значение итоговой суммы без вспомогательных вычислений.
Обратите внимание на формулу в строке формул. Она заключена в фигурные скобки, которые указывают нам, что мы имеем дело с формулой массива.
Это не текстовые скобки, то есть нельзя их ввести с клавиатуры, чтобы сделать формулу формулой массива. Они появляются автоматически при нажатии сочетания клавиш Ctrl + Shift + Enter. Если после создания формулы массива вам необходимо ее отредактировать, то в конце необходимо вновь нажать сочетание клавиш, а не просто клавишу Enter.
ГПР
Похожим образом работает и функция ГПР (HLOOKUP):
Функции для работы со ссылками и массивами
В Excel имеется ряд функций для обработки ссылок и массивов: вычисление номеров строки или столбца таблицы по имени ссылки, определение количества столбцов (строк) ссылки или массива, выбор значения по номеру индекса и т. д.
Таблица 4.10. Функции для работы со ссылками и массивами.
АДРЕС | Создает адрес ячейки в виде текста, используя номер строки и номер столбца. |
ВПР | Просматривает левый столбец массива в поисках определенного значения и возвращает значение из указанной ячейки. |
ВЫБОР | Использует номер индекса, чтобы выбрать и вернуть значение из списка аргументов-значений. |
ГИПЕРССЫЛКА | Создание ссылки, открывающей документ, находящийся на жестком диске, сервере сети или Internet. |
ГПР | Просматривает верхнюю строку массива в поисках определенного значения и возвращает значение из указанной ячейки. |
двссыл | Возвращает ссылку, заданную аргументом ссылка на ячейку. |
ИНДЕКС | Выбирает по индексу значение из ссылки или массива. |
ОБЛАСТИ | Возвращает количество областей в ссылке. Область – это интервал смежных ячеек или отдельная ячейка. |
ПОИСКПОЗ | Возвращает относительную позицию элемента массива. |
ПОЛУЧИТЬ.ДАННЫЕ. СВОДНОЙ.ТАБЛИЦЫ | Получение данных сводной таблицы |
ПРОСМОТР | Ищет значения в векторе или массиве. |
СМЕЩ | Возвращает ссылку заданной высоты и ширины, отстоящую от другой ссылки на заданное количество строки и столбцов. |
СТОЛБЕЦ | Возвращает номер столбца по заданной ссылке. |
СТРОКА | Возвращает номер строки, определяемой ссылкой. |
ТРАНШ | Возвращает транспонированный массив. |
ЧИСЛСТОЛБ | Возвращает количество столбцов в ссылке или массиве. |
ЧСТРОК | Возвращает количество строк в ссылке или массиве. |
Функция ГПР
Горизонтальное первое равенство. Ищет совпадение по ключу в первой строке определенного диапазона и возвращает значение из указанной строки этого диапазона в совпавшем с ключом столбце.
Синтаксис: =ГПР(ключ; диапазон; номер_строки; [интервальный_просмотр]).
Так как функция аналогична функции ВПР, за исключением того, что использует горизонтальные таблицы вместо вертикальных, то описания и примеры использования подходят и для ГПР с учетом упомянутых различий.
Источники
- https://exceltable.com/master-klass/massivy-funktciy-excel
- https://www.planetaexcel.ru/techniques/2/91/
- https://office-menu.ru/uroki-excel/13-uverennoe-ispolzovanie-excel/45-funktsii-ssylok-i-massivov-excel
- https://topexcel.ru/5-osnovnyx-funkcii-dlya-raboty-s-massivami/
- https://msoffice-prowork.com/ref/excel/excelfunc/lookup-reference/
- https://office-guru.ru/excel/funkcii-excel-dlja-raboty-so-ssylkami-i-massivami-515.html
- https://zen.yandex.ru/media/id/5c4d8a530aaeef00ac928ac3/5cb46bff23aed400b46a0c52
- http://samoychiteli.ru/document37861.html