Анализ большого массива данных в excel

Содержание

MS Excel

27 сентября, 2017

Евгений Довженко о том, как можно эффективно работать даже с огромными массивами данных.

photo59cbb1a7bff02.jpg

Любой сотрудник компании, работающий в отделе продаж, финансов, маркетинга, логистики, сталкивается с необходимостью работать с данными, анализировать их.

Евгений Довженко о том, как можно эффективно работать даже с огромными массивами данных. 0

Excel — незаменимый помощник для достижения этих целей. Мы импортируем информацию, «подтягиваем» ее, систематизируем. На ее основе строим диаграммы, сводные таблицы, планируем, прогнозируем.

Однако в Excel до недавнего времени было 2 важных ограничения:

иконка 1

Мы не могли разместить на рабочем листе Excel более миллиона строк (а наши данные о продажах за 2 года занимают, например, 10 млн строк).

иконка 2

Мы знали, как создать и настроить интерактивные и обновляемые отчеты, но это отнимало много времени.

Единственный инструмент в Excel — сводные таблицы — позволял быстро обрабатывать наши данные.

С другой стороны, есть категория пользователей, которые работают со сложными BI-системами. Это системы бизнес-аналитики (business intelligence), которые дают возможность быстро визуализировать, «крутить» данные и извлекать из них ценную информацию (data mining). Однако внедрение и поддержка таких систем требует значительного участия IT-специалистов и больших финансовых вложений.

До Excel 2010 было четкое разделение на анализ малого и большого объема данных: Excel с одной стороны и сложные BI-системы — с другой.

Начиная с версии 2010, в Excel добавили инструменты, в названиях которых присутствует слово power: Power Query, Power Pivot и Power View. Они позволили сгладить грань между пользователями Excel и комплексных BI-систем.

Power Query

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

Для этого и необходим Power Query. До версии Excel 2013 включительно этот инструмент был в виде надстройки, которую можно было установить бесплатно с сайта Microsoft.

В версии 2016 это уже встроенный в программу инструментарий, находящийся на вкладке «Данные» (Data) в разделе «Скачать и преобразовать» (Get and Transform).

Перечень источников информации, к которым можно подключаться — огромный: от баз данных (их в последней версии 10) до Facebook и Google таблиц (рис. 1).

Евгений Довженко о том, как можно эффективно работать даже с огромными массивами данных. 1

Рис 1. Выбор источника данных в Power Query

Вот некоторые возможности Power Query по подготовке и преобразованию данных:

иконка 1

отбор строк и столбцов, создание пользовательских (вычисляемых) столбцов

иконка 2

преобразование данных с помощью числовых, текстовых функций, функций даты и времени

иконка 3

транспонирование таблицы, разворачивание по столбцам (Pivot) и наоборот — сворачивание данных, организованных по столбцам, в построчный вид (Unpivot)

иконка 4

объединение нескольких таблиц: как вниз — одну под другую, так и связывание по общей колонке (единому ключу)

Евгений Довженко о том, как можно эффективно работать даже с огромными массивами данных. 2

Рис 2. Окно редактора Power Query

Ну и конечно, после выгрузки подготовленных данных в Excel они будут автоматически обновляться, если в источнике данных появятся новые строки.

Пример

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

Таблица на сайте непригодна для прямого использования (рисунок 2-1):    

иконка 1

все валюты не нужны

иконка 2

в колонке «Курс» в качестве разделителя целой и дробной частей используется точка (в наших региональных настройках — запятая)

иконка 3

в колонке «Курс» отображается показатель за разное количество единиц валюты: за 100, за 1000 и т. д. (указано в отдельной колонке «Количество единиц»)

Евгений Довженко о том, как можно эффективно работать даже с огромными массивами данных. 3

Рис. 2-1. Так выглядит таблица с курсами валют на сайте Нацбанка.

С помощью Power Query мы подключаемся к таблице текущих курсов валют на сайте НБУ и в этом редакторе готовим запрос на извлечение данных:

иконка 1

В колонке «Курс» меняем точку на запятую (инструмент «Замена значений»).

иконка 2

Создаем вычисляемый столбец, в котором курсы валют в колонке «Курс» делятся на количество единиц валюты из колонки «Количество единиц».

иконка 3

Удаляем лишние столбцы и оставляем только строки валют, с которыми работаем.

иконка 4

Выгружаем полученную таблицу на рабочий лист Excel.

Результат показан на рисунке 2-2.

Евгений Довженко о том, как можно эффективно работать даже с огромными массивами данных. 4

Рис. 2-2. Так выглядит результирующая таблица в нашем Excel файле.

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

Power Pivot

У вас данные находятся в разрозненных источниках? Некоторые таблицы содержат больше 1 млн строк? Вам нужно все это объединить в одну модель данных и анализировать с помощью, например, сводной таблицы Excel? Здесь понадобится Power Pivot — надстройка Excel, которая по умолчанию включена в версии Pro Plus и выше (начиная с версии 2010).

В Power Pivot вы можете добавлять данные из разных источников, связывать таблицы между собой (рисунок 3). Таблицы при этом не обязательно должны находиться на рабочих листах Excel. Вместо этого они по-прежнему будут храниться в файле Excel, но просматривать их можно в окне Power Pivot (рис. 4). Поэтому нет ограничения на количество строк — в вашем файле Excel могут находиться таблицы и в сотни миллионов строк.

Евгений Довженко о том, как можно эффективно работать даже с огромными массивами данных. 5

Рис. 3. Окно Power Pivot в представлении диаграммы

Евгений Довженко о том, как можно эффективно работать даже с огромными массивами данных. 6

Рис. 4. Окно Power Pivot в представлении данных

Вот некоторые возможности Power Pivot, помимо описанных выше:

иконка 1

добавлять вычисляемые столбцы и поля (меры), в том числе основанные на расчетах из нескольких таблиц

иконка 2

создавать и мониторить в сводной таблице ключевые показатели эффективности (KPI)

иконка 3

создавать иерархические структуры (например, по географическому признаку — регион, область, город, район)

И обрабатывать все это с помощью сводной таблицы Excel, построенной на модели данных.

Пример. У предприятия в базе данных (или отдельных файлах Excel) в 5 таблицах хранится информация о продажах, клиентах, товаре и его классификации, менеджерах по продажам и закупочных ценах продукции. Необходимо провести анализ по объемам продаж и маржинальности по менеджерам.

С помощью Power Pivot:

иконка 1

добавляем все 5 таблиц в модель данных

иконка 2

связываем таблицы по общим ключам (столбцам)

иконка 3

в таблице «Продажи» создаем вычисляемый столбец «Продажи в закупочных ценах», умножив количество штук из таблицы «Продажи» на закупочную цену из таблицы «Цена закупки»

иконка 4

создаем вычисляемое поле (меру) «Маржа»

иконка 5

с помощью инструмента «Ключевые показатели эффективности» устанавливаем цель по маржинальности и настраиваем визуализацию — как выполнение цели будет визуализироваться в сводной таблице

Теперь можно «крутить» эти данные в сводной таблице или в отчете Power View (следующий инструмент) и анализировать маржинальность по товарам, менеджерам, регионам, клиентам.

Power View

Иногда сводная таблица — не лучший вариант визуализации данных. В таком случае можно создавать отчеты Power View. Как и Power Pivot, Power View — это надстройка Excel, которая по умолчанию включена в версии Pro Plus и выше (начиная с версии 2010).

В отличие от сводной таблицы, в отчет Power View можно добавлять диаграммы и другие визуальные объекты. Здесь нет такого количества настроек, как в диаграммах Excel. Но в том то и сила инструмента — мы не тратим время на настройку, а быстро создаем отчет, визуализирующий данные в определенном разрезе.

Вот некоторые возможности Power View:

иконка 1

— быстро добавлять в отчет таблицы, диаграммы (без необходимости настройки)

иконка 2

организовывать срезы и фильтры

иконка 3

уходить на разные уровни детализации данных

иконка 4

добавлять карты и располагать на них данные

иконка 5

создавать анимированные диаграммы

Пример отчета Power View — на рисунке 5.

Евгений Довженко о том, как можно эффективно работать даже с огромными массивами данных. 7

Рис. 5. Пример отчета Power View

Даже самые внушительные массивы данных можно систематизировать и визуализировать — главное не ограничиваться поверхностными возможностями Excel, а брать из его функций все возможное.

Хотите получать дайджест статей?

Одно письмо с лучшими материалами за неделю. Подписывайтесь, чтобы ничего не упустить.

Спасибо за подписку!

Курс по теме:

«Advanced Excel»

Программы


Ведет
Никита
Свидло

Shell

16 мая
13 июня

Никита Свидло

Excel открывает большие возможности в обработке массива цифр и строк. Сегодня мы разберем, как в excel обработать большой объем данных. В этой части мы не будем разбирать макросы. Цель этой статьи — научиться работать с самыми доступными и простыми формулами excel, которые помогут выполнить нашу работу в большинстве случаев.

Статья будет разделена на 2 части. Содержание первой части, представлена ниже. Начнем без теории. Вряд ли она вам интересна.

Содержание:

  • Как в excel найти повторяющееся значение
  • Как в excel быстро удалить дублирующиеся строки
  • Работа со сводной таблицей в excel
  • Как в excel «подтянуть» данные из другого листа или файла
  • Что такое функции правсимв и левсимв и как их применять

Как в excel найти повторяющееся значение

В своде данных мы можем столкнуться с проблемой, когда нам нужно из большого количества строк быстро найти повторяющиеся строки. Ведь в одной строке может быть одно значение, а во второй, по такому же наименованию товара, дубль или другое значение.

Возьмем таблицу. В столбец Е ставим равно и затем, в поиске «Другие функции» ищем нужную нам формулу (см. рис 1)

kak-v-excel-obrabotat-bolshoj-obem-dannyh

Рис 1. Поиск формулы

Для поиска повторяющегося значения, в данном случае, в коде товара по столбцу А, мы будем пользоваться простой формулой  = СЧЕТЕСЛИ

kak-v-excel-obrabotat-bolshoj-obem-dannyh

Рис 2 . Формула СЧЕТЕСЛИ

