Автофильтр для сводных таблиц
argetlam
Дата: Вторник, 28.10.2014, 16:51 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Доброе время суток. Необходимо, чтобы фильтры нескольких таблиц соответствовали значениям определенных ячеек. То есть если поменять значения в ячейках, то и фильтры изменятся. Нашел код для одного значения, но он мне не подходит: [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False: Application.DisplayAlerts = False If Target.Address = "$F$1" Then Dim z, x As String z = Sheets("Свод").[F1].Value Sheets("Свод").PivotTables("Сводная таблица3").PivotFields("Дата").CurrentPage = z End If Application.ScreenUpdating = True ': Application.DisplayAlerts = True End Sub
[/vba]
Доброе время суток. Необходимо, чтобы фильтры нескольких таблиц соответствовали значениям определенных ячеек. То есть если поменять значения в ячейках, то и фильтры изменятся. Нашел код для одного значения, но он мне не подходит: [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False: Application.DisplayAlerts = False If Target.Address = "$F$1" Then Dim z, x As String z = Sheets("Свод").[F1].Value Sheets("Свод").PivotTables("Сводная таблица3").PivotFields("Дата").CurrentPage = z End If Application.ScreenUpdating = True ': Application.DisplayAlerts = True End Sub
[/vba] argetlam
К сообщению приложен файл:
123.xlsx
(16.7 Kb)
Ответить
Сообщение Доброе время суток. Необходимо, чтобы фильтры нескольких таблиц соответствовали значениям определенных ячеек. То есть если поменять значения в ячейках, то и фильтры изменятся. Нашел код для одного значения, но он мне не подходит: [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False: Application.DisplayAlerts = False If Target.Address = "$F$1" Then Dim z, x As String z = Sheets("Свод").[F1].Value Sheets("Свод").PivotTables("Сводная таблица3").PivotFields("Дата").CurrentPage = z End If Application.ScreenUpdating = True ': Application.DisplayAlerts = True End Sub
[/vba] Автор - argetlam Дата добавления - 28.10.2014 в 16:51
gling
Дата: Среда, 29.10.2014, 07:29 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2663
Репутация:
747
±
Замечаний:
0% ±
2010
Здравствуйте. Придумка в файле, может как то доработаете.
Здравствуйте. Придумка в файле, может как то доработаете. gling
ЯД-41001506838083
Ответить
Сообщение Здравствуйте. Придумка в файле, может как то доработаете. Автор - gling Дата добавления - 29.10.2014 в 07:29
argetlam
Дата: Среда, 29.10.2014, 13:23 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Спасибо! А можно с комментариям по строкам?) не могу разобраться, как работает привязка к ячейкам на листе(
Спасибо! А можно с комментариям по строкам?) не могу разобраться, как работает привязка к ячейкам на листе( argetlam
Ответить
Сообщение Спасибо! А можно с комментариям по строкам?) не могу разобраться, как работает привязка к ячейкам на листе( Автор - argetlam Дата добавления - 29.10.2014 в 13:23
argetlam
Дата: Среда, 29.10.2014, 15:32 |
Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Решил вот таким способом:
[vba]
Код
Sub фильтры_сводных() n1 = Sheets("сводные").Range("E1").Value n2 = Sheets("сводные").Range("F1").Value n3 = Sheets("сводные").Range("G1").Value n4 = Sheets("сводные").Range("H1").Value Sheets("сводные").PivotTables("СводнаяТаблица13").PivotFields("Неделя").ClearAllFilters Sheets("сводные").PivotTables("СводнаяТаблица15").PivotFields("Неделя").ClearAllFilters For Each pf In Sheets("сводные").PivotTables("СводнаяТаблица13").PivotFields("Неделя").PivotItems Select Case pf.Name Case n1, n2, n3, n4 Case Else pf.Visible = False End Select Next For Each pf In Sheets("сводные").PivotTables("СводнаяТаблица15").PivotFields("Неделя").PivotItems Select Case pf.Name Case n1, n2, n3, n4 Case Else pf.Visible = False End Select Next End Sub
[/vba]
Идею содрал у RAN с Планеты Но при использовании кейсов каждый раз приходится сбрасывать фильтры, чтобы они потом корректно проставились. Как этого можно избежать?
Решил вот таким способом:
[vba]
Код
Sub фильтры_сводных() n1 = Sheets("сводные").Range("E1").Value n2 = Sheets("сводные").Range("F1").Value n3 = Sheets("сводные").Range("G1").Value n4 = Sheets("сводные").Range("H1").Value Sheets("сводные").PivotTables("СводнаяТаблица13").PivotFields("Неделя").ClearAllFilters Sheets("сводные").PivotTables("СводнаяТаблица15").PivotFields("Неделя").ClearAllFilters For Each pf In Sheets("сводные").PivotTables("СводнаяТаблица13").PivotFields("Неделя").PivotItems Select Case pf.Name Case n1, n2, n3, n4 Case Else pf.Visible = False End Select Next For Each pf In Sheets("сводные").PivotTables("СводнаяТаблица15").PivotFields("Неделя").PivotItems Select Case pf.Name Case n1, n2, n3, n4 Case Else pf.Visible = False End Select Next End Sub
[/vba]
Идею содрал у RAN с Планеты Но при использовании кейсов каждый раз приходится сбрасывать фильтры, чтобы они потом корректно проставились. Как этого можно избежать? argetlam
Сообщение отредактировал argetlam - Среда, 29.10.2014, 15:46
Ответить
Сообщение Решил вот таким способом:
[vba]
Код
Sub фильтры_сводных() n1 = Sheets("сводные").Range("E1").Value n2 = Sheets("сводные").Range("F1").Value n3 = Sheets("сводные").Range("G1").Value n4 = Sheets("сводные").Range("H1").Value Sheets("сводные").PivotTables("СводнаяТаблица13").PivotFields("Неделя").ClearAllFilters Sheets("сводные").PivotTables("СводнаяТаблица15").PivotFields("Неделя").ClearAllFilters For Each pf In Sheets("сводные").PivotTables("СводнаяТаблица13").PivotFields("Неделя").PivotItems Select Case pf.Name Case n1, n2, n3, n4 Case Else pf.Visible = False End Select Next For Each pf In Sheets("сводные").PivotTables("СводнаяТаблица15").PivotFields("Неделя").PivotItems Select Case pf.Name Case n1, n2, n3, n4 Case Else pf.Visible = False End Select Next End Sub
[/vba]
Идею содрал у RAN с Планеты Но при использовании кейсов каждый раз приходится сбрасывать фильтры, чтобы они потом корректно проставились. Как этого можно избежать? Автор - argetlam Дата добавления - 29.10.2014 в 15:32
RAN
Дата: Среда, 29.10.2014, 19:44 |
Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Идей мне не жалко. добавьте [vba]Код
Application.ScreenUpdating = False
[/vba] будет совсем хорошо. Через тут могу предложить макрос синхронизации фильтров всех сводных в книге. (С выбором листа(ов), таблиц(ы))
Идей мне не жалко. добавьте [vba]Код
Application.ScreenUpdating = False
[/vba] будет совсем хорошо. Через тут могу предложить макрос синхронизации фильтров всех сводных в книге. (С выбором листа(ов), таблиц(ы)) RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Среда, 29.10.2014, 19:45
Ответить
Сообщение Идей мне не жалко. добавьте [vba]Код
Application.ScreenUpdating = False
[/vba] будет совсем хорошо. Через тут могу предложить макрос синхронизации фильтров всех сводных в книге. (С выбором листа(ов), таблиц(ы)) Автор - RAN Дата добавления - 29.10.2014 в 19:44
gling
Дата: Среда, 29.10.2014, 22:42 |
Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2663
Репутация:
747
±
Замечаний:
0% ±
2010
Цитата
А можно с комментариям по строкам?
Посмотрите в файле. Макрос немного подправил.
Цитата
А можно с комментариям по строкам?
Посмотрите в файле. Макрос немного подправил.gling
ЯД-41001506838083
Ответить
Сообщение Цитата
А можно с комментариям по строкам?
Посмотрите в файле. Макрос немного подправил.Автор - gling Дата добавления - 29.10.2014 в 22:42
argetlam
Дата: Четверг, 30.10.2014, 09:12 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
RAN, это само собой, выключение тормозов обязательно везде) gling, спасибо большое, стало понятней)
RAN, это само собой, выключение тормозов обязательно везде) gling, спасибо большое, стало понятней) argetlam
Ответить
Сообщение RAN, это само собой, выключение тормозов обязательно везде) gling, спасибо большое, стало понятней) Автор - argetlam Дата добавления - 30.10.2014 в 09:12