Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot несколько вопросов / 17 сообщений из 17, страница 1 из 1
24.11.2009, 13:09
    #36328216
Nemoxur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Добрый день уважаемые коллеги.
Я практически VBA не знаю, поэтому возникло несколько вопросов
1. Если таблица с данными, т.е. колонки A,B,C,D имеют различное количество строк (выгружается разное колличество сторок), как
это можно определять в макросе, что бы он брал количество строк динамически, т.е. не пустые SourceData:= R1C1:R6C4 что тут надо написать?

Как сделать шапку в сводной таблице тип шрифта жирным?
Тоже самое с под итогами
ActiveSheet.PivotTables("Svodnaya").PivotSelect "'что тут писать?'", xlDataAndLabel, True
Excel.Application.Selection.Font.Bold = True

Макрос в примере excel есть
...
Рейтинг: 0 / 0
24.11.2009, 13:41
    #36328301
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
как
это можно определять в макросе, что бы он брал количество строк динамически
-
например
Код: plaintext
1.
2.
3.
4.
rcnt = ActiveSheet.UsedRange.Rows.Count
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C14:R" & rcnt & "C20").CreatePivotTable TableDestination:=Range("A3"), _
TableName:="PivotTable1"
...
Рейтинг: 0 / 0
24.11.2009, 14:04
    #36328393
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
ЧТобы динамический диапазон сделать воспользуйтесь именами (вставка - имя - присвоить) Поищите на форуме про динамические именованные диапазоны, создайте себе такой и в исходных данных сводной таблицы напишите =ИмяДиапазона
...
Рейтинг: 0 / 0
24.11.2009, 14:26
    #36328483
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Nemoxur
Как сделать шапку в сводной таблице тип шрифта жирным?
Тоже самое с под итогами

Код: plaintext
1.
2.
3.
4.
With ActiveSheet.PivotTables( 1 )
.RowRange.Rows( 1 ).Font.Bold = True
.ColumnRange.Font.Bold = True
.TableRange1.Rows(.TableRange1.Rows.Count).Font.Bold = True
End With
Вот так сделать жирным шапку и строку итогов, но это частный случай. нужно смотреть конкретно. Может не быть ColumnRange, может быть не одна строка итогов, это нужно учитывать.
С PivotSelect можете сами поэксперементировать, предварительно включив запись макроса и посмотреть что получается.
...
Рейтинг: 0 / 0
24.11.2009, 15:44
    #36328722
Nemoxur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Большое спасибо за подсказку про динамический диапазон, не знал что это такое,сделал, красиво работает )))

Я включал запись макроса но как сделать что бы покрасил например шапку, а не именнованый столбец? В свойствах сводной таблицы нигде не нашёл (
...
Рейтинг: 0 / 0
24.11.2009, 16:25
    #36328874
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Nemoxur
Я включал запись макроса но как сделать что бы покрасил например шапку, а не именнованый столбец? В свойствах сводной таблицы нигде не нашёл (
С моим примером получилось покрасить или тоже нет?
...
Рейтинг: 0 / 0
24.11.2009, 16:36
    #36328917
Nemoxur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Нет не получилось. Мой макрос
Код: plaintext
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.
Sub mac1()
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Diapazon").CreatePivotTable TableDestination:= _
        Range("F1:F6"), TableName:="Svodnaya", DefaultVersion:= _
        xlPivotTableVersion10
    ActiveWorkbook.ShowPivotTableFieldList = True
    'Заполняем таблицу
    With ActiveSheet.PivotTables("Svodnaya").PivotFields("ФИО")
        .Orientation = xlRowField
        .Position =  1 
    End With
    With ActiveSheet.PivotTables("Svodnaya").PivotFields("Тип")
        .Orientation = xlColumnField
        .Position =  1 
    End With
    With ActiveSheet.PivotTables("Svodnaya").PivotFields("Сервис")
        .Orientation = xlColumnField
        .Position =  2 
    End With
    ActiveSheet.PivotTables("Svodnaya").AddDataField ActiveSheet.PivotTables _
        ("Svodnaya").PivotFields("Время работ"), "Сумма по полю Время работ", _
        xlSum
    ActiveWorkbook.ShowPivotTableFieldList = False
    'Оформляем таблицу
    '1
        ActiveSheet.PivotTables("Svodnaya").PivotSelect "ФИО[All]", xlLabelOnly, True
        Excel.Application.Selection.Interior.ColorIndex =  35 
        Excel.Application.Selection.Font.Bold = True 'Жирный шрифт для подписей групп
        
    '2. Общие итоги
        ActiveSheet.PivotTables("Svodnaya").PivotSelect "'Column Grand Total'", xlDataAndLabel, True
        Excel.Application.Selection.Font.Bold = True 'Жирным
        Excel.Application.Selection.Interior.ColorIndex =  40  'Цвет ячеек - светло-коричневый
        ActiveSheet.PivotTables("Svodnaya").GrandTotalName = "Общее время" 'Подпись
    '3
        ActiveSheet.PivotTables("Svodnaya").PivotSelect "'Row Grand Total'", xlDataAndLabel, True
        Excel.Application.Selection.Font.Bold = True 'Выделяем жирным




End Sub
...
Рейтинг: 0 / 0
24.11.2009, 16:40
    #36328937
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Файл не хотите приложить с примером данных и Вашим макросом? может чево подскажу на конкретном примере.
Макрос точно сократить можно и красивее сделать только лень без примера смотреть.
...
Рейтинг: 0 / 0
24.11.2009, 16:53
    #36328987
Nemoxur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Файл вроде как приложен в первом посте
...
Рейтинг: 0 / 0
24.11.2009, 23:07
    #36329640
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
NemoxurФайл вроде как приложен в первом посте
точно запамятовал
привожу код, который у меня получился, чтобы выполнить тоже что и у Вас, но мой помимо прочего не использует метод PivotSelect , который как и обычный select желательно приметь только когда ничего не осталось, имхо.

Код: plaintext
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.
Sub mac1()
    ActiveWorkbook.PivotCaches.Add(xlDatabase, "Diapazon").CreatePivotTable [F1], "Svodnaya"
 
    With ActiveSheet.PivotTables("Svodnaya")
     'Заполняем таблицу
        .PivotFields("ФИО").Orientation = xlRowField
        .PivotFields("Тип").Orientation = xlColumnField
        .PivotFields("Сервис").Orientation = xlColumnField
        .PivotFields("Время работ").Orientation = xlDataField
        .DataFields( 1 ).Function = xlSum
        .GrandTotalName = "Общее время" 'Подпись
     'Оформляем таблицу
      '1
        With .RowRange.Offset( 1 ).Resize(.RowRange.Rows.Count -  2 )
           .Font.Bold = True
           .Interior.ColorIndex =  35 
        End With
      '2. Общие итоги
        With .TableRange1.Rows(.TableRange1.Rows.Count)
           .Font.Bold = True
           .Interior.ColorIndex =  40 
        End With
      '3
        With .TableRange1.Columns(.TableRange1.Columns.Count)
           .Font.Bold = True
        End With
    End With
    
    ActiveWorkbook.ShowPivotTableFieldList = False
    
End Sub
...
Рейтинг: 0 / 0
25.11.2009, 03:00
    #36329752
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
NemoxurДобрый день уважаемые коллеги.
Я практически VBA не знаю, поэтому возникло несколько вопросов


Как сделать шапку в сводной таблице тип шрифта жирным?
Тоже самое с под итогами


Тож VBA не знаю, но здесь помочь можно, если экс 2007.
Вкладка - конструктор - стиль PD, делайте что хотите и сохраняйте, в дальнейшем можно применять к любой сводной, в 2010 тоже...
...
Рейтинг: 0 / 0
25.11.2009, 10:18
    #36330065
Nemoxur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Что то шапка по вашему макросу не получилась, только итоговый столбец, а хотелось, что бы все под итоги и вся шапка стала другим цветом и шрифт жирный.
...
Рейтинг: 0 / 0
25.11.2009, 10:51
    #36330177
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
NemoxurЧто то шапка по вашему макросу не получилась, только итоговый столбец, а хотелось, что бы все под итоги и вся шапка стала другим цветом и шрифт жирный.

Я делал, то что делает Ваш макрос.
Вы бы показали хоть раз как хотелось бы чтобы выглядело, оно бы сразу стало легче.
...
Рейтинг: 0 / 0
25.11.2009, 10:52
    #36330183
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
DeggasadNemoxurЧто то шапка по вашему макросу не получилась, только итоговый столбец, а хотелось, что бы все под итоги и вся шапка стала другим цветом и шрифт жирный.

Я делал, то что делает Ваш макрос.
Вы бы показали хоть раз как хотелось бы чтобы выглядело, оно бы сразу стало легче.

Я имею ввиду приложите один раз файл с таблицей сводной отформатированной как Вам хочется.
...
Рейтинг: 0 / 0
25.11.2009, 11:25
    #36330305
Nemoxur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Вот так хотелось бы
...
Рейтинг: 0 / 0
25.11.2009, 12:29
    #36330518
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Код: plaintext
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.
Sub test()
    ActiveWorkbook.PivotCaches.Add(xlDatabase, "Diapazon").CreatePivotTable [F1], "Svodnaya"
 
    With ActiveSheet.PivotTables("Svodnaya")
     'Заполняем таблицу
        .PivotFields("ФИО").Orientation = xlRowField
        .PivotFields("Тип").Orientation = xlColumnField
        .PivotFields("Сервис").Orientation = xlColumnField
        .PivotFields("Время работ").Orientation = xlDataField
        .DataFields( 1 ).Function = xlSum
        .GrandTotalName = "Общее время" 'Подпись
     'Оформляем таблицу
      '1 подписи строк
        With .RowRange '.Offset(1).Resize(.RowRange.Rows.Count - 2) 'в данном случае не нужно
           .Font.Bold = True
           .Interior.ColorIndex =  35 
        End With
      '2 Шапка
        With .ColumnRange.Offset( 1 , - 1 ).Resize(.ColumnRange.Rows.Count -  1 , .ColumnRange.Columns.Count +  1 )
           .Font.Bold = True
           .Interior.ColorIndex =  40 
        End With
      '3 Общие итоги по столбцам
        With .TableRange1.Rows(.TableRange1.Rows.Count)
           .Font.Bold = True
           .Interior.ColorIndex =  40 
        End With
      '4 Итоги по строке
        With .TableRange1.Columns(.TableRange1.Columns.Count)
           .Font.Bold = True
        End With
    End With
   
    ActiveWorkbook.ShowPivotTableFieldList = False
    
End Sub

В любом случае это всего лишь пример, а дальше на основании него, разобравшись предварительно, вы можете заложить любой алгоритм.
...
Рейтинг: 0 / 0
25.11.2009, 14:27
    #36330933
Nemoxur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot несколько вопросов
Спасибо за помощь!
Далее уж разберусь что к чему )))
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot несколько вопросов / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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