Выделяем весь столбец «А», и в диапазоне аргументов функций ( маленькое голубое окошко посреди экрана), у нас появляется А:А, то есть весь выделенный диапазон по этому столбцу. см. рис 3.

kak-v-excel-obrabotat-bolshoj-obem-dannyh

Рис 3.

Переходим в окно «критерий», и выделяем только первую строку по коду товара. У нас она отразится, как А2. см. рис. 3.

kak-v-excel-obrabotat-bolshoj-obem-dannyh

Рис 4

Далее, нажимаем «ок», и в столбце «Е» появляется цифра 1. Это значит, что по товару 100101200 Молоко Вологодское 1% жирности, только один такой товар, нет дублей. См. рис 5.

Рис 5.

«Протягиваем» значения по столбцу «Е» вниз, и мы получаем результат, а именно, какие товары у нас имеют дубль в нашем списке, см рис 6. У нас проявилось 2 одинаковых товара, (их excel обозначил цифрой 2), которые, для наглядности вручную выделил желтым.

kak-v-excel-obrabotat-bolshoj-obem-dannyh

рис 6. Результат поиска повторяющихся кодов товара

Если бы у нас было три одинаковых товара в списке, то excel, соответственно, проставил цифру 3. И так далее. Уже через простой фильтр, можно выделить, все, что больше 1 и увидеть полную картину.

Как в excel удалить дублирующиеся строки

По сути, метод, указанный выше, уже выполняет наш запрос. Однако, если Вам не нужны данные с повторяющихся строк, а требуется просто их удалить, тогда есть наиболее простой способ быстрого удаления дублей.

Мы воспользуемся функцией, которая уже встроена в панель excel. См. на панели закладку » ДАННЫЕ». Наша функция так и называется «Удалить дубликаты».

Мы выделяем область поиска, у нас это вновь столбец А. См рис 7.

(В более поздней версии excel, можно все находить через поисковое окно.)

kak-v-excel-obrabotat-bolshoj-obem-dannyh

Рис 7. Удалить дубликаты

Далее нам просто нужно подтвердить удаление. Однако, для наглядности, выделил зеленым те задвоенные строки, которые у нас есть. Это строка 7 и 21. См рис 8.

Рис 8

Теперь на панели жмем кнопку «удалить дубликаты». У нас появляется окошко. Здесь нам автоматически предлагает удалить всю горизонтальную строку, то есть «автоматически расширить выделенный диапазон». Жмем на кнопку «удалить дубликаты». См рис 9

kak-v-excel-obrabotat-bolshoj-obem-dannyh

Рис 9

После этого мы видим, что указаны столбцы отмеченные галочками, которые будут удалены по дублирующейся горизонтальной строке. См. рис 10. Мы жмем «ок».

kak-v-excel-obrabotat-bolshoj-obem-dannyh

Рис 10

Все. Теперь мы видим окно с оповещением, что дубль в количестве 1 строки был удален. Теперь, на месте 21-ой строки по товару-дублю, появился следующий товар из нижнего списка. См. рис 11.

kak-v-excel-obrabotat-bolshoj-obem-dannyh

Рис 11

Исходя из описания, может показаться, что по времени занимает не меньше, чем в первом варианте, но на самом деле это не так. Я просто эту функцию расписал очень подробно.

Как в excel обработать большой объем данных, сводная таблица

Сводная таблица служит для объединения разрозненной информации воедино. Сегодня мы также научимся это делать. Здесь нет ничего сложного. К примеру нам требуется, сколько же у нас есть одного и того же товара, не по брендам, а по виду товара.

Смотрим нашу таблицу. В панели инструментов ищем закладку «ВСТАВКА». Под панелью инструментов, в верхнем левом углу, появляется иконка, которая так и называется «Сводная таблица». см. рис 12.  (Или ищем ее в поиске новой версии excel)

Мы выделяем все столбцы или столбцы интересующих нас значений.

kak-v-excel-obrabotat-bolshoj-obem-dannyh

рис 12.

Затем нажимаем на иконку «сводная таблица». У нас выходит окошко, в котором выделен диапазон столбцов. По умолчанию, excel предлагает сводную таблицу вынести на новый лист.  см. рис 13. Мы так и делаем.

kak-v-excel-obrabotat-bolshoj-obem-dannyh

рис 13

Подтверждаем команду нажав кнопку «ок». Получаем на новом листе нашей страницы excel возможность построения сводной таблицы, см рис 14.

рис 14

Теперь мы выбираем нужные нам значения из правого верхнего участка. Раз мы договорились, что нам нужно знать сколько у нас товара по одному наименованию, то выбираем галкой наименование товара. См. рис 15.

рис 15

По аналогии, мы ставим галку напротив количества (остатки в шт, склад 1).

При этом, перемещаем данные с количеством не в окно «название строк», а в окно «Значения». см. рис 16

Здесь мы видим, что у нас появился дополнительный столбец, но пока не по количеству штук каждого товара, а по количеству строк. Далее мы делаем следующую операцию.

рис 16

Правой клавишей мыши нажимаем на столбец с количеством. См. рис 17. У нас открывается окно, где в строке ИТОГИ ПО, мы ставим галку не по количеству (строк), как на картинке, а по сумме.

рис 17

Теперь мы получаем именно сведенное количество по каждому товару. См рис 18.

рис 18. Свод товаров по количеству

Для сравнения и наглядности, возвращаемся в исходный лист, (см. рис 19) и  мы видим:

одинаковые товары по наименованию, помеченные синим цветом 3+3 = 6 штук.

одинаковые товары, помеченные зеленым 5+56 = 61 штука.

Тоже самое у нас в сводной таблице ( рис 18), 6 и 61 штука.

рис 19

В сводную таблицу можно добавить поставщика и так далее. Можно ее сделать более сложной в плане количества учитываемый столбцов. Это уже дело необходимости и практики. Один-два раза сделаете, поймете суть. Потом, навык, как в excel обработать большой объем данных на уровне сводной таблицы, уже никогда не забудете.

Как в excel подтянуть данные из одного диапазона в другой, с помощью функции ВПР

Будет логичным, если сразу же покажу, как в excel «подтянуть» данные из другого листа или файла, в другой. Для этого есть замечательная функция ВПР. Мы разберем, как пользоваться этим на уже знакомых нам данных.

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

Сразу оговорюсь по наименованию или текстовому значению, функция ВПР бескомпромиссна.

Если в наименовании товара есть пробел или точка, (любое отклонение) то для нее это будет уже другое значение.

Также необходимо, что бы все источники были в одном формате. Если мы говорим о числах, то в числовом формате.

Итак, у нас есть исходный файл, на листе 1, (см. рис 20)

рис 20

Из листа 2, (рис 21) мы будем подтягивать цифры в лист 1. Обратите внимание, что количества на листах разное. Строки также могут быть смещены в списке или перемешаны, поэтому, простым сложением одной цифры с другой нам не обойтись.

рис 21

Для нас данные на листе 1 те, к которым нужно подтянуть другие значения. Также действуем через знак равно «=». В левом верхнем углу, через поиск других функций, находим ВПР, см рис 22.

kak-v-excel-obrabotat-bolshoj-obem-dannyh

рис 22

Затем, у нас открывается окно и мы выделяем весь столбец А, то есть искомое значение. Оно в новом окне выделяется, как А:А, см рис 23.

рис 23

Далее, мышкой переходим в самом окошке на вторую строку «таблица», только после этого переходим на лист 2 нашего файла.

рис 24

И от столбца «А» выделяем и протягиваем к столбцу с количеством. В данном случае, к  столбцу «D», см рис 25.

рис 25

Столбец D, это четвертый столбец начиная с искомого значения, то есть с кода товара в столбце А.

Поэтому, мы ставим в третьем поле окошка «номер столбца» цифру 4. и в поле «интервальный просмотр» всего ноль. В итоге у нас получается заполненное окошко, см рис 26.

рис 26

Нажимаем «ок», и получаем подтянутую цифру со второго листа, по коду товара 100101200. см. рис 27.

рис 27

Протягиваем значение вниз, столбец D заполняется цифрами с листа 2. см. рис 28. Здесь нам остается просто сложить одни цифры с другими простой формулой сложения и протянуть вниз.

kak-v-excel-obrabotat-bolshoj-obem-dannyh

рис 28

Таким образом, мы можем подтянуть значение из большого массива данных, которое вручную искать долго и не целесообразно, если есть функция ВПР.

Важный момент. Если Вы подтягиваете из другого файла, то файлы должны быть сохранены. И еще. Формулы подтянутых значений остаются. Вам нужна цифры привести в значения или не удалять и не менять значения, которые Вы подтягивали.

Как в excel обработать большой объем данных, функция правсимв и левсимв

Бывает, что необходимо для работы с функцией ВПР, привести искомые значения, и значение которые мы подтягиваем в единую форму. Как мы говорили выше, для ВПР любое отклонение, даже пробел, это уже другое значение.

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

Итак,, нам нужно взять только часть от полного наименования. Смотрим наш рис 29, к примеру, нам нужно только слово «молоко». Мы также в окне поиска формул ищем = левсимв.

рис 29

У нас появляется окошко, см рис 30.

рис 30

Мы выделяем интересующий нас столбец «В», в строке «текст» он появляется как В:В, см рис 31.

рис 31

Далее, в строку «количество знаков» мы ставим ту цифру, сколько букв или символов содержит слово или слова с пробелом начиная с левой стороны. Если нам нужно только слово «молоко», то в нем, с учетом пробела 7 букв, поэтому, ставим цифру 7. См. рис 32.

рис 32

Вот и обрезалось наше наименование только в нужное нам слово, см. рис 33.

рис 33

Теперь остается только «протянуть» вниз, и все значения с первыми 7-ю символами с левой стороны, будут в нашей таблице., см рис 34.

рис 34

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

Заключение

Я отдельно сделал статью, как в excel вести учет и планирование товарных запасов. Ели интересно, статью можно почитать здесь.

Чтобы не утяжелять прочтение, разделю материал на две части. В следующей части пойдет речь о том, как в excel обработать большой объем данных с помощью функции СЦЕПИТЬ, построения графиков и диаграмм. Как автоматически подсветить значения верхнего или нижнего порога, и как седлать пароль на страницу или всю книгу в excel, и так далее.

