Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не корректное имя поля в сводной таблице / 9 сообщений из 9, страница 1 из 1
26.03.2016, 20:12
    #39201238
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректное имя поля в сводной таблице
Здравствуйте!

Когда добавляешь поле "Выполнили план" и указывам тип агрегатной функции - xlSum, то в имени остается "Количество ...", а не "Сумма ...". Это нормально?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Sub Тест()
    Dim PTCache As PivotCache
    Dim PT As PivotTable
    
    Set PTCache = ThisWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=ThisWorkbook.Worksheets("Лист1").Range("A1:D9"))

    Set PT = ThisWorkbook.Sheets("Лист1").PivotTables.Add( _
        PivotCache:=PTCache, _
        TableDestination:=ThisWorkbook.Sheets("Лист1").Cells(12, 1), _
        TableName:="СТ")
            
    With PT.PivotFields("Клиент")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    With PT.PivotFields("ТТ")
        .Orientation = xlDataField
        .Function = xlCount
        .Position = 1
    End With
    
    With PT.PivotFields("Выполнили план")
        .Orientation = xlDataField
        'Указываем сумму,
        'но в пользовательском имени выходит "Количество по полю Выполнили план"
        'вместо
        '"Сумма по полю Выполнили план"
        .Function = xlSum
        .Position = 2
    End With
    
    'Меняем имя поля
    PT.PivotFields("Количество по полю Выполнили план").Caption = "Кол-во выполнивших план"
    
    With PT.PivotFields("Отгрузки")
        .Orientation = xlDataField
        .Function = xlSum
        .Position = 3  
    End With
    
End Sub


Может код надо по другому писать, чтобы в начале имени соответствовало типу агрегации?
...
Рейтинг: 0 / 0
26.03.2016, 20:16
    #39201240
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректное имя поля в сводной таблице
Файл
...
Рейтинг: 0 / 0
27.03.2016, 13:36
    #39201384
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректное имя поля в сводной таблице
ferzmikk,

это нормально, т.к. в этом поле нет числовых значений для суммирования. Поэтому сводная при добавлении поля автоматом делает для него функцию "Количество", а не "Сумма", т.к. суммировать нечего(там же текст). И уже только после этого Вы меняете функцию поля, но заголовок поля остается таким, каким был создан по умолчанию.

Попробуйте вручную создать - получите тоже самое. Только при изменении функции поля Excel сам меняет заголовок с Количество на Сумма. Если же это делается кодом - надо менять принудительно.
...
Рейтинг: 0 / 0
27.03.2016, 16:43
    #39201462
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректное имя поля в сводной таблице
Понятно.

Тут еще два вопроса.

1. Программно строю сводную таблицу. Добавляю разные поля значений. Возможно определить какое поле сводной таблицы расположено в столбце листа? То есть определенное поле находится в колонке "F".

2. Возможно ли через свойства сводной таблицы заливать цветом заголовки полей?
...
Рейтинг: 0 / 0
27.03.2016, 17:09
    #39201470
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректное имя поля в сводной таблице
ferzmikk,

1. Перебирайте поля сводной и проверяйте свойство DataRange, чтобы узнать адрес его расположения или еще что.
2. Нет. Только через УФ и то не во всех версиях Excel. Изменить заливку можно для ячеек листа, без привязки к сводной, по сути.
...
Рейтинг: 0 / 0
27.03.2016, 17:10
    #39201471
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректное имя поля в сводной таблице
ferzmikkВозможно ли через свойства сводной таблицы заливать цветом заголовки полей?Да, если заголовки - то можно применить стили(Конструктор -Стили сводной таблицы) и туда запихать какой угодно цвет заголовков.
...
Рейтинг: 0 / 0
27.03.2016, 20:11
    #39201534
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректное имя поля в сводной таблице
The_Pristferzmikk,

1. Перебирайте поля сводной и проверяйте свойство DataRange, чтобы узнать адрес его расположения или еще что.

Пишет "невозможно получить свойство"
...
Рейтинг: 0 / 0
27.03.2016, 20:18
    #39201540
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректное имя поля в сводной таблице
ferzmikk,

я свой хрустальный шар потерял, поэтому сказать без кода ничего не могу. У меня данное свойство присутствует. Судя по остальным свойствам - Вы пытаетесь взять то, чего нет у того, где этого быть не может. Т.е. скорее всего у вычисляемого поля. А вычисляемые поля обзываются не PivotFields, а CalculatedFields.
...
Рейтинг: 0 / 0
30.03.2016, 17:48
    #39204400
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректное имя поля в сводной таблице
The_Pristferzmikk,

я свой хрустальный шар потерял, поэтому сказать без кода ничего не могу. У меня данное свойство присутствует. Судя по остальным свойствам - Вы пытаетесь взять то, чего нет у того, где этого быть не может. Т.е. скорее всего у вычисляемого поля. А вычисляемые поля обзываются не PivotFields, а CalculatedFields.
Да, это вычисляемое поле.

PivotFields отображают свойства DataRange.

Только вот в отладчике если развернуть PT(4), то показывает name - "Вывод Возвраты", а вот когда пишешь так PT(4).CalculatedFields("Вывод Возвраты") или PT(4).CalculatedFields(8), то показывает ошибку. И свойства DataRange недоступны.

Почему так?

Фрагмент кода

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Set PT(1) = ThisWorkbook.Sheets("Лист1").PivotTables.Add( _
        PivotCache:=PTCache, _
        TableDestination:=ThisWorkbook.Sheets("Лист1").Cells(3, 1), _
        TableName:=PT_UbitokAKB)

' так добавляю вычисляемое поле
' В массиве несколько сводных таблиц. Добавляя вычисляемые меры в первую, появляются и в других
PT(1).CalculatedFields.Add name, "= ...", True
...   
Set PT(4) = ThisWorkbook.Sheets("Лист4").PivotTables.Add( _
        PivotCache:=PTCache, _
        TableDestination:=ThisWorkbook.Sheets("Лист4").Cells(3, 1), _
        TableName:=PT_Detal)

PT(4).RowAxisLayout xlTabularRow
PT(4).HasAutoFormat = False
...
'значения добавляются так
...
    PT(4).AddDataField PT(4).PivotFields("Процент возврата "), "Процент возврата ", xlSum ' Перенаименовываем, в конце пробел
    PT(4).PivotFields("Процент возврата ").Position = 5       
...
'вычисляемые поля добавляются так
...
    PT(4).AddDataField PT(4).PivotFields("Вывод возвраты "), "Вывод возвраты ", xlSum ' Перенаименовываем, в конце пробел
    PT(4).PivotFields("Вывод возвраты ").Position = 10           
...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не корректное имя поля в сводной таблице / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]