powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / GetData
25 сообщений из 31, страница 1 из 2
GetData
    #34372048
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите где прочитать про использование метода GetData объекта PivotTable.
Или просто подскажите как правильно задать имя?
Чем отличается от GetPivotData?
...
Рейтинг: 0 / 0
GetData
    #34372188
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как заисать нашёл:

Код: plaintext
GetData(DataField Item1[Field1] Item2[Field2] Item3[Field3])

Очень хочется понять чем отличается ? Потому что мне показалось что иногда
там где GetData работает, GetPivotData - не работает.
Не могу понять в чём отличие и есть ли они вообще, не подскажите?
...
Рейтинг: 0 / 0
GetData
    #34372273
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с этими методами никогда вплотную не сталкивалась, но формальный ответ на вопрос есть ли различие между GetData и GetPivotData на мой взгляд легко получить следующим способом: просто посмотреть в Object Browser как реализованы эти методы:





Как говориться, легко видеть, что метод GetData возвращает число (Double) а GetPivotData возвращает диапазон (Range). Так что различия есть хотя бы в этом (не говоря уж об аргументах этих методов).

Да и в Help'e что-то есть про их использование.
...
Рейтинг: 0 / 0
GetData
    #34372301
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lena_####
Как говориться, легко видеть, что метод GetData возвращает число (Double) а GetPivotData возвращает диапазон (Range). Так что различия есть хотя бы в этом (не говоря уж об аргументах этих методов).


Аргументы те же самые только пунктуация разная.

Я к сожалению слабо в этом разбираюсь если мне нужна цифра из сводной таблицы, то что мне лучше использовать число (Double) или диапазон (Range) - результат то у них одинаковый получается!
...
Рейтинг: 0 / 0
GetData
    #34372334
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё вопросик:

Нмкто не подскажет почему следующая формула не работает в случае если такой ячейки сводной таблицы не существует. Функуия IsError не проверяет на эту ошибку или как.
И как можно перехватить такую ошибку, только через On Error GoTo IF_ER

Код: plaintext
IsError(Sheets("Лист").PivotTables("Свод1").GetData(x1 x2 x3)) Then
...
Рейтинг: 0 / 0
GetData
    #34372357
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadМожно ещё вопросик:


Код: plaintext
IsError(Sheets("Лист").PivotTables("Свод1").GetData(x1 x2 x3)) Then


Причём эта функция на рабочем листе нормально работает
...
Рейтинг: 0 / 0
GetData
    #34372494
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad

Не знаю, насколько Вам это поможет, вот мои изыскания по теме:

Исходные данные         Сводная таблица

  


Процедура
Код: plaintext
1.
2.
Sub UseGetData()
  MsgBox Worksheets("PT").PivotTables( 1 ).GetData("'Сумма по полю Доход' Яблоки  январь")
End Sub
вернет 20 – доход от продажи яблок в январе

Процедура
Код: plaintext
1.
2.
3.
4.
Sub UseGetPivotData()
  Dim rngTableItem As Range
  Set rngTableItem = Worksheets("PT").PivotTables( 1 ).GetPivotData("Доход", "Продукт", "Яблоки")
  MsgBox "Доход от продажи Яблок составил: " & rngTableItem.Value
End Sub
вернет 264 – общий доход от продажи яблок

Процедура
Код: plaintext
1.
2.
3.
4.
 Sub UseGetPivotData_01()
  Dim rngTableItem As Range
  Set rngTableItem = Worksheets("PT").PivotTables( 1 ).GetPivotData("Доход", "Продукт", "Яблоки", "Месяц", "апрель")
  MsgBox "Доход от продажи Яблок в апреле составил: " & rngTableItem.Value
End Sub 
вернет 55 – доход от продажи яблок в апреле

Примеры взяты из Help’а и немного видоизменены. В аттаче - файл с примером.
...
Рейтинг: 0 / 0
GetData
    #34372624
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lena_####
Процедура
Код: plaintext
1.
2.
Sub UseGetData()
  MsgBox Worksheets("PT").PivotTables(1 ).GetData("'Сумма по полю Доход' Яблоки  январь")
End Sub
вернет 20 – доход от продажи яблок в январе


Нижеприведённое можно записать как
Код: plaintext
1.
2.
Sub UseGetData()
  MsgBox Worksheets("PT").PivotTables( 1 ).GetData("Доход Продукт[Яблоки]  Месяц[январь]")
End Sub
Почему я и говорил, что они отличаются только пунктуацией

В процессе своих изысканий столкнулся с проблеммой - Вышеописанная процедурра в макросе считает на несколько порядоков медленнее, чем функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ(). Интересно это так и должно быть???
...
Рейтинг: 0 / 0
GetData
    #34372670
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут много чего про PivotTables:

