Функции обработки массивов в vba excel

Формулы массива в Excel - это специальные формулы для обработки данных из таких массивов.  При помощи формулы массива и функции ТРАНСП (TRANSPOSE) это

Вложения: nwdata_sums.xls [Обработка данных (формат 97-2003)] 2725 kB nwdata_sums.xlsx [Обработка данных (формат 2007)] 732 kB
Одним из самых популярных методов использования электронных таблиц является обработка данных, полученных из учетных систем. Современные базы данных, используемые учетными системами в качестве хранилища информации, способны накапливать и обрабатывать в собственных структурах десятки, а иногда сотни тысяч информационных записей в день. Средства анализа в системах управления базами данных реализуются либо на программном уровне, либо через специальные интерфейсы и языки запросов. Электронные таблицы позволяют эффективно обработать данные без знания языков программирования и других технических средств.
Методы переноса данных в Excel могут быть различны:
Копирование-вставка результатов запросов
Использование стандартных процедур импорта (например, Microsoft Query) для формирования данных на рабочих листах
Использование программных средств для доступа к базам данных с последующим переносом информации в диапазоны ячеек
Непосредственный доступ к данным без копирования информации на рабочие листы
Подключение к OLAP-кубам
Данные, полученные из учетных систем, обычно характеризуются большим объемом – количество строк может составлять десятки тысяч, количество столбцов при этом часто невелико, так как языки запросов к базам данным сами имеют ограничение на одновременно выводимое количество полей.
Обработка этих данных в Excel может вестись различными методами. Выделим основные способы работы:
Обработка данных стандартными средствами интерфейса Excel
Анализ данных при помощи сводных таблиц и диаграмм
Консолидация данных при помощи формул рабочего листа
Выборка данных и заполнение шаблонов для получения отчета
Программная обработка данных
Правильность выбора способа работы с данными зависит от конкретной задачи. У каждого метода есть свои преимущества и недостатки.
В данной статье будут рассмотрены способы консолидации и выборки данных при помощи стандартных формул Excel. Описание примеров
Примеры к статье построены на основе демонстрационной базы данных, которую можно скачать с сайта Microsoft

Главная » Макросы VBA Excel » Обработка массивов.  Функция получения массива данных из видимых строк.

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). Очевидно, что проблема возникает при обновлении исходных данных (например, при добавлении новых строк) – требуется заново копировать результаты консолидации из сводной таблицы. Другим, с нашей точки зрения, не совсем корректным методом решения является применение функций поиска непосредственно к диапазонам, которые занимают сводные таблицы. Это может привести к неверному поиску при обновлении не только данных, но и внешнего вида сводной таблицы.
Еще один классический пример непригодности применения сводной таблицы – это требование формирования отчета в заранее предопределенном виде («начальство требует в такой форме и никак иначе»). Возможностей настройки сводной таблицы зачастую недостаточно для предоставления произвольной формы. В данном случае пользователи также обычно используют копирование результатов агрегирования в качестве значений.

Функции манипуляций с индексами массивов.  plot(data,parm) - Пока не использовать. Функции обработки многомерных массивов.

Самым правильным методом обработки данных в приведенных случаях, с нашей точки зрения, является применение функций рабочего листа для консолидации данных. Этот метод требует иногда больших затрат времени на создание формул, но зато в дальнейшем при изменении исходных данных отчеты будут обновляться автоматически. Файлы примеров показывают различные варианты применения функция рабочего листа для обработки данных. Суммирование по одному ключевому полю
Таблицы с формулами на листе SUM показывают вариант решения задачи консолидации данных по одному ключевому значению.
=DSUM(data!$A$1:$AJ$2156;"Quantity";D18:D19)
Первый параметр определяет рабочий диапазон данных. Причем верхняя строка диапазона должна содержать заголовки полей. Второй параметр указывает наименование поля (столбца) для суммирования. Третий параметр ссылается на диапазон условий суммирования. Этот диапазон должен состоять как минимум из двух строк, верхняя строка – поле критерия, вторая и последующие - условия.
В другом варианте указания условий именем поля в этом диапазоне можно пренебречь, задав его прямо в тексте условия:
SUM!B28
=data!Z2=$A$28
Здесь data!Z2 означает ссылку на текущую строку данных, а не на конкретную ячейку, так как используется относительная ссылка. К сожалению, нельзя указать в третьем параметры ссылку на одну ячейку – строка заголовка полей все равно требуется, хотя и может быть пустой.
В принципе, функции типа DSUM являются устаревшим методом работы с данными, в подавляющем большинстве случаев лучше использовать SUMIF, SUMPRODUCT или формулы обработки массивов. Но иногда их применение может дать хороший результат, например, при совместном использовании с интерфейсной возможностью «расширенный фильтр» – в обоих случаях используется одинаковое описание условий через дополнительные диапазоны. Суммирование по нескольким критериям
Таблицы с формулами на листе SUM 2 показывают вариант суммирования по нескольким критериям.
=SUMIF(A:A;B5 & ";" & C5;data!M:M)
Операция «&» используется для соединения строк. Можно также вместо этого оператора использовать функцию CONCATENATE. Промежуточный символ «;» (или любой другой служебный символ) необходим для обеспечения уникальности сцепленных строковых значений.
Пример: Есть, если два поля с перечнем слов. Пары слов «СТОЛ»-«ОСЬ» и «СТО»-«ЛОСЬ» дают одинаковый ключ «СТОЛОСЬ». Что соответственно даст неверный результат при консолидации данных. При использовании служебного символа комбинации ключей будут уникальны «СТОЛ;ОСЬ» и «СТО;ЛОСЬ», что обеспечит корректность вычислений.
Использовать подобную методику создания уникального ключа можно не только для строковых, но и для числовых целочисленных полей.
Второй пример – это популярный вариант использования функции SUMPRODUCT с проверкой условий в виде логического выражения:
SUM!D13
=SUMPRODUCT((data!$H$2:$H$3000=B13)data!$M$2:$M$3000)
Обрабатываются все ячейки диапазона (data!$M$2:$M$3000), но для тех ячеек, где условия не выполняются, в суммирование попадает нулевое значение (логическая константа FALSE приводится к числу «0»). Такое использование этой функции близко по смыслу к формулам обработки массива, но не требует ввода через Ctrl+Shift+Enter.
Третий пример аналогичен, описанному использованию функций DSUM для листа SUM, но в нем для диапазона условий использовано несколько полей.
SUM!D21
=IF(E5="";"";SUMPRODUCT((data!$H$2:$H$3000=D5)data!$M$2:$M$3000))
Заключение
Использование функций рабочего листа для консолидации и выборки данных является эффективным методом построения отчетов с обновляемым источником исходных данных. Недостатками этого метода являются повышенные требования к пользователю в части создания сложных формул, а также низкая производительность в сравнении, например, со сводными таблицами. Последний недостаток зависит от объема исходных данных, сложности формул консолидации и технических возможностей компьютера. В критических случаях рекомендуется использовать ручной режим пересчета формул рабочей книги Excel.

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

Встроенные возможности для обработки массивов данных в PHP.  Функция array_sum() предназначена для вычисления суммы элементов массива. 1 марта 2011

Удаляет из массива скаляров последний элемент и возвращает его значение. Если массив пустой, то возвращает неопределенное значение undef. pop МАССИВ pop (в основной программе эквивалентно pop @ARGV) pop