Надеюсь материал был полезным, всего Вам хорошего. Успехов!

Время на прочтение
3 мин

Количество просмотров 4.7K

Всем привет! Меня зовут Сергей Коньков — я работаю архитектором в компании CloudReports. Сегодня я расскажу, как мы создали продукт, который помогает пользователям работать с данными и в какой-то мере соединяет два мира аналитики: Excel и облачные хранилища данных.

Задача

BigQuery и другие аналитические хранилища в сочетании с современными BI инструментами перевернули работу с данными за последние годы. Возможность обрабатывать терабайты информации за секунды, интерактивные дашборды в DataStudio и PowerBI, сделали работу очень комфортной.

Однако если посмотреть глубже, можно увидеть — выиграли от этих изменений в основном профессионалы, владеющие SQL и Python и бизнес пользователи на руководящих позициях, для которых разрабатываются дашборды.
А как быть с сотнями миллионов сотрудников, для которых главным инструментом анализа был и остается Microsoft Excel? Они в каком-то смысле, остались за бортом новых изменений. Это менеджеры по продажам, владельцы малого бизнеса, руководители небольших отделов. Освоить PowerBI у них нет времени. Все что им остается это экспортировать данные из отчетов в свой любимый Excel и продолжить работу там, но это не очень удобно, занимает время и есть ограничения по объему данных.

Мы часто наблюдаем, как наши клиенты использующих Google BigQuery загружают данные в Excel с помощью различных коннекторов, натыкаясь на ограничения. И родилась идея: если Excel не теряет популярности, а данные уходят в облака, то давайте придумаем способ как помочь пользователю работать из Excel с облаком.

Вспоминаем OLAP

Да, сегодня Excel по-прежнему самый популярный инструмент для работы с информацией в мире. А Сводная таблица, это то что используют миллионы пользователей каждый день. А раньше было еще больше. Если вы работали с данными в крупной компании десять лет назад вы наверняка слышали про технологию OLAP кубов от Microsoft и других вендоров, которые создаются поверх реляционных SQL баз, и позволяют получать результаты обработки миллионов строк данных за секунды. Самым популярным способом работы с OLAP кубами была и есть сводная таблица Excel. К слову OLAP по прежнему очень распространен в корпоративном мире, это все так же часть Microsoft SQL Server, однако имеет ряд ограничений по объемам и скорости обработки и все больше уступает рынок облачным аналитическим хранилищам.

Так вот в решении этой задачи нам поможет OLAP. Как я уже писал выше в Excel есть готовый клиент для работы с OLAP, мы будем использовать его.

Kогда Microsoft выводил на рынок данную технологию был опубликован открытый протокол для работы с OLAP базами — XMLA (XML для аналитики). Именно этот протокол и использует Excel когда подключается к OLAP серверу. Все работает примерно так:

Решение

Идея проста — вместо OLAP сервера мы сделаем Python приложение , которое будет делать следующее:

  • принимать XMLA запросы от Excel

  • конвертировать логику XMLA запроса в SQL код

  • отправлять SQL запрос в BigQiery

  • полученный от BigQuery ответ конвертировать в XMLA и отправлять обратно в Excel

Данное приложение (App) можем опубликовать в облаке, так как Excel имеет возможность отправлять запросы XMLA запросы по протоколу HTTPS. Все будет работать примерно так:

Использование

После того как мы разработали и опубликовали приложение, администратору BigQuery для начала использования достаточно просто создать таблицу и определить для соответсnвующих полей типы агрегации (сумма, минимум, максимум и т.д.). Далее пользователь в Excel используя подключение к службам аналитики (OLAP) соединяется с нашим сервисом:

После этого мы получаем доступ к таблице BigQuery непосредственно из сводной таблицы. И можем легко «играть» с данными.

Кроме того, мы реализовали в данном сервисе слой кэширования данных для ускорения запросов и экономии затрат на BigQuery.

Что дальше

Сейчас мы активно тестируем сервис на своих клиентах и думаем над добавлением нового функционала.

Например, SQL запросы наряду с BigQuery поддерживают и другие облачные хранилища данных. Добавив один класс в наше приложение мы реализовали аналогичный механизм для ClickHouse. Скоро будет готова версия для Snowflake и Amazon Redshift.

Будем рады услышать вопросы и мнение коллег в комментариях.

Содержание
Описание примеров
Применение метода
Суммирование по одному ключевому полю
Суммирование по нескольким критериям
Поиск по одному критерию
Поиск по нескольким критериям
Выборка по одному критерию
Выборка вариантов
Заключение

Одним из самых популярных методов использования электронных таблиц является обработка данных, полученных из учетных систем. Современные базы данных, используемые учетными системами в качестве хранилища информации, способны накапливать и обрабатывать в собственных структурах десятки, а иногда сотни тысяч информационных записей в день. Средства анализа в системах управления базами данных реализуются либо на программном уровне, либо через специальные интерфейсы и языки запросов. Электронные таблицы позволяют эффективно обработать данные без знания языков программирования и других технических средств.

Методы переноса данных в Excel могут быть различны:

  • Копирование-вставка результатов запросов
  • Использование стандартных процедур импорта (например, Microsoft Query) для формирования данных на рабочих листах
  • Использование программных средств для доступа к базам данных с последующим переносом информации в диапазоны ячеек
  • Непосредственный доступ к данным без копирования информации на рабочие листы
  • Подключение к OLAP-кубам

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

Обработка этих данных в Excel может вестись различными методами. Выделим основные способы работы:

  1. Обработка данных стандартными средствами интерфейса Excel
  2. Анализ данных при помощи сводных таблиц и диаграмм
  3. Консолидация данных при помощи формул рабочего листа
  4. Выборка данных и заполнение шаблонов для получения отчета
  5. Программная обработка данных

Правильность выбора способа работы с данными зависит от конкретной задачи. У каждого метода есть свои преимущества и недостатки.

В данной статье будут рассмотрены способы консолидации и выборки данных при помощи стандартных формул Excel. 

Описание примеров

Примеры к статье построены на основе демонстрационной базы данных, которую можно скачать с сайта Microsoft

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=19704

Выгруженный из этой базы данных набор записей сформирован при помощи Microsoft Query.

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

Файл nwdata_sums.xls используется для версий Excel 2000-2003

Файл nwdata_sums.xlsx имеет некоторые отличия и используется для версий Excel 2007-2010.

Первый лист data содержит исходные данные, остальные – примеры различных формул для обработки информации.

Ячейки, окрашенные в серый цвет, содержат служебные формулы. Ячейки желтого цвета содержат ключевые значения, которые могут быть изменены.

Применение метода

Очевидно, самым простым и удобным методом обработки больших объемов данных с точки зрения пользователя являются сводные таблицы. Этот интерфейс специально создавался для подобного рода задач, способен работать с различными источниками данных, поддерживает интерфейсные методы фильтрации, группировки, сортировки, а также автоматической агрегации данных различными способами.

Проблема при консолидации данных при помощи сводных таблиц появляются, если предполагается дальнейшая работа с этими агрегированными данными. Например, сравнить или дополнить данные из двух разных сводных таблиц (как вариант: объемы продаж и прайс листы). В таком случае обычно прибегают к методу копирования значений из сводных таблиц в промежуточные диапазоны с дальнейшим применением формул поиска (VLOOKUP/HLOOKUP). Очевидно, что проблема возникает при обновлении исходных данных (например, при добавлении новых строк) – требуется заново копировать результаты консолидации из сводной таблицы. Другим, с нашей точки зрения, не совсем корректным методом решения является применение функций поиска непосредственно к диапазонам, которые занимают сводные таблицы. Это может привести к неверному поиску при обновлении не только данных, но и внешнего вида сводной таблицы.

Еще один классический пример непригодности применения сводной таблицы – это требование формирования отчета в заранее предопределенном виде («начальство требует в такой форме и никак иначе»). Возможностей настройки сводной таблицы зачастую недостаточно для предоставления произвольной формы. В данном случае пользователи также обычно используют копирование результатов агрегирования в качестве значений.

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

Суммирование по одному ключевому полю

Таблицы с формулами на листе SUM показывают вариант решения задачи консолидации данных по одному ключевому значению.

Две верхние таблицы на листе демонстрируют возможности стандартной функции SUMIF, которая как раз и предназначена для суммирования с проверкой одного критерия.

SUM!B5

=SUMIF(data!$H:$H;A5;data!$M:$M) 

SUM!B11

=SUMIF(data!$Z:$Z;A11;data!$M:$M) 

Нижние таблицы показывают возможности другой редко используемой функции DSUM

SUM!B19

=DSUM(data!$A$1:$AJ$2156;"Quantity";D18:D19) 

Первый параметр определяет рабочий диапазон данных. Причем верхняя строка диапазона должна содержать заголовки полей. Второй параметр указывает наименование поля (столбца) для суммирования. Третий параметр ссылается на диапазон условий суммирования. Этот диапазон должен состоять как минимум из двух строк, верхняя строка – поле критерия, вторая и последующие — условия.

В другом варианте указания условий именем поля в этом диапазоне можно пренебречь, задав его прямо в тексте условия:

SUM!B28

=DSUM(data!$A$1:$AJ$2156;"Quantity";D27:D28)

SUM!D28

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

В принципе, функции типа DSUM являются устаревшим методом работы с данными, в подавляющем большинстве случаев лучше использовать SUMIF, SUMPRODUCT или формулы обработки массивов. Но иногда их применение может дать хороший результат, например, при совместном использовании с интерфейсной возможностью «расширенный фильтр» – в обоих случаях используется одинаковое описание условий через дополнительные диапазоны.

Суммирование по нескольким критериям

Таблицы с формулами на листе SUM2 показывают вариант суммирования по нескольким критериям.

Первый вариант решения использует дополнительно подготовленный столбец обработанных исходных данных. В реальных задачах логичнее добавлять такой столбец с формулами непосредственно на лист данных.

SUM!D5

=SUMIF(A:A;B5 & ";" & C5;data!M:M) 

Операция «&» используется для соединения строк. Можно также вместо этого оператора использовать функцию CONCATENATE. Промежуточный символ «;» (или любой другой служебный символ) необходим для обеспечения уникальности сцепленных строковых значений.

