Изменение числовых форматов полей данных сводной таблицы с использованием диапазона или массива - PullRequest
0 голосов
/ 06 ноября 2019

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

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

Public Sub CreatePivotFormatterTab()

    Set pt = Sheets("Workings").PivotTables(1)
    Set newSheet = Sheets.Add

    newSheet.Name = "PivotFormatter"

    newSheet.Cells(1, 1).Value = "Header"
    newSheet.Cells(1, 2) = "Format"
    newSheet.Cells(1, 3) = "NewFormat"

    i = 1

    For Each pf In pt.PivotFields

        On Error Resume Next
        i = i + 1
        newSheet.Cells(i, 1).Value = pf.Name
        newSheet.Cells(i, 2).Value = pf.NumberFormat

        Next

End Sub

После того, как пользователь вводит конкретные числовые форматы, которые он хочет изменить, как мне получить сводную таблицу для чтенияво входных данных пользователя и соответственно измените NumberFormat (и если пользовательский ввод не предоставлен, по умолчанию используется существующий NumberFormat)?

Я думал о создании массива на вкладке PivotFormatter:

Public Sub CreatePivotFormatArray()
    'Create Range
    Set Headers = Range("A1:C1")
    Set PFR = _
    Range(Headers.Offset(1), Headers.Offset(1).End(xlDown))
    'Read the Range into an Array
     PFA = PFR.Value
End Sub

Но я не знаю, как изменить числовые форматы для каждого поля сводки на введенный пользователем числовой формат.

...