Как, используя VBA, добавить поля в область данных сводной таблицы Excel 2010

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

Предположим, создается отчет сводной таблицы, демонстрирующий распределение дохода, который был получен от использования программы для рассылки смс, попробовать ее можно по этому адресу http://alphasms.com.ua/about/send/. В процессе составления сводной таблицы количества отправленных смс нужно просуммировать величину дохода. Если явно не указать выполняемый вид вычисления, Excel просматривает всю электронную таблицу, на основе которой формируется сводная таблица. Если столбцы данных, включающие доход, на 100% числовые, Excel выполняет корректное суммирование. Если хотя бы одна из ячеек пустая или содержит текст, Excel переходит от суммирования к подсчету записей, содержащих сведения о доходе. В итоге получаем противоречивые результаты.

Воспользуйтесь возможностями, предлагаемыми пользователям Excel. Откажитесь от использования аргумента DataFields для метода AddFields. Измените свойство поля на xlDataField. Объекту Function присвойте значение xlSum. В процессе настройки поля данных можно изменить ряд свойств, находящихся водном и том же блоке With…End With. Свойство Position используется в тех случаях, когда в область данных нужно включить несколько полей. Этому свойству присваивается значение 1 (для первого поля), значение 2 (для второго поля) и т.д.

По умолчанию Excel переименовывает перемещенное в область данных поле Доход (Revenue), в результате чего последнее получает немного странное имя Сумма по полю Доход (Sum of Revenue). Если хотите присвоить этому полю более осмысленное имя, воспользуйтесь свойством .Name. Обратите внимание на то, что в качестве имени поля, перемещенного в область данных, вместо недопустимого названия "Доход" можно использовать имя "Доход " (с пробелом в конце).

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

'Настройка полей в области данных
With PT.PivotFields("Доход")
	.Orientation - xkDataField
	.Function = xlSum
	.Position = 1
	.NumberFormat = "#,tt#0"
	.Name = "Доход "
End With
Top