Страницы: 1
RSS
Получить детали из сводной таблицы в массив (показать детали)
 
Уважаемые форумчане!

Пожалуйста, подскажите как получить детали ячейки (область данных) из сводной таблицы в массив, которые можно получить выбрав "показать детали"?
Можно ли это сделать используя команду Selection.ShowDetail = True? Не формируя новый лист.
Пример для теста вложен.
 
1. пункта "показать детали" у меня нет
2. ссылки из примера не соответствуют друг-другу
3. таблица из примера не является сводной
4. макросом точно можно как угодно сгруппировать таблицу, но пример у вас некорректный
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, да ладно Алексей, вам придираться - это же не начальнику. Для форума же всяко разно сойдёт, там же гуру, они в любой фигне могут разобраться.:)  Опять же не царское это дело - примеры готовить.
Изменено: Андрей VG - 02.06.2020 16:04:05
 
Андрей VG, наше дело маленькое - помочь))
помог, чем мог, как говориться  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous,а какая по Вашему это таблица? Или структура не понравилась?
1. пункта "показать детали" у меня нет - на ячейку и правой кнопкой мыши
2. ссылки из примера не соответствуют друг-другу - в чем?
Изменено: ac1-caesar - 02.06.2020 16:23:06
 
Андрей VG,не совсем понял сарказма
 
Цитата
ac1-caesar: какая по Вашему это таблица?
обычная плоская умная
Цитата
ac1-caesar: структура не понравилась?
да мне вообще плевать, если честно - это не мне надо и не в таком тоне вам вопросы задавать
Цитата
ac1-caesar: на ячейку и правой кнопкой мыши
на своём жизненном пути вы узнаете много нового, например, что есть разные версии Excel и не у всех - ваша (см. скрин)
Цитата
ac1-caesar:
ссылки из примера не соответствуют друг-другу - в чем?
очевидно, что ref слева это текст "L12…", а справа - целые числа
Цитата
ac1-caesar: Андрей VG ,не совсем понял сарказма
это не вам
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Коллеги, да нормальный пример. В центре сводная таблица, товарищ хочет узнать как получить из нее детали в массив.
Ну не совсем очевидный пример, и не туда сразу падает глаз. Но в принципе вся инфа в файле имеется.
Вот горшок пустой, он предмет простой...
 
Цитата
Jack Famous написал:
на своём жизненном пути вы узнаете много нового, например, что есть разные версии Excel и не у всех - ваша (см. скрин)
Раз Вам это было известно, то и утверждать не стоило
Цитата
ссылки из примера не соответствуют друг-другу
и т.д.
 
Цитата
Jack Famous: обычная плоская умная
согласен - не ту таблицу посмотрел
но, если пересоздать сводную, то она будет не такая, как у вас (см. скрин)

По вопросу: вот строка от макрорекордера Selection.ShowDetail = True
Если не касаться сводной, то название темы: "Макрос разделения таблицы по критерию в столбце"
Изменено: Jack Famous - 02.06.2020 16:40:32
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
но, если пересоздать сводную, то она будет не такая, как у вас (см. скрин)
группировка просто по другому сложена
Selection.ShowDetail = True, но там засада в том, что в эту книгу создается новый лист с деталями. А мне бы только в массив заполучить их. Залезть, так сказать, под капот  :)
А в массив нужны, потому что еще планируется коррекция
Изменено: ac1-caesar - 02.06.2020 16:45:52
 
Господа - вообще тема-то не такая уж и новая. Но собирать в массив, не создавая деталей - та еще мука. Но сделать можно. Но зачем? Если это делать макросом, то проще тупо отобразить детали и забрать в массив полученную таблицу:
Код
Sub PivotDetails()
    Dim pt As PivotTable
    Dim wsSource As Worksheet
    Dim arr

    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    
    Set pt = ActiveCell.PivotTable
    Set wsSource = ActiveSheet
    If Not pt.EnableDrilldown Then
        pt.EnableDrilldown = True
    End If

    Selection.ShowDetail = True
    arr = ActiveSheet.UsedRange.Value
    
    ActiveSheet.Delete
    wsSource.Activate

    Application.DisplayAlerts = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
ac1-caesar: группировка просто по другому сложена
да - увидел
иными словами, вам ведь просто нужно фильтровать исходную таблицу по указанным значениям?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous предлагает другое название. Сейчас в названии - сводная таблица. Уточните.
 