Пример: Есть, если два поля с перечнем слов. Пары слов «СТОЛ»-«ОСЬ» и «СТО»-«ЛОСЬ» дают одинаковый ключ «СТОЛОСЬ». Что соответственно даст неверный результат при консолидации данных. При использовании служебного символа комбинации ключей будут уникальны «СТОЛ;ОСЬ» и «СТО;ЛОСЬ», что обеспечит корректность вычислений.

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

Второй пример – это популярный вариант использования функции SUMPRODUCT с проверкой условий в виде логического выражения:

SUM!D13

=SUMPRODUCT((data!$H$2:$H$3000=B13)*(data!$Z$2:$Z$3000=C13)*data!$M$2:$M$3000) 

Обрабатываются все ячейки диапазона (data!$M$2:$M$3000), но для тех ячеек, где условия не выполняются, в суммирование попадает нулевое значение (логическая константа FALSE приводится к числу «0»). Такое использование этой функции близко по смыслу к формулам обработки массива, но не требует ввода через Ctrl+Shift+Enter.

Третий пример аналогичен, описанному использованию функций DSUM для листа SUM, но в нем для диапазона условий использовано несколько полей.

SUM!D21

=DSUM(data!$A$1:$AJ$2156;"Quantity";F20:G21) 

Четвертый пример – это использование функций обработки массивов.

SUM!D32

{=SUM(IF(data!$H$2:$H$3000=B32;IF(data!$Z$2:$Z$3000=C32;data!$M$2:$M$3000)))} 

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

Пятый пример содержится только в файле формата Excel 2007 (xlsx). Он показывает возможности новой стандартной функции

SUMIFS

SUM!D40

=SUMIFS(data!$M$2:$M$3000;data!$H$2:$H$3000;B40;data!$Z$2:$Z$3000;C40) 

Поиск по одному критерию

Таблицы с формулами на листе SEARCH предназначены для поиска по ключевому полю с выборкой другого поля в качестве результата.

Первый вариант – это использование популярной функции VLOOKUP.

SEARCH!B5

=VLOOKUP(A5;data!$H$1:$M$3000;6;0) 

Во втором вариант использовать VLOOKUP нельзя, так как результирующее поле находится слева от искомого. В данном случае используется сочетание функций MATCH+OFFSET.

SEARCH!C13

=MATCH(A13;data!$Z$1:$Z$3000;0) 

SEARCH!B13

=OFFSET(data!$M$1;C13-1;0) 

Первая функция ищет нужную строку, вторая возвращает нужное значение через вычисляемую адресацию.

Поиск по нескольким критериям

Таблицы с формулами на листе SEARCH2 предназначены для поиска по нескольким ключевым полям.

В первом варианте используется техника использования служебного столбца, описанная в примере к листу SUM2:

SEARCH2!Е5

=VLOOKUP(C5 & ";" & D5;$A$1:$B$3000;2;0) 

Второй вариант работы сложнее. Используется обработка массива, который образуется при помощи функций вычисляемой адресации:

SEARCH2!Е 12

{=OFFSET(data!$M$1;MATCH(C13 & ";" & D13; data!$H$1:$H$3000 & ";" & data!$Z$1:$Z$3000;0)-1;0)} 

Четвертый и пятый параметр в функции OFFSET используется для образования массива и определяет его размерность в строках и столбцах.

Выборка по одному критерию

Таблица на листе SELECT показывает вариант фильтрации данных через формулы.

Предварительно определяется количество строк в выборке:

SELECT!С4

=COUNTIF(data!$H:$H;$A$5) 

Служебный столбец содержит формулы для определения номеров строк для фильтра. Первая строка ищется через простую функцию:

SELECT!С5

=MATCH($A$5;data!$H$1:$H$3000;0) 

Вторая и последующие строки ищутся в вычисляемом диапазоне с отступом от предыдущей найденной строки:

SELECT!С6

=MATCH($A$5;OFFSET(data!$H$1;C5;0; ROWS(data!$H$1:$H$3000)-C5;1);0)+C5

Результат выдается через функцию вычисляемой адресации:

SELECT!B6

=IF(ISNA(C6);"";OFFSET(data!$M$1;C6-1;0)) 

Вместо функции проверки наличия ошибки ISNA можно сравнивать текущую строку с максимальным количеством, так как это сделано в столбце A.

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

Выборка вариантов

Самый сложный вариант выборки по ключевому полю представлен на листе SELECT2. Формулы сами определяют все доступные ключевые значения второго критерия.

Первый служебный столбец содержит сцепленные строки ключевых полей. Второй столбец проверяет соответствие первому ключу и оставляет значение второго ключевого поля:

SELECT2!B2

=IF(LEFT(A2;LEN($D$5)) & ";" = $D$5 & ";"; data!Z2;"") 

Третий служебный столбец проверяет значение второго ключа на уникальность:

SELECT2!C2

=IF(B2="";0;IF(ISNA(MATCH(B2;B$1:B1;0));COUNTIF(C$1:C1;">0")+1;0)) 

Результирующий столбец второго ключа ProductName ищет уникальные значения в служебном столбце C:

SELECT2!E5

=IF(ISNA(MATCH(ROWS($5:5);$C$1:$C$3000;0));"";OFFSET($B$1;MATCH(ROWS($5:5);$C$1:$C$3000;0)-1;0)) 

Столбец Quantity просто суммирует данные по двум критериям, используя технику, описанную на листе SUM2.

SELECT2!F5

=IF(E5="";"";SUMPRODUCT((data!$H$2:$H$3000=D5)*(data!$Z$2:$Z$3000=E5)*data!$M$2:$M$3000)) 

Заключение

Использование функций рабочего листа для консолидации и выборки данных является эффективным методом построения отчетов с обновляемым источником исходных данных. Недостатками этого метода являются повышенные требования к пользователю в части создания сложных формул, а также низкая производительность в сравнении, например, со сводными таблицами. Последний недостаток зависит от объема исходных данных, сложности формул консолидации и технических возможностей компьютера. В критических случаях рекомендуется использовать ручной режим пересчета формул рабочей книги Excel.

Смотри также

» Работа с ненормализированными данными

В приложении к статье файл с простой задачей суммирования диапазона по различным условиям.  Как ни странно, подобные задачи…

» Простые формулы

В приложенном файле несколько примеров использования простых функций Excel нестандартным способом.

» Обработка больших объемов данных. Часть 3. Сводные таблицы

Третья статья, посвященная обработке больших объемов данных с помощью Excel, описывает преимущества использования сводных таблиц….

» Обработка больших объемов данных. Часть 2. Интерфейс

В статье систематизируются простые приемы обработки больших объемов данных при помощи стандартных методов интерфейса Excel. Информация…

» Суммирование несвязанных диапазонов

При обработке больших таблиц иногда возникает потребность получить итоговые значения на основе данных, расположенных в диапазонах…

Массив функций Excel позволяет решать сложные задачи в автоматическом режиме одновременно. Те, которые выполнить посредством обычных функций невозможно.

Фактически это группа функций, которые одновременно обрабатывают группу данных и сразу выдают результат. Рассмотрим подробно работу с массивами функций в Excel.

Виды массивов функций Excel

Массив – данные, объединенные в группу. В данном случае группой является массив функций в Excel. Любую таблицу, которую мы составим и заполним в Excel, можно назвать массивом. Пример:

Пример массивов.

В зависимости от расположения элементов различают массивы:

  • одномерные (данные находятся в ОДНОЙ строке или в ОДНОМ столбце);
  • двумерные (НЕСКОЛЬКО строк и столбцов, матрица).

Одномерные массивы бывают:

  • горизонтальными (данные – в строке);
  • вертикальными (данные – в столбце).

Примечание. Двумерные массивы Excel могут занимать сразу несколько листов (это сотни и тысячи данных).

Примеры двумерных массивов.

Формула массива – позволяет обработать данные из этого массива. Она может возвращать одно значение либо давать в результате массив (набор) значений.

С помощью формул массива реально:

  • подсчитать количество знаков в определенном диапазоне;
  • суммировать только те числа, которые соответствуют заданному условию;
  • суммировать все n-ные значения в определенном диапазоне.

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



Синтаксис формулы массива

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

  1. Выделяем диапазон Е3:Е8.
  2. В строку формул вводим следующую формулу: =C3:C8*D3:D8.
  3. Формула промежуточных итогов.

  4. Нажимаем одновременно клавиши: Ctrl + Shift + Enter. Промежуточные итоги посчитаны:
  5. Результат вычисления промежуточных итогов.

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

Если попытаться изменить данные в какой-либо ячейке столбца «К оплате» — ничего не выйдет. Формула в массиве защищает значения диапазона от изменений. На экране появляется соответствующая запись:

Ошибка.

Рассмотрим другие примеры использования функций массива Excel – рассчитаем итоговую сумму коммунальных платежей с помощью одной формулы.

  1. Выделяем ячейку Е9 (напротив «Итого»).
  2. Вводим формулу вида: =СУММ(C3:C8*D3:D8).
  3. Нажимаем сочетание клавиш: Ctrl + Shift + Enter. Результат:
  4. Итог одной формулой.

Формула массива в данном случае заменила две простые формулы. Это сокращенный вариант, вместивший всю необходимую информацию для решения сложной задачи.

Аргументы для функции – одномерные массивы. Формула просматривает каждый из них по отдельности, совершает заданные пользователем операции и генерирует единый результат.

Рассмотрим ее синтаксис:

Синтаксис массива функций.

Функции работы с массивами Excel

Предположим, в следующем месяце планируется увеличение коммунальных платежей на 10%. Если мы введем обычную формулу для итога =СУММ((C3:C8*D3:D8)+10%), то вряд ли получим ожидаемый результат. Нам нужно, чтобы каждый аргумент увеличился на 10%. Чтобы программа поняла это, мы используем функцию как массив.

