Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2010, 08:39   #1
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию Сводная таблица с двух листов не выводит нужные данные

Здравствуйте!
Образовалась такая проблема: есть база, но количество строк превышает допустимый предел, и остатки строк приходится переносить на другой лист с теми же наименованиями столбцов. Когда создаешь сводную таблицу на основе одного листа, то сводая таблица создается в таком виде, как надо. А если собирать с двух листов - совсем другой вид и не то суммируется. Я записала макрос создания сводной таблицы, которая собирает с одного листа.
Существует ли возможность создать сводную таблицу с двух листов в таком виде, как с одного? Если да, то как? Пример прикреписть не могу, запрет на загрузку файлов.
Код:
Sub Сводная_Таблица_Общая()
' Макрос записан 21.04.2010 ()
'
ПоследняяСтрока = Лист1.Cells(Лист1.Rows.Count, 1).End(xlUp).Row
'
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Лист1!R1C1:R" & ПоследняяСтрока & "C12").CreatePivotTable TableDestination:="", TableName:= _
        "СводнаяТаблица1", DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
    ActiveSheet.Cells(3, 1).Select
    ActiveWorkbook.ShowPivotTableFieldList = False
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Cтатья затрат")
        .Orientation = xlRowField
        .Position = 1
        .LayoutBlankLine = True
        .LayoutSubtotalLocation = xlAtTop
        .LayoutForm = xlOutline
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Счет затрат")
        .Orientation = xlRowField
        .Position = 2
        .Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Подразделение")
        .Orientation = xlRowField
        .Position = 3
        .LayoutSubtotalLocation = xlAtTop
        .LayoutForm = xlOutline
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Передел")
        .Orientation = xlRowField
        .Position = 4
    End With
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Месяц")
        .Orientation = xlColumnField
        .Position = 1
    End With
    ActiveSheet.PivotTables("СводнаяТаблица1").AddDataField ActiveSheet.PivotTables _
        ("СводнаяТаблица1").PivotFields("Сумма"), "Количество по полю Сумма", xlCount
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "Количество по полю Сумма")
        .Function = xlSum
        .NumberFormat = _
        "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
    End With
        Columns("C:C").ColumnWidth = 1.29
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotSelect _
        "'Cтатья затрат'", xlDataAndLabel + _
        xlFirstRow, True
    Selection.Font.Bold = True
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotSelect _
        "'Подразделение'", xlDataAndLabel + _
        xlFirstRow, True
    Selection.Font.Bold = True
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotSelect "'Column Grand Total'", _
        xlDataAndLabel, True
    Selection.Font.Bold = True
End Sub
kipish_lp вне форума Ответить с цитированием
Старый 26.04.2010, 09:51   #2
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от kipish_lp Посмотреть сообщение
Существует ли возможность создать сводную таблицу с двух листов в таком виде, как с одного? Если да, то как?
Да.
http://www.planetaexcel.ru/forum.php?thread_id=14556
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 26.04.2010, 12:46   #3
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

А подскажите, пожалуйста, как в сводной таблице, которая сделана на основе данных предыдущей сводной таблицы, задать имя данной книги "эта книга" в смысле ActiveWorkbook, а то когда записывается макрос, имя книги прописывается.
Код:
 ActiveWorkbook.Worksheets("Лист2").PivotTables("СводнаяТаблица1").PivotCache. _
        CreatePivotTable TableDestination:= _
        "'[Пример объединения данных.xls]Лист2'!R109C3", TableName:= _
        "СводнаяТаблица2", DefaultVersion:=xlPivotTableVersion10
Пробовала писать:
Код:
ЭтаКнига = ActiveWorkbook
'
"'[ЭтаКнига]Лист2'!R109C3"
Не дает, и ThisWorkbook не получается. Может потому, что возвращается название данной книги с ковычками? Что можно сделать?
kipish_lp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сводная таблица. Данные smakhankov Microsoft Office Excel 0 14.10.2009 17:06
Сводная таблица Yanata Microsoft Office Excel 0 27.07.2009 22:31
Сводная Таблица winfacks Microsoft Office Excel 4 18.12.2008 11:21
Сводная таблица Shonny Microsoft Office Excel 2 14.02.2008 16:48
Сводная таблица Галина Microsoft Office Excel 3 01.11.2007 20:01