Я не очень часто использовал сводные таблицы, и я пытаюсь создать одну в VBA для анализа определенного поля («Состояние») данных, которые я регулярно импортирую. Данные, сгенерированные сводной таблицей, будут накапливаться отдельно и отображаться для отображения тенденций во времени. Я создал таблицу для импортированных данных, но у меня не получилось создать сводную таблицу из данных, включающих поля, которые я хочу в сводной таблице.
Private Sub CreatePivot(tbl As ListObject)
Dim ws As Worksheet
Dim pc As PivotCache
Dim pt As PivotTable
Set ws = Worksheets.Add
ws.Name = "Temp"
Set pc = ActiveWorkbook.PivotCaches.Create(xlDatabase, tbl.Range.Address(False, False, xlA1, xlExternal))
Set pt = pc.CreatePivotTable(ws.Range("B3"))
pt.Name = "CurrentSPRStatus"
With pt
With .PivotFields("Status")
.Orientation = xlColumnField
.Position = 1
End With
.AddDataField .PivotFields("Status"), "Count of Status", xlCount
End With
End Sub
Поле «Состояние» содержит около 15 значения, и я хочу определить количество для каждого значения, чтобы я мог накапливать его на другом листе. Когда я шагаю по коду, «Состояние» добавляется как поле столбца в списке полей сводной таблицы, как и ожидалось. Но я ожидаю, что второй «Статус» будет добавлен в качестве счетчика. Вместо этого поле «Состояние» изменяется с поля столбца на поле значения.
Я записал макрос и использовал сгенерированный код (массируемый, чтобы избежать использования Select
методов), но я не могу получить два сгенерированных поля. Это, наверное, что-то очевидное, но я не вижу этого.