Сложный массив.

  1. Посмотрим, как работает оператор «И» в функции массива. Нам нужно узнать, сколько мы платим за воду, горячую и холодную. Функция: . Итого – 346 руб.
  2. Выборочный итог.

  3. Функция «Сортировки» в формуле массива. Отсортируем суммы к оплате в порядке возрастания. Для списка отсортированных данных создадим диапазон. Выделим его. В строке формул вводим . Жмем сочетание Ctrl + Shift + Enter.
  4. Сортировка итогов.

  5. Транспонированная матрица. Специальная функция Excel для работы с двумерными массивами. Функция «ТРАНСП» возвращает сразу несколько значений. Преобразует горизонтальную матрицу в вертикальную и наоборот. Выделяем диапазон ячеек, где количество строк = числу столбцов в таблице с исходными данными. А количество столбцов = числу строк в исходном массиве. Вводим формулу: . Получается «перевернутый» массив данных.
  6. Перевернутый массив данных.

  7. Поиск среднего значения без учета нулей. Если мы воспользуемся стандартной функцией «СРЗНАЧ», то получим в результате «0». И это будет правильно. Поэтому вставляем в формулу дополнительное условие: . Получаем:
  8. Условие в массиве.

Скачать примеры массива функций

Распространенная ошибка при работе с массивами функций – НЕ нажатие кодового сочетания «Ctrl + Shift + Enter» (никогда не забывайте эту комбинацию клавиш). Это самое главное, что нужно запомнить при обработке больших объемов информации. Правильно введенная функция выполняет сложнейшие задачи.

 

Добрый день, столкнулся с проблемой при обработке больших таблиц. Есть БД, данные их которой выгружаются в EXCEL, на листе формируется таблица состоящая из 60 тысяч строк (иногда меньше — до 30 тысяч) и содержащая 20-25 столбцов. В этой таблице необходимо в смежных сроках сравнивать ячейки и если эти ячейки совпадают, то эти строки сохранять, остальные удалять!
Написал 2 макроса, все работает, только если строк в таблице не более 10-15 тысяч, если больше — все ужасно тормозит, макрос выполняется час и более.Можно-ли это как-то решить.
P.S. все что может тормозить процесс из таблицы убрано имхо как: очищены форматы во всей таблице, убраны все возможные автофильтры, файл сохраняется как двоичная книга.

Прикрепленные файлы

  • Пример.xlsb (20.93 КБ)

Изменено: Влад Турбин09.11.2016 20:57:33

 

kalbasiatka

Пользователь

Сообщений: 684
Регистрация: 22.12.2012

#2

08.11.2016 21:02:57

Цитата
Гигантские таблицы

Те, кто имеет дело с миллионами строк сейчас улыбнулись.

Изменено: kalbasiatka09.11.2016 20:55:16

 

gling

Пользователь

Сообщений: 4024
Регистрация: 01.01.1970

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

Изменено: gling08.11.2016 21:04:55

 

Файл с макросом вложен!

Прикрепленные файлы

  • Пример.xlsb (20.93 КБ)

 

heso

Пользователь

Сообщений: 444
Регистрация: 14.08.2015

#5

09.11.2016 11:36:33

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

Код
Sub Первый()
    
    Dim temp_arr(), fill_arr()
    Dim stroki As New Collection
    
    lrow = Cells(Rows.Count, 1).End(xlUp).Row
    massiv = Range("A7:T" & lrow)
    
    ReDim temp_arr(1 To lrow - 6, 1 To 2)
    For i = lrow - 6 To 1 Step -1
        g = Join(Application.Transpose(Application.Transpose(Application.Index(massiv, i, 0))), "|")
        g = Right(g, Len(g) - InStr(1, g, "|"))
        temp_arr(i, 1) = i
        temp_arr(i, 2) = g
    Next
    i = 1
    While i < lrow - 6
        If temp_arr(i, 2) = temp_arr(i + 1, 2) Then
            On Error Resume Next
            stroki.Add (i), CStr(i)
            stroki.Add (i + 1), CStr(i + 1)
        End If
        i = i + 1
    Wend

    ReDim fill_arr(1 To stroki.Count, 1 To 20)
    For i = 1 To stroki.Count
        For j = 1 To 20
           fill_arr(i, j) = massiv(stroki(i), j)
        Next
    Next
    Range("A7:T" & lrow).ClearContents
    Range("A7:T" & 6 + stroki.Count) = fill_arr
    

End Sub

Изменено: heso09.11.2016 20:48:37

 

Мотя

Пользователь

Сообщений: 3218
Регистрация: 25.12.2012

Вариант.

Изменено: Мотя09.11.2016 21:02:11

 

Нет, сравниваются только значения, содержащиеся в ячейках находящихся в столбцах С, E, H, T.

Изменено: Влад Турбин09.11.2016 20:56:36
(Грамматическая ошибка)

 

Влад Турбин

Пользователь

Сообщений: 78
Регистрация: 01.01.1970

#8

09.11.2016 21:06:38

Цитата
kalbasiatka написал: Те, кто имеет дело с миллионами строк сейчас улыбнулись

Ну не с миллионами! А что, в Excel есть возможность создать таблицу с 1 048 577 строк? Я всегда думал, что количество строк ограничено!

 

Мотя

Пользователь

Сообщений: 3218
Регистрация: 25.12.2012

#9

09.11.2016 21:15:30

Цитата
Влад Турбин написал: А что, в Excel есть возможность создать таблицу с 1 048 577 строк?

«Встаньте» на любом листе в Excel на «перекрестие бордюров» и увидите мощь Excel 2010!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Мотя, там о последней циферке речь :)

Влад Турбин, миллионы строк можно обрабатывать, получив массив из других приложений, и выгружать в Excel или на разные листы, или в несколько столбцов. А может, после обработки миллионов строк останется сотня…

 

Уважаемый vikttur!
Тема название которой Вы поменяли в первый раз более соответствовало моим  критериям. Мне действительно необходимо обрабатывать большие массивы  содержащие формулы и при этом ускорить обработку массива макросом, чем  то название, которое тема имеет сейчас «При несовпадении данных в  смежных строках эти строки удалять». Мне необходимо из таблицы, в одном  случае, получать выборку по совпадающим данным, а в другом случае  удалять одну из строк с совпадающими данными.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Я Вас просил несколько раз САМОСТОЯТЕЛЬНО придумать нормальное название темы. Вы считаете, что это моя блажь?

Предложите сейчас. Поменяю.

 

Мотя

Пользователь

Сообщений: 3218
Регистрация: 25.12.2012

Уважаемый

Влад Турбин

!
Ваше описание алгоритма: это просто — набор слов.

 

