Я работаю над очень длинным макросом для своей работы, и я почти закончила, но это последняя часть, и, независимо от того, что я делаю, я не могу найти решение. В этой сводной таблице мне нужно иметь "Менеджеры" в качестве столбцов и все остальное (т.е. все месяцы) в разделе "Значения" с "Значениями" в качестве строк. После перебора кажется, что все поля зарегистрированы как CubeFields вместо PivotFields. Когда я запускаю это, как только добираюсь до.Orientation = xlDataField, выдает «Ошибка времени выполнения 5 ...Недопустимый вызов процедуры или аргумент. "Мне также нужно убедиться, что эти поля данных усреднены и имеют определенный числовой формат. Ничто из того, что я делаю, не работает, и любые рекомендации / исправления / обходные пути будут с благодарностью! Ниже приведены макрос и ссылка на скачивание файла для мастеринга.
Dim pvtTable As PivotTable
Dim cubField As CubeField
Dim i As Long
Dim cubName As String
Set pvtTable = ActiveSheet.PivotTables(1)
For Each cubField In pvtTable.CubeFields
For i = 1 To pvtTable.CubeFields.Count
With pvtTable.CubeFields(i)
If .Name = "[effRent_perBed].[Manager]" Then
.Orientation = xlColumnField
Else:
.Orientation = xlDataField
'has to be averaged
'has to have number format of ##0.00
End If
End With
Next
Next
Это редактирование, которое я пытался сделать, основываясь на макросе записи. Он помещает поле в поле значений, но его невозможно изменить на среднее. Он просто перечисляет все значения как «1 (проверьте изображение на визуальное). Когда я доберусь до.Function = xlAverage, говорится, что ошибка 1004: невозможно установить свойство Function класса PivotField.
If Name = "[effRent_perBed].[Manager]" Then
.Orientation = xlColumnField
Else:
With ActiveSheet.PivotTables(1)
.AddDataField ActiveSheet.PivotTables(1) _
CubeFields(cubName), _
"Average of " & cubName
End With
With ActiveSheet.PivotTables(1).PivotFields(cubName)
.Caption = "Average of " & cubName
.Function = xlAverage
End With
Когда я использую устройство записи макросов, чтобы добавить что-то в поле данных, я получаю это:
ActiveSheet.PivotTables("effRent_perBed_Pivot").CubeFields.GetMeasure _
"[effRent_perBed].[Jan-16]", xlSum, "Sum of Jan-16"
ActiveSheet.PivotTables("effRent_perBed_Pivot").AddDataField ActiveSheet. _
PivotTables("effRent_perBed_Pivot").CubeFields("[Measures].[Sum of Jan-16]"), _
"Sum of Jan-16"
With ActiveSheet.PivotTables("effRent_perBed_Pivot").PivotFields( _
"[Measures].[Sum of Jan-16]")
.Caption = "Average of Jan-16"
.Function = xlAverage
End With
Это копия файла, над которым я работаю. Он показывает необработанную сводную таблицу, а затем готовый продукт. Я должен сделать это для 3 листов, поэтому я должен циклически проходить каждый лист. https://drive.google.com/uc?export=download&id=1NLGg8DVEMHnB2Ad7NAKWySevq8naqFjr
Это также размещено на других форумах (мне нужно как можно скорее взглянуть на это)https://www.excelforum.com/excel-programming-vba-macros/1222588-unable-to-add-cubefield- pivotfield-а-а-данных поля-в-vba.html # post4856940