powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot Table: PivotFields Update (VBA)
15 сообщений из 15, страница 1 из 1
Pivot Table: PivotFields Update (VBA)
    #37900733
skleppi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

возникла проблема с обновлением сводной таблицы с помощью VBA

Использую следуЮщий код:

Код: vbnet
1.
2.
3.
4.
5.
6.
    For Each pvt In ActiveSheet.PivotTables
    pivot_table_name = pvt.Name
    Next

  ActiveSheet.PivotTables(pivot_table_name).PivotFields("Product Type"). _
        CurrentPage = product_type_value



Он срабатывает нормально, но если его добавить в код Function ( я хочу, чтобы в зависимости от желаемого product_type_value, это значение выбиралось бы в сводной, и на основе выданного диапазона делался бы расчет), то при обновлении сводной я получаю пустые значения, и дальше макрос ничего не делает.

Подскажите, пожалуйста, из-за чего это может быть? что не так?
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901075
skleppi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skleppi,

хоть какие-нибудь предположения? :))
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901087
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у вас одна сводная на листе? - тогда зачем нужен for each ... next ? - достаточно ActiveSheet.PivotTables(0).Name

Ну и в вашем случае (текущий лист, одна сводная на нём) попробуйте хотя бы так:
Код: vbnet
1.
2.
3.
4.
With ActiveSheet.PivotTables(ActiveSheet.PivotTables.Count)
    .PivotFields("Product Type").CurrentPage = product_type_value
    .Refresh
End With
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901107
skleppi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

не выходит. когда сводная должна обновляться в процессе вычисления функции, ничего не происходит, сводная не обновляется...
может так и должно быть, и это просто невозможно - на лету брать новый диапазон для функции, в зависимости от выбора в сводной,
когда этот выбор - входящий аргумент функции
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901115
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, замени сводную на MSQuery или запрос через ADODB... Ибо сводные - это не только ценный мех, но и куча заморочек от разработчиков каждой версии Office; не считая возрастания объёма хранилища при неправильной настройке.

P.S. Сводные - зло, придуманное для офисных работников, не умеюших оперировать SQL-запросами...
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901128
skleppi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

дело в том, что мне результатом нужен именно диапазон значений [1,2,...,n].
исходник тоже в экселе, а можно обратиться запросом прямо к таблице на листе?
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901135
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А исходник и результат показать слабО?
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901146
skleppi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

коммерческая тайна))
на самом деле просто таблица из 5 столбцов, на которой строится сводная.
в зависимости от выбора типа продукта, меняется результат сводной, который используется для построения тренда
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901155
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таки ваши ойзонги - вам и в тухес, ибо Низзя разве почтой сотню-другую строк выслать, а не весю презентацию?
Тем более, что я вашими "трендАми" закончил заниматься, ИМХО, еще тогда, когда ваши начальники школу уканчивали...
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901176
skleppi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

в файле пример расчета.
vba-функция перестает работать на этапе записи значений в диапазонъ
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901182
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нафик... ну нафик там сводная?
Да, я не спорю - удобно, если конечные данные будут получены прямо в сводной .
А если мы уже и так используем VBA/VB.NET, то почему бы сразу не сформировать нужное количество SQL-запросов к source data (через RecordSet для старых версий или DataTable для новых)? И затем - раскидать полученные данные в нужные места, поимев их, как желаете?
Мне просто сейчас ночью лень изучать ваши формулы...
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901186
skleppi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

тогда придется для каждого типа продукта прописывать формулы тренда, а так бы они сами получались, в зависимости от сделанного выбора)
и просто интересно уже, почему не срабатывает функция
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901190
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, при желании я могу поразбираться...
Но общий-то принцип всё равно: бороться с пользователями (если, конечно, это не вы, но и то...).

Суть в чём - намного проще ОДИН раз кликнуть в кнопочку - и получить результат. Как там будет действовать ПО - что юзеру, что вам - без разницы (хотя, в большинстве случаев, оптимизированный код на VB работает быстрее, чем последовательный пересчёт формул листов).

С другой стороны, применительно к вашей задаче - чем "они, само получаемые формулы тренда" отличаются от "программного расчёта"? Кроме этого, Вы абсолютно не заморачиваетесь над тем, что там на листе (ибо там _результаты_), а логика любых расчетов заложена в конкретном месте кода... который, кстати, модет и внешние данные получать намного проще и быстрее, чем встроенные в Application средства...
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37901378
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMоптимизированный код на VB работает быстрее, чем последовательный пересчёт формул листовВесьма спорное утверждение
...
Рейтинг: 0 / 0
Pivot Table: PivotFields Update (VBA)
    #37903330
skleppi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

в целом, согласна с вами, просто не думала, что написать функцию vba, связанную с пересчетом сводной, будет такой уж большой проблемой
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot Table: PivotFields Update (VBA)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]