Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макросом создать сводные таблицы на всех листах - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макросом создать сводные таблицы на всех листах (Макросы/Sub)
Макросом создать сводные таблицы на всех листах
Gjlhzl Дата: Четверг, 09.03.2023, 13:34 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Требуется из диапазонов на каждом листе создать сводные таблицы
(продолжение предыдущей темы)
К сообщению приложен файл: 2946990.xlsb (185.2 Kb)


Сообщение отредактировал Gjlhzl - Четверг, 09.03.2023, 13:35
 
Ответить
СообщениеТребуется из диапазонов на каждом листе создать сводные таблицы
(продолжение предыдущей темы)

Автор - Gjlhzl
Дата добавления - 09.03.2023 в 13:34
Nic70y Дата: Четверг, 09.03.2023, 17:26 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Sub u_744()
    Application.ScreenUpdating = False
    For c = 2 To Sheets.Count
        Sheets(c).Rows("1").Insert Shift:=xlDown
        Sheets(c).Range("a1:p1") = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
        a = Sheets(c).Cells(Rows.Count, "d").End(xlUp).Row
        d = Sheets(c).Name
        Set b = Sheets(c).Range("a1:p" & a)
        ActiveWorkbook.PivotCaches.Create(xlDatabase, "'" & d & "'!A1:P" & a).CreatePivotTable "'" & d & "'!R9C18", TableName:="j_" & c
        With Sheets(c).PivotTables("j_" & c).PivotFields("4")
            .Orientation = xlRowField
            .Position = 1
        End With
        With Sheets(c).PivotTables("j_" & c).PivotFields("14")
            .Orientation = xlRowField
            .Position = 2
        End With
        Sheets(c).PivotTables("j_" & c).AddDataField Sheets(c).PivotTables("j_" & c). _
            PivotFields("14"), "u", xlCount
        With Sheets(c).PivotTables("j_" & c).PivotFields("u")
            .Caption = "Сумма"
            .Function = xlSum
        End With
        With Sheets(c).PivotTables("j_" & c).PivotFields("4")
            For j = 1 To .PivotItems.Count
                k = .PivotItems(j).Value
                If k = "      ЗАРАБОТНАЯ ПЛАТА" _
                    Or k = "      МАТЕРИАЛЫ" _
                    Or k = "      ОХР/ОПР, ПЛАНОВАЯ ПРИБЫЛЬ" _
                    Or k = "      ТРАНСПОРТ" _
                    Or k = "      ЭКСПЛУАТАЦИЯ МАШИН" Then
                   .PivotItems(j).Visible = True
                Else
                   .PivotItems(j).Visible = False
                End If
            Next
        End With
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 14.xlsb (473.6 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение[vba]
Код
Sub u_744()
    Application.ScreenUpdating = False
    For c = 2 To Sheets.Count
        Sheets(c).Rows("1").Insert Shift:=xlDown
        Sheets(c).Range("a1:p1") = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
        a = Sheets(c).Cells(Rows.Count, "d").End(xlUp).Row
        d = Sheets(c).Name
        Set b = Sheets(c).Range("a1:p" & a)
        ActiveWorkbook.PivotCaches.Create(xlDatabase, "'" & d & "'!A1:P" & a).CreatePivotTable "'" & d & "'!R9C18", TableName:="j_" & c
        With Sheets(c).PivotTables("j_" & c).PivotFields("4")
            .Orientation = xlRowField
            .Position = 1
        End With
        With Sheets(c).PivotTables("j_" & c).PivotFields("14")
            .Orientation = xlRowField
            .Position = 2
        End With
        Sheets(c).PivotTables("j_" & c).AddDataField Sheets(c).PivotTables("j_" & c). _
            PivotFields("14"), "u", xlCount
        With Sheets(c).PivotTables("j_" & c).PivotFields("u")
            .Caption = "Сумма"
            .Function = xlSum
        End With
        With Sheets(c).PivotTables("j_" & c).PivotFields("4")
            For j = 1 To .PivotItems.Count
                k = .PivotItems(j).Value
                If k = "      ЗАРАБОТНАЯ ПЛАТА" _
                    Or k = "      МАТЕРИАЛЫ" _
                    Or k = "      ОХР/ОПР, ПЛАНОВАЯ ПРИБЫЛЬ" _
                    Or k = "      ТРАНСПОРТ" _
                    Or k = "      ЭКСПЛУАТАЦИЯ МАШИН" Then
                   .PivotItems(j).Visible = True
                Else
                   .PivotItems(j).Visible = False
                End If
            Next
        End With
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 09.03.2023 в 17:26
Gjlhzl Дата: Четверг, 09.03.2023, 22:17 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, спасибо большое...все отлично работает!
 
Ответить
СообщениеNic70y, спасибо большое...все отлично работает!

Автор - Gjlhzl
Дата добавления - 09.03.2023 в 22:17
Nic70y Дата: Пятница, 10.03.2023, 07:33 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
это
Set b = Sheets©.Range("a1:p" & a)
лишняя строка. забыл удалить


ЮMoney 41001841029809
 
Ответить
Сообщениеэто
Set b = Sheets©.Range("a1:p" & a)
лишняя строка. забыл удалить

Автор - Nic70y
Дата добавления - 10.03.2023 в 07:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макросом создать сводные таблицы на всех листах (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!