powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не корректное имя поля в сводной таблице
9 сообщений из 9, страница 1 из 1
Не корректное имя поля в сводной таблице
    #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
Не корректное имя поля в сводной таблице
    #39201240
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл
...
Рейтинг: 0 / 0
Не корректное имя поля в сводной таблице
    #39201384
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

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

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

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

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

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

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

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

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

я свой хрустальный шар потерял, поэтому сказать без кода ничего не могу. У меня данное свойство присутствует. Судя по остальным свойствам - Вы пытаетесь взять то, чего нет у того, где этого быть не может. Т.е. скорее всего у вычисляемого поля. А вычисляемые поля обзываются не PivotFields, а CalculatedFields.
...
Рейтинг: 0 / 0
Не корректное имя поля в сводной таблице
    #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
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не корректное имя поля в сводной таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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