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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 13:08   #1
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию Отметить даты в фильтре сводной таблицы

Здравствуйте, уважаемые программисты. Подскажите код, который сможет отметить в фильтре полей сводной таблицы даты, меньшие или равные конечной дате.
Вложения
Тип файла: zip Отметить даты в фильтре сводной таблицы.zip (121.2 Кб, 7 просмотров)

Последний раз редактировалось agregator; 17.01.2011 в 13:11.
agregator вне форума Ответить с цитированием
Старый 17.01.2011, 13:28   #2
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Отредактировал, добавил вложение.
agregator вне форума Ответить с цитированием
Старый 18.01.2011, 14:29   #3
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Здраствуйте.
1. Написал
Код:
Sub Фильтр()

    Dim dat1, dat2 As Date
    With Sheets("Сводная").PivotTables("СводнаяТаблица7").PivotFields("Дата выезда")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    With Sheets("Сводная").PivotTables("СводнаяТаблица7").PivotFields("Дата выезда")
        For i = 1 To .PivotItems.Count
            dat1 = .PivotItems(i).Name
            dat2 = Sheets("Данные").Cells(2, 3)
        If dat2 < dat1 Then
            .PivotItems(i).Visible = False
        Else
            .PivotItems(i).Visible = True
        End If
            
        Next
    End With
    
    With Sheets("Сводная").PivotTables("СводнаяТаблица7").PivotFields("Дата выезда")
        .Orientation = xlPageField
        .Position = 2
    End With
    
End Sub
Не работает , Debug на .PivotItems(i).Visible = True. Не пойму почему. Подскажите.
2. Можно ли отметить даты сразу в поле страницы?
Вложения
Тип файла: zip Отметить даты в фильтре сводной таблицы(2).zip (128.6 Кб, 8 просмотров)

Последний раз редактировалось agregator; 18.01.2011 в 14:40.
agregator вне форума Ответить с цитированием
Старый 18.01.2011, 15:00   #4
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Поменял знак неравенства с< на > код заработал
Код:
Sub Фильтр()

    Dim dat1, dat2 As Date
    With Sheets("Сводная").PivotTables("СводнаяТаблица7").PivotFields("Дата выезда")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    With Sheets("Сводная").PivotTables("СводнаяТаблица7").PivotFields("Дата выезда")
        For i = 1 To .PivotItems.Count
            dat1 = .PivotItems(i).Name
            dat2 = Sheets("Данные").Cells(2, 3)
        If dat2 > dat1 Then
            .PivotItems(i).Visible = False
        Else
            .PivotItems(i).Visible = True
        End If
            
        Next
    End With
    
    With Sheets("Сводная").PivotTables("СводнаяТаблица7").PivotFields("Дата выезда")
        .Orientation = xlPageField
        .Position = 2
    End With
    
End Sub
Но соответственно наоборот, поставил галки у тех которые не надо.
В чём дело?

2. Можно ли отметить даты сразу в поле страницы?
agregator вне форума Ответить с цитированием
Старый 20.01.2011, 07:35   #5
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Здраствуйте.
Этот макрос проставляет галочки в фильте столбца сводной таблицs возле дат, которые меньше значения dat2.
Проблема в том, что он перестаёт работать после обновления данных сводной таблицы.
Начинает ругаться Debug на .PivotItems(i).Visible = True
Код:
Sub Фильтр()
   
    With Sheets("Сводная").PivotTables("СводнаяТаблица7").PivotFields("Дата выезда")
        For i = 1 To .PivotItems.Count
            dat1 = .PivotItems(i).Name
            dat2 = Sheets("Данные").Cells(2, 3)
        If dat2 < dat1 Then
            .PivotItems(i).Visible = False
        Else
            .PivotItems(i).Visible = True
        End If
            
        Next
    End With
    
End Sub
Скажите пожалуйста, что можно сделать, чтобы макрос продолжал работать и после обновления данных сводной таблицы.
Вложения
Тип файла: zip Отметить даты в фильтре сводной таблицы(2).zip (128.6 Кб, 13 просмотров)
agregator вне форума Ответить с цитированием
Старый 20.01.2011, 12:48   #6
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Мне кажется это связано с мусором в сводной таблице. Если его убрать, то начинает работать.
Но иногда мусор бывает полезен.
Можно ли сделать, чтобы работало с ним?

Последний раз редактировалось agregator; 20.01.2011 в 12:54.
agregator вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание сводной таблицы tinka Microsoft Office Excel 1 20.08.2010 15:04
Заполнение сводной таблицы Nikolas8 Microsoft Office Excel 1 04.06.2010 22:09
Данные из двух полей исх. таблицы в одно поле сводной таблицы Strelec79 Microsoft Office Excel 2 02.08.2009 13:59
Форматирование сводной таблицы eda Microsoft Office Excel 1 23.07.2009 11:16