Я уже предлагал название «Обработка больших массивов содержащих формулы»
Основное условие: Ускорить работу макроса при обработке больших массивов содержащих формулы в смежных ячейках не смежных столбцах!
Это необходимо для разностороннего анализа данных в таблице, при чем, анализ может проводится по разным диапазонам данных.
Изначально дано: Массив данных в котором ячейки, содержащиеся в столбцах С, E, H, T проверяются на совпадение значений в смежных ячейках с помощью функции «ЕСЛИ(И» и «ЕСЛИ(ИЛИ», совпадают-ли значения в ячейке С8 с ячейкой С9, С9 сравнивается с С10, Е8 с Е9, Е9 с Е10 и т.д. При этом, в массиве не обязательно, при совпадении значений С9 и С10 совпадут Н9 и Н10, т.е. условия по котором строка сохраняется — это полное совпадение значений в 4 смежных ячейках, расположенных в НЕСМЕЖНЫХ столбцах С, E, H, T.
Строки, в которых это совпадение 100% сохраняются, остальные удаляются.
В зависимости от ЗАДАЧИ поставленной перед пользователем, который проводит анализ с помощью функций «ЕСЛИ(И» и «ЕСЛИ(ИЛИ», совпадают-ли значения в смежных ячейках не смежных столбцов, (это не обязательно могут быть столбцы С, E, H, T) макрос должен из большого массива данных удалять только те строки, определенным ячейкам в которых, с помощью функций  «ЕСЛИ(И» и «ЕСЛИ(ИЛИ» присвоены значения «УДАЛИТЬ» или «ОСТАВИТЬ»

 

Влад Турбин

Пользователь

Сообщений: 78
Регистрация: 01.01.1970

#15

10.11.2016 09:31:00

Цитата
vikttur написал: миллионы строк можно обрабатывать, получив массив из других приложений, и выгружать в Excel или на разные листы, или в несколько столбцов

К сожалению используемая ERP не позволяет выгружать данные так, как Вы предлагаете.

 

И последнее! Проводящийся анализ выгружаемых из ERP данных необходим для определения возникающей системной ошибки, т.е. записи в выгружаемой таблице изначально не должны дублироваться. Дублирующиеся записи — это ошибка, и тут необходимо выяснить является-ли это ошибка специализированного ПО при обработке и выгрузке данных или это ошибка железа этой ERP (считыватели, стойки, шлагбаумы)

 

SAS888

Пользователь

Сообщений: 757
Регистрация: 01.01.1970

Посмотрите пример во вложении. Откройте файл и выполните макрос «Main».
Проверьте на своих «больших» файлах. Обработка 60000 строк должна занять 3…5 сек.
Все ли так, как требовалось?

Чем шире угол зрения, тем он тупее.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#18

10.11.2016 12:14:18

Цитата
Влад Турбин написал: используемая ERP не позволяет выгружать данные так, как Вы предлагаете.

Я Вам ничего не предлагал, это был ответ на вопрос о миллионах строк.

 

Кнопка цитирования не для ответа [МОДЕРАТОР]

Уважаемые форумчане! Мне не нужно сравнивать значения (это выполняется с помощью функций «И(ИЛИ»), мне нужно только:
— или оптимизировать код чтобы при обработке массивов содержащих формулы макрос выполнялся быстрее;
— или сказать, что это невозможно.

 

Ivan.kh

Пользователь

Сообщений: 2024
Регистрация: 04.03.2013

Чтоб работало быстрее:
— отключите перерасчет формул
— не используйте Select
— минимальное использование Cells & Range (сделать все на массивах) и/ил словарях и/или коллекциях

Изменено: Ivan.kh10.11.2016 13:49:33

 

SAS888

Пользователь

Сообщений: 757
Регистрация: 01.01.1970

#21

11.11.2016 05:23:14

Цитата
Влад Турбин написал:
Мне не нужно сравнивать значения (это выполняется с помощью функций «И(ИЛИ»), мне нужно только…
…оптимизировать код чтобы при обработке массивов содержащих формулы макрос выполнялся быстрее;

Влад Турбин

, давайте еще раз, но по-медленнее.
1. Если я Вас правильно понял, то макрос должен удалить строки по определенным условиям. Если так, то для этого макрос, как минимум, должен проверить эти условия. В данном случае, сравнить определенные ячейки в строках.
2. Если Вы используете макрос, то зачем применять на листе «кучу» формул (функций)? Удалите все формулы и поручите все вычисления макросу. Это значительно «облегчит» файл и ускорит работу макроса.
3. Приложенный Вами пример исходного файла вообще не содержит формул. Для корректной отладки кода макроса, прикрепите пример из 10…20 строк с Вашими формулами.
4. Посмотрите приложенный файл с примером макроса. Я его протестировал на 60000 строк (просто много раз скопировал и добавил имеющиеся в Вашем примере строки с данными). Время работы макроса составило единицы секунд. Перед обработкой макрос отключает пересчет листа, а по окончании работы — включает. Как это скажется на время выполнения при реальных Ваших данных (с формулами), я не могу проверить.

Прикрепленные файлы

  • Пример_3.xlsb (18.48 КБ)

Чем шире угол зрения, тем он тупее.

 

Помедленнее:
Дано:
1.БД созданная с помощью специального ПО из которой выгружаются (импортируются) данные в файл Эксель, данные можно выгрузить только на один лист Экселя.
2. Или при выгрузке данных из БД в Эксель, или при записи данных в БД специальном ПО возникает ошибка — некоторые записи дублируются но не полностью т.е. нельзя просто взять и сравнить строки.
3. Выгруженные данные имеют форму таблицы, состоящей из 30 000 — 60 000 строк и 29 столбцов (в файле примера таблица не полная, столбцов меньше)
Требуется:
Провести анализ значений по разным критериям, таким как: совпадениям значений в определенных смежных ячеек или не совпадений значений в одних ячейках и совпадений в других. Т.к. пока не понятно почему одни записи дублируются, а другие нет, невозможно точно сказать, что макрос должен сравнивать значения в ячейках расположенных, допустим, в столбцах А В С на совпадение, а в ячейках столбцов D E F на несовпадение. Т.е. после обработки таблицы с помощью функций «И(ИЛИ», полученный результат необходимо сравнить по другим критериям (опять же на совпадение или не совпадение). Следовательно я не могу точно определить (пока не получу результат первого сравнения) ячейки в каких столбцах я должен сравнивать. Поэтому, для сравнения значений в ячейках используется формула. Из-за того, что таблица имеет большое количество строк, ковыряться в ней ища строки, которые отобраны по заданным критериям используя перемещение с помощью движка или курсора нереально! Поэтому макросом строки удаляются. Пытался использовать и условное форматирование+автофильтр (при этом скрываются подходящие или не подходящие по условиям строки) но строки-то скрываются, а при изменении функции сравнения или вставке функций «И(ИЛИ» в другие ячейки обрабатывается вся таблица целиком включая и скрытые ячейки. Т.е. мне надо обработать таблицу, получить результат и обработать этот результат в зависимости от того что я увижу.
ПОЭТОМУ мне просто нужен макрос обрабатывающий большие массивы с формулами т.к. я не могу до получения результатов от первого сравнения сказать что мне необходимо сравнивать дальше!

 

Мотя

Пользователь

Сообщений: 3218
Регистрация: 25.12.2012

#23

11.11.2016 20:07:55

Цитата
Влад Турбин написал: Поэтому макросом строки удаляются.

Полагаю, здесь «зарыта» Ваша проблема — в удалении строк…
Измените алгоритм Вашего макроса: не следует удалять строки, нужно просто построить «протокол» контроля с выводом информации из строк не в режиме «значения», а в режиме «формулы».
Этот протокол Вы сможете использовать для визуального анализа своей проблемы.

 

Проблема в том, что удаление строк происходит медленно и вопрос был как ускорить работу макроса, который удаляет строку по значению в ячейке, из таблицы с большим количеством строк, в случае если условие по которому удаляется строка записано в ячейку с помощью функций.
Строки ОБЯЗАТЕЛЬНО должны удаляться!
Вопрос: можно ускорить или нельзя, если можно, прошу помочь!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#25

12.11.2016 10:14:09

Цитата
удалять только те строки, определенным ячейкам в которых, с помощью функций «ЕСЛИ(И» и «ЕСЛИ(ИЛИ» присвоены значения «УДАЛИТЬ» или «ОСТАВИТЬ»

Фильтровать по значению, копировать, вставить на другой лист — так не пойдет?

Еще вариант: заносить строки в диапазон по Union, удалять одним махом.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#26

12.11.2016 10:19:36

Цитата
Т.е. после обработки таблицы… результат необходимо сравнить по другим критериям… Следовательно я не могу точно определить (пока не получу результат первого сравнения) ячейки в каких столбцах я должен сравнивать. Поэтому, для сравнения значений в ячейках используется формула.

Изначально ошибочный путь. Все, что в цитате, можно проделать без участия формул, в коде (см. сообщение №21 от SAS888)

На макрос heso и вариант от Моти Вы вообще ничего не ответили…

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#27

12.11.2016 10:44:43

О названии темы.

Цитата
Обработка больших массивов содержащих формулы

Почему название темы должно говорить о формулах? Ваш макрос проверяет не формулы — значения. Неважно, как они получены.
Основная задача — удаление строк.

Цитата
При несовпадении данных в смежных строках эти строки удалять

Почему это название Вы отвергли? На мой взгляд, такое определение точнее отражает смысл.

 

Использовать фильтры и автофильтры я пытался, фильтр скрывает строки или делает высоту строки = 0 (я сначала пытался решить проблему удаления строк именно с помощью автофильтра — скрывал строки и удалял скрытые строки или те, высота которых = 0 с помощью макроса, тормозило еще больше. Если фильтровать по значению и копировать то копируется вся таблица, если использовать расширенный фильтр, у которого встроена возможность «скопировать результат в другое место», то Эксель ругается и говорит, что копирование возможно только на тот же лист из которого берутся данные!
А про диапазон Union можно поподробнее, как для чайника?!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#29

12.11.2016 10:56:25

Код
Dim ArrData()
Dim rRng As Range
Dim lRws As Long
Dim i As Long
        lRws = ActiveSheet.UsedRange.Rows.Count
        ArrData = Range("A1:X" & lRws).Value ' данные в массив
        
        For i = 1 To  lRws
            If условие _совпадения_выполнено Then
                If rRng Is Nothing Then
                    Set rRng = Cells(i, 1) ' формируем диапазон
                Else
                    Set rRng = Union(rRng, Cells(i, 1)) 'пополняем диапазон
                End If
            End If
        Next i
        
        Application.ScreenUpdating = False
        If Not rRng Is Nothing Then rRng.EntireRow.Delete ' если есть, удаляем
        Application.ScreenUpdating = True

В файл не заглядывал, поэтому диапазон, заносимый в массив, указан произвольно.
Cells(i, 1) — любая ячейка строки.
Если известна первая удаляемая строка (можно перед таблицей вставить пустую), нужно вынести из цикла формирование диапазона:

Код
       Set rRng = Cells(2, 1) ' формируем диапазон (строка 2 под удаление)

        For i = 1  lRws
            If условие _совпадения_выполнено Then
                 Set rRng = Union(rRng, Cells(i, 1)) 'пополняем диапазон
            End If
        Next i
 

Влад Турбин

Пользователь

Сообщений: 78
Регистрация: 01.01.1970

#30

12.11.2016 17:57:20

Извините, но я отвечал, мне не подходит сравнение диапазона А1:Х!
Сравниваются значения, содержащиеся в смежных ячейках находящихся в определенных столбцах допустим С, E, H, T. и в зависимости от полученного результата, необходимо в полученном результате опять провести сравнение в одном случае, допустим, в столбцах D, G, Y, а в другом случае это может быть в столбцах A, F, W, критерий по которому будет проходить второе и последующее сравнение зависит от результата предыдущего! Я пытаюсь понять почему возникает ошибка (или при выгрузке данных из БД в эксель или при записи данных в БД сторонним ПО), систему по которой происходит дублирование некоторых записей. Запись представляет из себя строку в ячейки которой заносятся различные параметры, запись производится по определенному событию. То, что в двух смежных строках записаны данные об одном и том же событии подтверждается видеонаблюдением, проблема в том, что запись дублируется не полностью т.е. в двух смежных строках в некоторых ячейках значения идентичны, а в некоторых отличаются (ПРИ ЭТОМ СОБЫТИЕ ПРОИСХОДИТ ОДНО!!! А ЗАПИСЕЙ ДВЕ!!! И ИНОГДА ТРИ!!!!!), при чем эти некоторые, отличающиеся  ячейки могут находится в разных столбцах.

Эта заметка не касается случаев, когда мы имеем 2-3 таблицы размером с экран. В таком случае их можно выполнять любыми способами и время существенно не изменится.

Но когда у нас имеется большой массив данных, который обычно представлен в виде книг Excel, у которых:

  • Много вложенных листов
  • На каждом листе большие или сложные таблицы

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

Под качеством  в данном случае я понимаю:

  • Гибкость — возможность оперативно представить любые данные в любом агрегированном виде;
  • Наличие ошибок — неправильные или пропущенные формулы, неправильные значения, выпадающие значения;
  • 100%-ая уверенность в полученных цифрах.

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

Принцип 1. Исходные данные должны быть представлены в виде нормализованной таблицы.

Это значит:

  • Каждый уникальный объект обработки располагается в отдельной строке, никаких заполнений в две и более строки, никаких объединений строк, никаких переносов текста в строках (это загромождает возможность обработки). Под уникальным объектом обработки понимаются например, сотрудник, операция, номенклатура, заказ и т.д.;
  • Все поля уникального объекта распределены по отдельным столбцам. Т.е.в одном столбце во всей таблице располагается только одно смысловое значение: наименование, дата, вес, стоимость, район, область и т.д.
  • Поля дат зачастую обрабатываю, создавая с помощью формул поля «год», «месяц», «число».

Итогом выполнения этого принципа является полностью подконтрольная таблица, в которой я знаю, как поведет себя каждая ячейка.

Принцип 2. Столбцы с формулами располагаются ПОСЛЕ всех столбцов с исходными данными.

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

Принцип 3. Удобство навигации по таблице.

Это как минимум:

  • Нормальная шапка таблицы с понятными названиями столбцов, но не длинными;
  • Закрепление шапки и еще одной строки;
  • Установление фильтра в строке шапки таблицы;
  • Размещение перед строкой шапки таблицы строки с шаблонами формул.

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

В результате у меня любая таблица имеет примерно такой вид:свод1

Принцип 4. Организация любой аналитики с использованием сводных таблиц и сводных диаграмм.

Всем должно быть понятно, что попытка сделать аналитику в виде стационарных таблиц — это путь в никуда и лишние трудозатраты.

Если исходная таблица у нас сделана по первым трем принципам, то созданная на ее основе сводная таблица позволяет выбирать, группировать, рассчитывать любые значения «лёгким движением руки».

Обычно таблица имеет такой вид:

свод2

Обращаю внимание на очень эффективный инструмент, который появился в Excel 2010 и улучшился в Excel 2013 — это «срезы», которые можно вставлять по любому полю и затем фильтровать сводную таблицу по любому набору этих срезов.

В следующем примере я выбрал значения за 1.02.2015 с количеством менее 120 ед:

свод3

Принцип 5. Формирование стационарных таблиц производить только в целях создания неизменяемого отчета.

Это означает, что отчетность я делаю только тогда, когда уже проведен анализ и надо зафиксировать ее итоги для  дальнейшей рассылки или для истории.

Эти отчеты обычно формирую путем копирования выбранных частей сводной таблицы.

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

Соблюдение этих принципов дает следующие плюсы:

  1. Любой объем данных может быть проанализирован буквально в течение 1 часа, если не меньше. Причем основное время занимают операции обработки массива данных компьютером, а не ручная работа пользователя.
  2. Соблюдаются все параметры качества, которые я указал вверху: гибкость, отсутствие ошибок, 100%-ая уверенность в цифрах.
  3. Сведены к нулю затраты времени на придумывание механизма обработки данных под каждую задачу. Со временем появляются навыки эффективного получения любой исходной информации из любого источника сразу в нормальном виде.
  4. Отсутствуют ограничения по внесению данных в исходную таблицу. Можно целиком заменить данные и скопировать формулы, можно добавлять любое количество строк, удалять строки, менять в них любые цифры.
  5. Отсутствуют ограничения по обработке данных. В любой момент таблицу можно дополнить новым полем с формулой и расширить ее функциональность без необходимости полного пересмотра ее структуры и переделки всей таблицы.
  6. К любой детальной информации (реестры заказов, продаж, счетов, списки сотрудников и т.д.) можно подтягивать любое количество данных из дополнительных справочников. И тем самым постоянно расширять количество аналитических срезов, используемых в сводных таблицах.

В общем, эти цифры позволяют мне полностью управлять цифрами, а не цифры управляют мной.

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

#Руководства

  • 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 Таблицах»
Скриншот: Google Таблицы / Skillbox Media

Другие материалы Skillbox Media по Excel

  • Как сделать сводные таблицы в Excel — детальная инструкция со скриншотами
  • Руководство: как сделать ВПР в Excel и перенести данные из одной таблицы в другую
  • Руководство по макросам для новичков — для чего нужны и как их сделать
  • Инструкция: как закреплять строки и столбцы в Excel
  • Руководство по созданию выпадающих списков в Excel — как упростить заполнение таблицы повторяющимися данными

Научитесь: Excel + Google Таблицы с нуля до PRO
Узнать больше

Управление массивами в Microsoft Excel

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

Операции с массивами

Массив – это группа данных, которая расположена на листе в смежных ячейках. По большому счету, любую таблицу можно считать массивом, но не каждый из них является таблицей, так как он может являться просто диапазоном. По своей сущности такие области могут быть одномерными или двумерными (матрицы). В первом случае все данные располагаются только в одном столбце или строке.

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

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

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

Создание формулы

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

Над диапазонами данных можно также выполнять операции сложения, вычитания, деления и другие арифметические действия.

Координаты массива имеют вид адресов первой её ячейки и последней, разделенные двоеточием. Если диапазон двумерный, то первая и последняя ячейки расположены по диагонали друг от друга. Например, адрес одномерного массива может быть таким: A2:A7.

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

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

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

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

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

      Закройте информационное окно, нажав на кнопку «OK».

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

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

  • После того, как изменения внесены, набираем комбинацию Ctrl+Shift+Esc. Формула будет изменена.
    1. Для удаления формулы массива нужно точно так же, как и в предыдущем случае, выделить курсором весь диапазон ячеек, в котором она находится. Затем нажать на кнопку Delete на клавиатуре.

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

    Наиболее удобно в качестве формул использовать уже готовые встроенные функции Excel. Доступ к ним можно получить через Мастер функций, нажав кнопку «Вставить функцию» слева от строки формул. Или же во вкладке «Формулы» на ленте можно выбрать одну из категорий, в которой находится интересующий вас оператор.

    После того, как пользователь в Мастере функций или на ленте инструментов выберет наименование конкретного оператора, откроется окно аргументов функции, куда можно вводить исходные данные для расчета.

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

    Оператор СУММ

    Одной из наиболее востребованных функций в Экселе является СУММ. Её можно применять, как для суммирования содержимого отдельных ячеек, так и для нахождения суммы целых массивов. Синтаксис этого оператора для массивов выглядит следующим образом:

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

    Оператор ТРАНСП

    Функция ТРАНСП является типичным оператором массивов. Она позволяет переворачивать таблицы или матрицы, то есть, менять строки и столбцы местами. При этом она использует исключительно вывод результата в диапазон ячеек, поэтому после введения данного оператора обязательно нужно применять сочетание Ctrl+Shift+Enter. Также нужно отметить, что перед введением самого выражения нужно выделить на листе область, у которой количество ячеек в столбце будет равно числу ячеек в строке исходной таблицы (матрицы) и, наоборот, количество ячеек в строке должно равняться их числу в столбце исходника. Синтаксис оператора следующий:

    Оператор МОБР

    Функция МОБР позволяет производить вычисление обратной матрицы. Все правила ввода значений у этого оператора точно такие же, как и у предыдущего. Но важно знать, что вычисление обратной матрицы возможно исключительно в том случае, если она содержит равное количество строк и столбцов, и если её определитель не равен нулю. Если применять данную функцию к области с разным количеством строк и столбцов, то вместо корректного результата на выходе отобразится значение «#ЗНАЧ!». Синтаксис у этой формулы такой:

    Для того чтобы рассчитать определитель, применяется функция со следующим синтаксисом:

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

    Отблагодарите автора, поделитесь статьей в социальных сетях.

    Работа с массивами функций в Excel

    Массив функций Excel позволяет решать сложные задачи в автоматическом режиме одновременно. Те, которые выполнить посредством обычных функций невозможно.

    Фактически это группа функций, которые одновременно обрабатывают группу данных и сразу выдают результат. Рассмотрим подробно работу с массивами функций в Excel.

    Виды массивов функций Excel

    Массив – данные, объединенные в группу. В данном случае группой является массив функций в Excel. Любую таблицу, которую мы составим и заполним в Excel, можно назвать массивом. Пример:

    В зависимости от расположения элементов различают массивы:

    • одномерные (данные находятся в ОДНОЙ строке или в ОДНОМ столбце);
    • двумерные (НЕСКОЛЬКО строк и столбцов, матрица).

    Одномерные массивы бывают:

    • горизонтальными (данные – в строке);
    • вертикальными (данные – в столбце).

    Примечание. Двумерные массивы Excel могут занимать сразу несколько листов (это сотни и тысячи данных).

    Формула массива – позволяет обработать данные из этого массива. Она может возвращать одно значение либо давать в результате массив (набор) значений.

    С помощью формул массива реально:

    • подсчитать количество знаков в определенном диапазоне;
    • суммировать только те числа, которые соответствуют заданному условию;
    • суммировать все n-ные значения в определенном диапазоне.

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

    Синтаксис формулы массива

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

    1. Выделяем диапазон Е3:Е8.
    2. В строку формул вводим следующую формулу: =C3:C8*D3:D8.
    3. Нажимаем одновременно клавиши: Ctrl + Shift + Enter. Промежуточные итоги посчитаны:

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

    Если попытаться изменить данные в какой-либо ячейке столбца «К оплате» — ничего не выйдет. Формула в массиве защищает значения диапазона от изменений. На экране появляется соответствующая запись:

    Рассмотрим другие примеры использования функций массива Excel – рассчитаем итоговую сумму коммунальных платежей с помощью одной формулы.

    1. Выделяем ячейку Е9 (напротив «Итого»).
    2. Вводим формулу вида: =СУММ(C3:C8*D3:D8).
    3. Нажимаем сочетание клавиш: Ctrl + Shift + Enter. Результат:

    Формула массива в данном случае заменила две простые формулы. Это сокращенный вариант, вместивший всю необходимую информацию для решения сложной задачи.

    Аргументы для функции – одномерные массивы. Формула просматривает каждый из них по отдельности, совершает заданные пользователем операции и генерирует единый результат.

    Рассмотрим ее синтаксис:

    Функции работы с массивами Excel

    Предположим, в следующем месяце планируется увеличение коммунальных платежей на 10%. Если мы введем обычную формулу для итога =СУММ((C3:C8*D3:D8)+10%), то вряд ли получим ожидаемый результат. Нам нужно, чтобы каждый аргумент увеличился на 10%. Чтобы программа поняла это, мы используем функцию как массив.

    1. Посмотрим, как работает оператор «И» в функции массива . Нам нужно узнать, сколько мы платим за воду, горячую и холодную. Функция: . Итого – 346 руб.
    2. Функция «Сортировки» в формуле массива. Отсортируем суммы к оплате в порядке возрастания. Для списка отсортированных данных создадим диапазон. Выделим его. В строке формул вводим . Жмем сочетание Ctrl + Shift + Enter.
    3. Транспонированная матрица. Специальная функция Excel для работы с двумерными массивами. Функция «ТРАНСП» возвращает сразу несколько значений. Преобразует горизонтальную матрицу в вертикальную и наоборот. Выделяем диапазон ячеек, где количество строк = числу столбцов в таблице с исходными данными. А количество столбцов = числу строк в исходном массиве. Вводим формулу: . Получается «перевернутый» массив данных.
    4. Поиск среднего значения без учета нулей. Если мы воспользуемся стандартной функцией «СРЗНАЧ», то получим в результате «0». И это будет правильно. Поэтому вставляем в формулу дополнительное условие: 0;A1:A8))’ class=»formula»>. Получаем:

    Распространенная ошибка при работе с массивами функций – НЕ нажатие кодового сочетания «Ctrl + Shift + Enter» (никогда не забывайте эту комбинацию клавиш). Это самое главное, что нужно запомнить при обработке больших объемов информации. Правильно введенная функция выполняет сложнейшие задачи.

    5 основных функции для работы с массивами

    Доброго времени суток друзья!

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

    Обратите внимание, на эти функции, так как работа с огромными массивами данных, одна из самых распространенных и правильное использование этих функции позволит вам значительно упростить и облегчить работу с таблицами Excel.

    Ну, что же, изучим необходимые функции для работы с массивами:

    1. Функция ВЫБОР (CHOOSE)

    Позволит вам выбрать значение из общего списка по указанному номеру позиции:

    =ВЫБОР(2;»Стул»;»Стол»;»Шкаф»;»Диван»)

    2. Функция ИНДЕКС (INDEX)

    Эта функция возвращает указанное значение из одно- или двумерного диапазона:

    =ИНДЕКС(A1:C6;4;3)

    Как видно с примера, полученное значение 37, в указанном диапазоне стоит на пересечении строки №4 и столбика №3 в диапазоне A1:C6 указанном в формуле. В более простом примере показано как в диапазоне С1:С6, на 2 месте находится значение 15:

    =ИНДЕКС(С1:С6;2)

    3. Функция ПОИСКПОЗ (MATCH)

    Эта функция вернет позицию значения, которое вы будете искать в указанном диапазоне:

    =ПОИСКПОЗ(B3;B2:B5;0)

    С примера вы можете видеть что слово «Стол» занимает 2 позицию в указанном диапазоне. Замечу, что третий аргумент в функции не является обязательным. При введенном значении 0, функция вернет ту позицию элемента массива, которое точно совпадает со значением, которое мы ищем. В случае, когда точное совпадение отсутствует, функция выдаст ошибку #Н/Д (#N/A).

    4. Функция ГПР (HLOOKUP)

    Ищет значение в указанном диапазоне и возвращает значение ячейки, которая находится в указанной строке того же столбца: =ГПР(C1;$B$1:$E$2;1;ЛОЖЬ). Как видите с примера, функция ГПР ищет в указанном диапазоне $B$1:$E$2 (знаком $ я указал абсолютную ссылку) и согласно условию возвращает искомое значение из первой строки, а аргумент «ЛОЖЬ» означает, что-либо, будет найдено нужное значение, либо мы получим ошибку #Н/Д.

    5. Функция ВПР (VLOOKUP)

    Во многом, даже очень во многом, похожа на функцию ГПР, но используется не для горизонтальных массивов, а вертикальных, что наиболее распространено в использовании.

    =ВПР(B4;$B$2:$C$5;2;ЛОЖЬ)

    Как видим, формула идентична предыдущей функции ГПР и так же ищет указанный номер «B4» в диапазоне $B$2:$C$5 со знаком $ (это сделано для создания абсолютной ссылки, что бы при копировании формулы на диапазон, аргумент не будет изменен), в третьем столбце, так как аргумент функции равен 2. Ну и четвёртый аргумент равен значению «ЛОЖЬ», это означает, что-либо будет найдено совпадение значений, либо будет получено сообщение об ошибке #Н/Д. Теперь при необходимости, мы копируем формулу, и она перенесёт все правильные аргументы по всему диапазону вычислений. Это возможно стало из-за абсолютной ссылки на массив значений, а вот первый аргумент на B4, при копировании, должен измениться на B5 и так далее.

    А на этом у меня всё! Я очень надеюсь, что описание 5 основных функций для работы с массивами вам стали ближе и понятнее. Буду очень благодарен за оставленные комментарии, так как это показатель читаемости и вдохновляет на написание новых статей! Делитесь с друзьями прочитанным и ставьте лайк!

    Не забудьте поблагодарить автора!

    Деньги для людей умных составляют средство, для глупцов — цель. А. Декурсель

    Формулы массива в Excel

    Терминология

    Под массивом обычно понимают набор данных, объединенных в группу. Массивы бывают одномерные (элементы массива образуют строку или столбец) или двумерные (матрица). Легко сообразить, что почти в любой таблице Excel при желании можно найти один или несколько таких массивов:

    Формулы массива в Excel — это специальные формулы для обработки данных из таких массивов. Формулы массива делятся на две категории — те, что возвращают одно значение и те, что дают на выходе целый набор (массив) значений. Рассмотрим их на простых примерах.

    Пример 1. Классика жанра — товарный чек

    Задача: рассчитать общую сумму заказа. Если идти классическим путем, то нужно будет добавить столбец, где перемножить цену и количество, а потом взять сумму по этому столбцу. Если же применить формулу массива, то все будет гораздо красивее:

    1. выделяем ячейку С7
    2. вводим с клавиатуры =СУММ(
    3. выделяем диапазон B2:B5
    4. вводим знак умножения (звездочка)
    5. выделяем диапазон 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. Таблица умножения

    Вспомните детство, школу, свою тетрадку по математике. На обороте тетради на обложке было что? Таблица умножения вот такого вида:

    При помощи формул массива она вся делается в одно движение:

    1. выделяем диапазон B2:K11
    2. вводим формулу =A2:A11*B1:K1
    3. жмем Ctrl + Shift + Enter, чтобы Excel воспринял ее как формулу массива

    и получаем результат:

    Пример 4. Выборочное суммирование

    Посмотрите как при помощи одной формулы массива красиво и легко выбираются данные по определенному товару и заказчику:

    В данном случае формула массива синхронно пробегает по всем элементам диапазонов C3:C21 и B3:B21, проверяя, совпадают ли они с заданными значениями из ячеек G4 и G5. Если совпадения нет, то результат равенства ноль, если совпадение есть, то единица. Таким образом суммы всех сделок, где заказчик не ANTON и товар не Boston Crab Meat умножаются на ноль и суммируются только нужные заказы.

    Формула массива в Excel. Примеры использования

    В Экселе есть замечательный инструмент, который называется формулой массива . Он позволяет выполнять действия не с отдельными значениями, а с целыми массивами данных, что значительно расширяет возможности Excel.

    Пример применения формулы массива

    Наиболее простой задачей, которой можно проиллюстрировать мощь формулы массива, является простой товарный чек. То есть у нас есть наименование товаров, их количество и цена за единицу. На выходе мы должны получить общую сумму покупки.

    Как бы мы решали данную задачу стандартным образом?

    Во-первых, мы бы получили итоговую сумму по каждому товару, перемножив количество товара на его цену.

    Ну а затем просуммировали бы получение суммы, для получения итоговой. То есть нам бы потребовался дополнительный столбец для промежуточных вычислений.

    Ту же самую задачу можно решить с помощью простейшей формулы массива.

    Нам нужно получить сумму, поэтому воспользуемся соответствующей функцией СУММ . А вот суммировать мы должны произведение цены товара на его количество, что мы и сделаем — выбираем диапазон значений из столица B и умножаем его на аналогичный диапазон значений столбца C.

    Если сейчас нажать Enter , то появится ошибка.

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

    Что произошло и как работает формула массива? Это важно понять, так как в дальнейшем можно будет применять формулы массива для решения намного более заковыристых задач…

    Итак, при вычислении формулы массива Excel произвел попарное умножение значений диапазонов B2:B5 и C2:C5. В результате получился массив значений который был просуммирован соответствующей функцией. Мы получили только одно значение итоговой суммы без вспомогательных вычислений.

    Обратите внимание на формулу в строке формул. Она заключена в фигурные скобки, которые указывают нам, что мы имеем дело с формулой массива.

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

    Анализ данных с помощью формулы массива

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

    Довольно стандартная ситуация, когда нужно сделать выборку по определенному критерию, например, рассмотрим таблицу, в которой учитываются продажи. В ней есть три менеджера и три товара, а также общая сумма продажи по каждой сделке.

    Нам нужно определить эффективность менеджеров, при этом нужно учитывать определенный товар.

    В соответствующих ячейках укажем интересующие нас исходные данные — менеджера и товар.

    Решить задачу можно довольно простой формулой массива.

    Так как в итоге нужно получить сумму, то будем использовать соответствующую функцию — СУММ . Также мы будем использовать условие, ведь у нас есть критерии. Сейчас я создам формулу, а потом объясню принцип ее работы.

    Итак, у нас в функцию суммирования подставлено три множителя.

    Первый множитель (A2:A14=G3) позволяет выбрать из столбца с именами менеджеров то, которое мы указали в критериях поиска.

    Второй множитель (B2:B14=G4) аналогичным образом позволяет определить необходимый товар.

    Ну и третий (С2:С14) выводит соответствующую сумму заказа.

    Как это работает?

    Формула массива проходит построчно в указанных диапазонах с именами менеджеров и товарами и проверяет выполнение условий. Если условие выполняется, то в возвращается 1, если же не выполняется, то 0.

    Соответственно, произведение трех множителей в случае, если хотя бы одно из двух условий не выполняется будет равно 0. Ну а если выполняются два условия, то мы получаем произведение двух единиц и соответствующей суммы заказа.

    Далее все полученные значения суммируются и на выходе мы получаем общую сумму по определенному товару и определенному менеджеру.

    Вот так одной простой формулой можно решить довольно сложную на первый взгляд задачу.

    Ну и данный отчет можно несколько улучшить, сделав выпадающий список с товарами и менеджерами, чтобы можно было получать быстрый отчет по каждому из них. И о том, как создать такой выпадающий список я расскажу в отдельном видео.

    Понравилась статья? Поделить с друзьями:
  • Анализ больших таблиц excel
  • Анализ больших объемов данных в excel
  • Анализ данных в excel по годам
  • Анализ баланса excel скачать
  • Анализ данных в excel не установлен