Дмитрий(The_Prist) Щербаков, спасибо за пример. Тоже думал в этом направлении, но хотелось более элегантно достать их без создания листа и его удаления. Но похоже вмешаться в процесс ShowDetail не получится, т.е. синтаксиса такого нет (по крайней мере я не нашел).  Вот и думаю, мтоже кто уже реализовывал задачу
 
vikttur, тема корректна. Работа со сводной таблицей
 
Дмитрий(The_Prist) Щербаков, приветствую! Пара моментов по коду:
 1. не факт, что у пользователя стоял автопересчёт, так что надо запомнить, что стояло
 2. при работе в сводной очень часто помогает ActiveSheet.PivotTables("ИМЯ СВОДНОЙ").ManualUpdate=True (и False - в конце)
 3. в рамках примера не вижу ничего сложного пробежать по исходной плоской и собрать массивы по критерию. Другое дело - что с ними потом делать
КОД
Изменено: Jack Famous - 02.06.2020 17:28:57
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, исходная плоская это в примере, у ТС может быть сводная по подключению к внешнему источнику и тогда исходные данные лежат только в кэше.
Вот горшок пустой, он предмет простой...
 
PooHkrd, может быть куча всего, но мы исходим из того, что есть))
в данном случае плоская есть, а значит, чтобы получить все "фильтры" нам сводная не нужна  :)
Изменено: Jack Famous - 02.06.2020 17:29:07
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
ac1-caesar написал:
хотелось более элегантно достать их
это, как ни странно - самое элегантное. А доставать их из листа исходника, опираясь на выделенное где-то в сводной - тот еще изврат. Вы бы лучше рассказали для чего именно нужно прям вот вырви глаз, но без листа деталей? Чем он мешает, если никто его не увидит в итоге и решение получается самое оптимальное и по скорости и по надежности?
Цитата
Jack Famous написал:
при работе в сводной очень часто помогает ActiveSheet.PivotTables("ИМЯ СВОДНОЙ").ManualUpdate=True
Jack Famous, как это поможет именно в моем примере?
Про Calculate - таки да, надо запоминать. Но суть была именно в примере, чтобы убрать мелькания и т.д. Тупо взял строки по образцу - я не на заказ код писал. Поверьте, в других случаях я делаю уж совсем не так и запоминаю все, что надо запоминать ;)
Если уж пошли по дебрям: то к Вашему подходу вопросов больше :) а если полей в сводной не два, а двадцать? :) И если полей в области строк более одного при этом? Т.е. условий отбора-то более одного? И еще есть область столбцов? И более одного столбца для значений? Предложенный Вами подход очень и очень топорный и поможет прям именно в данном случае. Но что-то подсказывает, что это лишь для примера. В реальности сводная чуть сложнее. Так что...
Изменено: Дмитрий(The_Prist) Щербаков - 02.06.2020 17:48:12
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, Вы абсолютно правы, в реальности все чуть сложнее. Из порядка 20 таблиц разных книг собирается запрос в PQ и загоняется в модель данных. По этой модели строится сводная (сводится по 2-м значениям и дате, остальное не выводися). Используя "показать детали" получаю все что надо до самого дна, единственное - не все надо и немного по другому.
А конечная цель тривиальна - видеть нужный список в отдельном окне при клике на ячейку.
 
Ну, лично для себя сделал попроще, соорудил запрос который сканирует книгу со сводной на предмет выведенных таблиц с детализацией, далее он их все собирает в кучу и форматирует в нужный мне вид, для отправки писем и всего такого, а выведенный лист я уже удаляю ручками. Знал бы ВБА автоматизировал бы, но на текущий момент затраты времени на освоение нового инструмента не сравнимы с затратами на удаление одного двух листов руками.
Вот горшок пустой, он предмет простой...
 
Jack Famous, спасибо за Ваш пример и уделенное время, но пока в приоритете решение через сводную и vba.
 
PooHkrd, выведенные листы с детализацией предварительно переназываете, чтобы вести по ним поиск?
Про ВБА оценил  :D  
Изменено: ac1-caesar - 02.06.2020 18:46:07
 
ac1-caesar, этого не нужно делать их эксель всегда по одному шаблону называет, только циферки в названии таблицы меняет. Сканировать нужно не листы, а таблицы.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх