Pivot Table VBA Macro с заголовками, которые меняются

Я работаю над макросом, чтобы создать сводную таблицу. Я работаю так, как есть, но по мере изменения исходных данных мне нужно, чтобы макрос продолжал работать. Заголовки столбцов меняются в зависимости от текущего месяца. Столбцы от A до H всегда одинаковы, поэтому это не проблема, но столбцы I-O представляют текущий месяц, а затем следующие 6 месяцев. Мне нужен макрос, чтобы использовать столбцы I через O в качестве полей данных, а затем соответствующим образом заголовки. Например, мой текущий макрос отображает May, 2012 по November, 2012 и переименовывает их в May и Nov (я использую старые данные для создания этого макроса). Есть ли способ, чтобы макрос создавал поля данных с любыми заголовками в столбцах I до O?

 Sub CreatePivotTable() ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "CP Monthly Data!R1C1:R451C15", Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="", TableName:="PivotTable1", DefaultVersion _ :=xlPivotTableVersion14 ActiveSheet.PivotTables("PivotTable1").Name = "Resource Requests" With ActiveSheet.PivotTables("Resource Requests") .InGridDropZones = True .AllowMultipleFilters = True .RowAxisLayout xlTabularRow End With With ActiveSheet.PivotTables("Resource Requests").PivotFields("Workgroup Name") .PivotItems("ATG").Visible = False .PivotItems("India - ATG").Visible = False .PivotItems("India - Managed Middleware").Visible = False End With With ActiveSheet.PivotTables("Resource Requests").PivotFields("Workgroup Name") .Orientation = xlPageField .Position = 1 End With With ActiveSheet.PivotTables("Resource Requests").PivotFields("Company name") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("Resource Requests").PivotFields( _ "Probability Status") .PivotItems("X - Lost - 0%").Visible = False .PivotItems("X - On Hold - 0%").Visible = False End With With ActiveSheet.PivotTables("Resource Requests").PivotFields( _ "Probability Status") .Orientation = xlRowField .Position = 2 End With With ActiveSheet.PivotTables("Resource Requests").PivotFields("Project") .Orientation = xlRowField .Position = 3 End With With ActiveSheet.PivotTables("Resource Requests").PivotFields("Project manager" _ ) .Orientation = xlRowField .Position = 4 End With ActiveSheet.PivotTables("Resource Requests").PivotFields("Resource name"). _ PivotFilters.Add Type:=xlCaptionBeginsWith, Value1:="*TBD" With ActiveSheet.PivotTables("Resource Requests").PivotFields("Resource name") .Orientation = xlRowField .Position = 5 End With ActiveSheet.PivotTables("Resource Requests").TableStyle2 = "PivotStyleMedium4" ActiveSheet.PivotTables("Resource Requests").AddDataField ActiveSheet. _ PivotTables("Resource Requests").PivotFields("May, 2012"), "May" _ , xlSum ActiveSheet.PivotTables("Resource Requests").AddDataField ActiveSheet. _ PivotTables("Resource Requests").PivotFields("June, 2012"), _ "June", xlSum ActiveSheet.PivotTables("Resource Requests").AddDataField ActiveSheet. _ PivotTables("Resource Requests").PivotFields("July, 2012"), _ "July", xlSum ActiveSheet.PivotTables("Resource Requests").AddDataField ActiveSheet. _ PivotTables("Resource Requests").PivotFields("August, 2012"), _ "August", xlSum ActiveSheet.PivotTables("Resource Requests").AddDataField ActiveSheet. _ PivotTables("Resource Requests").PivotFields("September, 2012"), _ "September", xlSum ActiveSheet.PivotTables("Resource Requests").AddDataField ActiveSheet. _ PivotTables("Resource Requests").PivotFields("October, 2012"), _ "October", xlSum ActiveSheet.PivotTables("Resource Requests").AddDataField ActiveSheet. _ PivotTables("Resource Requests").PivotFields("November, 2012"), _ "November", xlSum Range("B6").Select ActiveSheet.PivotTables("Resource Requests").PivotFields("Probability Status"). _ Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _ False, False) Range("C7").Select ActiveSheet.PivotTables("Resource Requests").PivotFields("Project").Subtotals _ = Array(False, False, False, False, False, False, False, False, False, False, False, False _ ) Range("D7").Select ActiveSheet.PivotTables("Resource Requests").PivotFields("Project manager"). _ Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _ False, False) Range("A18").Select ActiveSheet.PivotTables("Resource Requests").PivotFields("Company name"). _ Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _ False, False) ActiveSheet.PivotTables("Resource Requests").PivotFields("Probability Status"). _ AutoSort xlDescending, "Probability Status" ActiveSheet.PivotTables("Resource Requests").PivotFields("Resource name"). _ AutoSort xlAscending, "Resource name" End Sub 

это будет работать, хотя с текущей даты до 6 месяцев после:

 Dim DVal As Date Dim DLoop As Integer DVal = Now() ' or whatever date you want to start at For DLoop = 0 To 6 '0=now, to 6 months after ActiveSheet.PivotTables("Resource Requests").AddDataField ActiveSheet.PivotTables("Resource Requests").PivotFields (Format(DateAdd("m", DLoop, DVal), "mmm, yyyy")), _ Format(DateAdd("m", DLoop, DVal), "mmm"), _ xlSum Next DLoop 
  • Apache POI - развернуть все / свернуть все
  • EPPlus: динамическая сводная таблица с использованием внешнего подключения
  • Использование COUNTIF по столбцу вместо строк для нескольких раундов
  • Как «Добавить эти данные в модель данных?» И сделать данные в значениях разными?
  • Таблица сводной таблицы Excel: вычисленное поле, основанное только на первой строке группы
  • Ошибка ChangePivotCache, указывающая на ошибку несоответствия типа
  • Подсчет значений значений
  • Powershell Excel PivotFilters.Add
  • Каков наилучший способ использования VBA для чтения из сводной таблицы, а затем для печати значений и промежуточных итогов на другой лист?
  • Найти средний интервал между датами в сводной таблице
  • Excel Powerpivot / Slicer: динамически выбирает переменную диаграммы
  • Interesting Posts

    найти размер внешнего монитора в excel vba

    Получение символов вопроса (?) При чтении файла по строкам в рабочий лист

    Добавление нескольких вложений, когда число вложений меняется

    Метод «Диапазон» объекта «Глобал» сбой при запуске во второй раз

    FormatNumber заменить Decimal запятой, используя SpreadsheetGear dll

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

    Python: вытащить потоковые данные Excel в dataframe

    Фильтр XPath для получения списка и оставьте несколько свойств с тем же именем свойства

    Как найти дубликат, не используя Find и Replace в MS WORD

    как рассчитать ненулевые значения без разрыва

    Создание переменных в цикле

    Создание выпадающего списка только в том случае, если одна ячейка пуста

    Экспорт свойств файла XSD в Excel

    Запуск одного и того же обработчика событий для нескольких комбинированных ящиков

    Макросъемка через ячейки с аналогичным значением / продуктом и отправка этого диапазона электронной почты

    Давайте будем гением компьютера.