http://peltiertech.com/Excel/Pivots/pivotstart.htm

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
GetData
    #34372695
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Function Get_Pivot(PD As Variant, Field1 As Variant, Item1 As Variant, Field2 As Variant, Item2 As Variant)
    
   On Error GoTo IfErr
     Get_Pivot = Sheets("Лист1").PivotTables( 1 ).GetData("'" & PD _
     & "' " & "'" & Field1 & "'" & "['" & Item1 & "']" & " '" & Field2 & "'" & "['" & Item2 & "']")
   On Error GoTo  0 
   
   Debug.Print Get_Pivot
   Exit Function

IfErr:

   Get_Pivot =  0 
   Debug.Print Get_Pivot
End Function

Помогите сделать проверку на ошибки по другому, если это возможно
...
Рейтинг: 0 / 0
GetData
    #34379926
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Методы GetData и GetPivotData вытягивают данные сводной таблицы только если они видны визуально в сводной, т.е. если сводная отображает эти данные. Не подскажите нет ли способа получить данные сводной таблицы которые не видны. Я впринципе понимаю, что наверное нельзя, скорее всего можно только стандартными формулами на исходны данные сослаться, но вдруг?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
GetData
    #36964715
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем пардоньте за некропостинг.

Deggasad, Вы на форуме участник ещё активный, может быть будет у Вас ответ. Или у кого нить другого. Как же все таки получить содержимое такого загадочного хранилища как PivotCache

поясню суть задачи в виде небольшого ликбеза.

Есть PivotTable, нужно извлечь исходные данные для нее, чтобы или создать таблицу или внести изменения.

Попробуем узнать где же у нее данные. Обратимся к очевидным на первый взгляд с точки ООП местохранилищам SourceData или Recordset - а вот фигушки. Смотрим описание объекта оказывается большинство свойств заполнены "if" т.е. если тип источника такой то и данные там то.

Иными словами, для того чтобы понять где же у нее данные, приходится сначала посмотреть свойство SourceType, который нам скажет, что тут Тип Range ,а тут Recordset и т.п. Получается надо сначала заглянуть туда,а потом писать ветвление - что если тип Source - Range - смотрим в одно свойство, а если Connection то в другое. Неудобно, но бог с ним. Все равно нам это не поможет.

Данные могут лежать в источнике, который уже сейчас недоступен. Ну например в какой то базе, которая за тридевять земель. Но сами данные для PivotTable лежат внутри этого файлика Excel (конечно не всегда, есть же всякие кубики), ну дык нас интересуют данные, которые уже "внутри".

Пороемся в объекте поглубже. Оказывается есть в самом экселе набор пивот кэшей. Вот они оригинальные данные для таблиц то и хранят. Из них таблица и сосет данные. Т.е. есть объект пивот кэш 1,2 и т.д. И есть таблица вот таблица по индексу к кэшу и цепляется. (кстати та ещё приятность - создал 2 пивот кэша. И потом одному человеку по имени компа один кэш показываешь, а второму совершенно другой, хотя файл один и лежит в сети - ну это так, лирическое отсутпление. )

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

Ну неудобно конечно, но ладно так и быть. Давайте поюзаем этот интерфейс. И опять таки народная индейская изба - фигвам.
Оказывается доступны только те Fields которые Visible в данные момент. Ладно, скрепя сердце в очередной раз выкидываем на пивот все Hidden филды и начинаем их мониторить. Пробежаться по филдам и вытащить записи это можно. Но вот сопоставить - так это целый алгоритм нужен.
Иными словами если есть у Вас магазины товары и продажи - то вытащить уникальные магазины, уникальные товары и уникальные продажи можно, а вот сопоставить их друг другу никак, до тех пор пока не распозиционировать данные на сводной. Что как Вы понимаете не всегда возможно. Например Excel не выводит более чем 65 тыс строк, а сводные итого меньше, т.к. станет невозможным показать субитоги.

В общем направление неверное. Надо залезть внутрь самого PivotCache и попытаться вытянуть оттуда данные.
Почему же мелкомягкие не дают интерфейса. Может данные там "лежат" не реляционно и напряжно их тащить.
Вероятно.
Особенно это заметно когда пытаешься затянуть данные в excel. Пишет - загрузка данных. Думаете не аргумент, а реально загружает? Потому как данных много и их все равно надо "перемещать" а это время.

Не не не. Именно репозиция скорее всего . Я беру обычный реляционный рекордсет типа ADO и прикручиваю его к Пивот кэшу и опять происходит "загрузка" чего грузить то - там 5000 записей которые УЖЕ лежат в рекордсете. Их грузить 0,1 секунду максимум. Ан нет.. Опять пишет загрузка данных и давай считать 1000...2400..3800...5200

