Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 17.01.2014
Сообщений: 20

Как отфильтровать сводную таблицу, если все критерии могут не существовать?

24.07.2014, 09:25. Показов 2426. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код фильтра:
Visual Basic
1
2
3
4
5
With ActiveSheet.PivotTables("Сводная1").PivotFields("Отклонения")
.PivotItems("2").Visible = False
.PivotItems("").Visible = False
.PivotItems("#N/A").Visible = False
End With
Но если нет, например, критерия "#N/A", вылетает ошибка. Как этого избежать? и как можно оставить лишь одно нужное нам значение без прописывания visible = false всем остальным?

Добавлено через 16 часов 57 минут
Может кто-нибудь помочь?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2014, 09:25
Ответы с готовыми решениями:

Отфильтровать сводную таблицу по заданной дате
Добрый день! Есть сводная таблица. По одному параметру необходимо выбрать дату: При записи макроса получается такой фрагмент: ...

Найти все возможные треугольники, которые могут существовать. Результат вывести на экран.
Функция которая по 3 десятичным числам проверяет, могут ли числа быть сторонами треугольника. C помощью массива (где строчка это стороны...

Как переименовать сводную таблицу
Подскажите пожалуйста: как переименовать сводную таблицу, и удалить все рабочие листы кроме того листа, на котором расположена сводная...

1
81 / 18 / 1
Регистрация: 22.05.2013
Сообщений: 32
24.07.2014, 10:00
Функция для проверки вхождения ключа в коллекцию (список коллекция можно расширить, может даже как-то более универсально сделать)
Visual Basic
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
42
''' аналог dictionary.exists(key)
Function isInCollection(key As String, col As Variant)
    Dim tmp As Variant
    
    isInCollection = False
    If Not (TypeName(col) = "Collection" Or _
            TypeName(col) = "Sheets" Or _
            TypeName(col) = "CollectionExtended" Or _
            TypeName(col) = "Workbooks" Or _
            TypeName(col) = "ListObjects" Or _
            TypeName(col) = "PivotTables" Or _
            TypeName(col) = "PivotItems") Then Exit Function
    
    tmp = "abrakadabra"
    On Error Resume Next
        If TypeName(col) = "CollectionExtended" Then
            tmp = col.GetCollection(key)
            Stop
        Else
            If IsObject(col(key)) Then
                Set tmp = col.Item(key)
            Else
                tmp = col.Item(key)
            End If
        End If
    On Error GoTo 0
    
    If IsArray(tmp) Or IsObject(tmp) Then
        isInCollection = True
    Else
        isInCollection = (tmp <> "abrakadabra")
    End If
End Function
 
' собственно - проверка вхождения
Sub prb()
    Dim ptTable As PivotTable
    
' проверка наличия кода среди PivotItems
    Set ptTable = ActiveSheet.PivotTables("PivotTable1")
    chk = isInCollection("159", ptTable.PivotFields("NUM").PivotItems)
End Sub
Включить и выключить фильтры оптом нельзя. Только поштучно. Кроме того, при включении/выключении фильтра пересчитывается весь Pivot (заметно лагает на больших таблицах).

Ма-аленькое НО: в русском и английском экселе разные значения: "#N/A" и "#Н/Д", "All" и "Все" и т.д.

Добавлено через 17 минут
Прошу прощения
Порылся в методах PivotField. Сбрасывать фильтры можно (в состояние Selected all)
Visual Basic
1
2
3
4
5
6
7
8
9
10
    Dim ptTable As PivotTable
    Dim ptField As PivotField
    
    Set ptTable = ActiveSheet.PivotTables("PivotTable1")
    Set ptField = ptTable.PivotFields("NUM")
 
    chk = ptField.AllItemsVisible ' проверяет, все ли галки включены
    ptField.ClearAllFilters       ' сбрасываем все фильтры (ставит все галки)
    chk = isInCollection("159", ptTable.PivotFields("NUM").PivotItems) ' проверяем наличие конкретного пункта
    chk = ptField.PivotItems("159").Visible ' проверяем состояние конкретного пункта
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.07.2014, 10:00
Помогаю со студенческими работами здесь

Как дополнять сводную таблицу
Люди, здравствуйте. Можно ли дополнять сводную таблицу? То есть: вот, есть уже сводная с данными. И нужно не заменить эти данные, а...

Как НЕ обновлять Сводную Таблицу
Люди, здравствуйте. Сейчас работаю в вба со сводной таблицей. Большой. Поэтому она долго обновляется каждый раз, когда я что-то меняю....

Как создать сводную таблицу в C#?
Здравствуйте, нужна помощь. Обращаясь к БД я экспортирую данные какой либ таблицы в Excel, все работает хорошо теперь нужно сделать так...

Как создать сводную таблицу в Ексель
Доброго дня, есть табличка с данными и нужно сделать выборку по индексу и подтянуть цены... я на таком уровне ексель не знаю, помогите,...

Как сделать специфичную сводную таблицу
Наверное вопрос глупый, но меня поставило в тупик. Как так получается в ряде файлов, что при перетаскивании поля исходника из списка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru