Я не знаю, возможно ли это, но я пытаюсь создать макрос, который добавляет все поля поворота в раздел значений сводной таблицы как либо числа или проценты.Excel VBA Проверьте, должно ли поле поворота быть отформатировано как число или процент
Вот то, что я до сих пор:
If MsgBox("Do you want to add all pivot table fields as values?", vbOKCancel + vbQuestion, "Accept/Reject") = vbCancel Then
Exit Sub
End If
Dim pt As PivotTable
Dim pf As PivotField
Dim pivotTableName As String
On Error Resume Next
Set pt = ActiveCell.PivotTable
If pt Is Nothing Then
pivotTableName = InputBox("Enter the pivot table name.")
Set pt = ActiveSheet.PivotTables(pivotTableName)
End If
For Each pf In pt.PivotFields
pt.AddDataField pt.PivotFields(pf.Name), pf.Name & " ", xlSum
pt.PivotFields(pf.Name & " ").NumberFormat = "#,##0"
Next pf
Но затем я хотел бы добавить, если заявление, чтобы увидеть, должно ли поле быть отформатирован в процентах вместо. Мои идеи были:
Проверить одно значение записи в поле, чтобы увидеть, если он составляет менее 100% (или 1) (это было бы идеально в 95% ситуаций, я нахожусь в)
Убедитесь, что сумма поля меньше, чем произвольное число таких как < 100 (не идеальный)
Проверьте, если имя поля имеет% в нем (то, что я, возможно, придется пойти с)
Для каждого fld i п pt.PivotFields
Если InStr (fld.Value, "%") Тогда
Следующая
Проверьте, если поле является вычисляемое поле (не совершенен)
Для каждого FLD в pt.PivotFields
Если fld.IsCalculated Тогда
Следующая
Возможны ли первые два? Кто-нибудь имеет лучшие идеи?
Спасибо!
P.S. Еще одна вещь, которую я заинтересован в том, чтобы проверить, содержит ли поле текст или, возможно, поле не может быть суммировано.
пока кто-то не дает лучший ответ, вы можете заглянуть в зацикливание по пунктам PivotField https://msdn.microsoft.com/en-us/library/office/ff820762.aspx (возможно, pivotTable1.ColumnFields (1) .ChildItems (1) .Value) – Slai
Спасибо за это, я думаю, что у меня есть идея, я попробую суммировать поле, если ошибка, тогда это должен быть текст иначе после добавления su mmed в сводную таблицу, проверьте его значение, а затем отформатируйте его. –
Сумма игнорирует текстовые значения, но вы можете найти другую функцию, которая этого не делает. Я подумывал пропустить значения pivotField один за другим, чтобы проверить и суммировать их – Slai