Скорее всего данные раскладываются особым образом - так как любит майкрософт. Аналогично кубу скорее всего. Но это же не беда. Куб вполне себе читаемая штука. Есть язык в разработке которого участвовал наш землячок и один из местных форумчан имя которого слишком известно чтобы его называть. И тем не менее я решения задачи пока не нашел.

Буду рад за любую помощь. И ещё, если я какойнить бред написал где нить - так сильно не ругайте то

Уже неделю долблю русско и англоязычный иннет. Пока пусто. Кто поделится соображениями?.
...
Рейтинг: 0 / 0
GetData
    #36964778
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не победил тоже в сове время логичными методами (получить исходные данные в некий рекодсет или массив). но исходные данные достаются просто если помещаются в эксель - при наличии хотя бы одного поля в области данных и сброшенных фильтров двой щелчек на итогах или если предположить что итоги в правом нижнем углу сводной, то
Код: plaintext
1.
2.
With ActiveSheet.PivotTables( 1 ).TableRange1
 .Cells(.Rows.Count, .Columns.Count).ShowDetail = True
End With
...
Рейтинг: 0 / 0
GetData
    #36964886
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShamanusКто поделится соображениями?.К чертям Эксель с его Пивотами, даешь СУБД с толстым клиентом.
...
Рейтинг: 0 / 0
GetData
    #36964994
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сводная это всего лишь отчет, но с динамической структурой. А отчет и не должен предоставлять исходные данные. Он для другого создан.
...
Рейтинг: 0 / 0
GetData
    #36965254
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F,

отчетом в классическом понимании он станет, когда ты уберешь галочку в настройках таблицы "Сохранить данные вместе с таблицей", а пока данные хранятся вместе с таблицей - это все же еще и pivot, который можно пользовать и делать любые другие отчеты :).
...
Рейтинг: 0 / 0
GetData
    #36965260
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlК чертям Эксель с его Пивотами, даешь СУБД с толстым клиентом.Да стоит уже Microstrategy, и надстройка еёйная к Excel тоже имеется, но только то народ шлет письма с Excel файлами. К несчастью надо извлекать информацию.
Deggasad если помещаются в эксель это ключевая проблема
...
Рейтинг: 0 / 0
GetData
    #36965278
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShamanusDeggasad если помещаются в эксель это ключевая проблема
2007?
...
Рейтинг: 0 / 0
GetData
    #36965301
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad,
в 2007 мульен строк, это скок данных надо

нее, речь о 2003
...
Рейтинг: 0 / 0
GetData
    #36965305
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имел ввиду может 2007 поставить - пыратский хотя бы 1 для этих целей - хотя бред Имхо
...
Рейтинг: 0 / 0
GetData
    #36965356
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasadя имел ввиду может 2007 поставить - пыратский хотя бы 1 для этих целей - хотя бред Имхоза пиратский ИСБ не погладит по головке.
...
Рейтинг: 0 / 0
GetData
    #36966072
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasadотчетом в классическом понимании он станет, когда ты уберешь галочку в настройках таблицы "Сохранить данные вместе с таблицей"
Вот если б было "Хранить данные в исходном виде"...
...
Рейтинг: 0 / 0
GetData
    #36966540
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShamanusWhite OwlК чертям Эксель с его Пивотами, даешь СУБД с толстым клиентом.Да стоит уже Microstrategy, и надстройка еёйная к Excel тоже имеется, но только то народ шлет письма с Excel файлами. К несчастью надо извлекать информацию.Ну шлют, ну и что? Вытяни данные из Экселя и запиши их в свою базу, а потом SQL в руки и издевайся над данными сколько хочешь. То что контрагент присылает данные в формате неудобном для обработки не означает что ты не имеешь право переконвертировать данные в удобный тебе формат.
...
Рейтинг: 0 / 0
GetData
    #36968976
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВытяни данные из Экселя
как?
Даже руками это очень сложно, т.к. данных там больше чем вмещает лист.
Вот пришлю я Вам где 150тыс строк исходных данных для PivotTable - как все 100% извлечете?
Можно только ставить руками фильтр - и по фрагментам вытаскивать то, что нужно.
...
Рейтинг: 0 / 0
GetData
    #36970349
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShamanusWhite OwlВытяни данные из Экселя
как?
Даже руками это очень сложно, т.к. данных там больше чем вмещает лист.
Вот пришлю я Вам где 150тыс строк исходных данных для PivotTable - как все 100% извлечете?
Можно только ставить руками фильтр - и по фрагментам вытаскивать то, что нужно.Ты из PivotCache одну запись прочитать можешь? Текстовый файл открыть на запись можешь? Напечатать в этот файл поля из recordset через запятую можешь?
Если на вышеперечисленные вопросы ты ответил "да могу", то ты тоже можешь вытащить 100% данных из PivotCache :)
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / GetData
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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