Vba Excel свернуть Excel

Обновлено: 21.11.2024

Шаг 2. Когда определенные строки или столбцы сгруппированы, пользователь сможет увидеть знак + (плюс), чтобы развернуть все сгруппированные строки или столбцы. Как только все строки или столбцы развернуты, пользователь сможет увидеть знак – (минус), чтобы свернуть их, как показано на рисунке ниже.

Как свернуть строки в листах?

Чтобы скрыть несколько строк в электронной таблице Google, нажмите на первую строку и перетащите курсор по строкам, которые вы хотите скрыть, или, удерживая клавишу Shift, нажмите на последнюю строку, которую вы хотите скрыть. Затем щелкните правой кнопкой мыши и выберите Скрыть строки X — X, где X – номера выбранных вами строк.

Как закрепить только определенные строки в Excel?

Как закрепить набор строк в Excel

  1. Выберите строку под набором строк, которые вы хотите закрепить.
  2. В меню нажмите "Просмотр".
  3. На ленте нажмите "Закрепить области", а затем нажмите "Закрепить области".

Как защитить строку в Excel?

Перейдите на вкладку "Защита", снимите флажок "Заблокировано" и нажмите "ОК". Теперь выберите только ячейки или столбцы, строки, которые вы хотите защитить. Щелкните правой кнопкой мыши и снова выберите «Формат ячеек». Перейдите на вкладку «Защита», установите флажок «Заблокировано» и нажмите «ОК».

Как заблокировать прокрутку в Excel?

Нажмите «Пуск» > «Настройки» > «Специальные возможности» > «Клавиатура» > «Использовать экранную клавиатуру» (или нажмите клавишу с логотипом Windows + CTRL + O). 3. Нажмите кнопку ScrLk. Примечание. Чтобы включить блокировку прокрутки, просто повторите шаг 1 или шаги 2 и 3.

Как вы блокируете прокрутку в Excel с помощью VBA?

Заблокировать экран рабочего листа, чтобы предотвратить прокрутку с помощью кода VBA

  1. Удерживая нажатыми клавиши ALT + F11, откройте окно Microsoft Visual Basic для приложений.
  2. Нажмите «Вставить» > «Модуль» и вставьте следующий код в окно модуля.

Как исправить блокировку прокрутки в Excel?

Если на вашей клавиатуре нет клавиши Scroll Lock, на компьютере нажмите «Пуск», а затем нажмите CTRL+C, чтобы отобразить панель чудо-кнопок. Щелкните Изменить параметры ПК. Выберите Специальные возможности > Клавиатура. Нажмите ползунок «Экранная клавиатура», чтобы включить его.

Как отключить прокрутку сенсорного экрана?

Открыв Диспетчер устройств, прокрутите вниз и разверните меню «Устройства с интерфейсом пользователя». Затем прокрутите вниз и щелкните правой кнопкой мыши HID-совместимый сенсорный экран и выберите в меню Отключить устройство. После этого вам нужно будет подтвердить, что вы хотите отключить эту функцию, нажав Да в появившемся диалоговом окне.

Как включить прокрутку на сенсорном экране?

Вы можете прокручивать с помощью сенсорной панели двумя пальцами.

  1. Откройте обзор действий и начните вводить мышь и сенсорную панель.
  2. Нажмите "Мышь и сенсорная панель", чтобы открыть панель.
  3. Убедитесь, что в разделе "Сенсорная панель" переключатель "Сенсорная панель" включен.
  4. Включите переключатель прокрутки двумя пальцами.

Как прокручивать с помощью сенсорного экрана?

  1. Прокрутите. Чтобы имитировать функцию прокрутки мыши, просто коснитесь одним пальцем и перетащите его в нужном направлении.
  2. Перетащите.
  3. Контекстное меню.
  4. Центр уведомлений.
  5. Вызов представления задач.
  6. Команды приложения.
  7. Закрыть текущее приложение.
  8. Масштаб.

Как изменить скорость прокрутки на ноутбуке?

Откройте приложение "Настройки", нажав клавишу с логотипом Windows + I на клавиатуре. В приложении «Настройки» выберите «Устройства». На экране «Устройства» выберите «Сенсорная панель» в левом столбце. В правой части экрана установите ползунок с надписью «Изменить скорость курсора» на более удобную скорость.

Оглавление

Как свернуть группу в Excel VBA?

Шаг 2. Когда определенные строки или столбцы сгруппированы, пользователь сможет увидеть знак + (плюс), чтобы развернуть все сгруппированные строки или столбцы. Как только все строки или столбцы развернуты, пользователь сможет увидеть знак – (минус), чтобы свернуть их, как показано на рисунке ниже.

Как свернуть все группы в Excel?

Чтобы «свернуть» или скрыть сгруппированные данные, нажмите значок «минус» над панелью инструментов, как показано ниже. Этот процесс также иногда называют «сокрытием» данных. Функция очень удобна при управлении данными аналогичного поля, содержащего информацию из нескольких источников.

Как быстро свернуть группу в Excel?

Этот способ скрытия ненужных данных гораздо удобнее — вы можете нажать либо кнопку со знаком «+» или «-», либо сочетание клавиш Excel «Alt AJ/H» (в данном случае кликая друг за другом), чтобы свернуть или развернуть ячейки.

Как закрыть группу в Excel?

Чтобы разгруппировать, выберите строки или столбцы, а затем на вкладке "Данные" в группе "Структура" нажмите "Разгруппировать" и выберите "Разгруппировать строки" или "Разгруппировать столбцы".

Как скрыть строки в VBA?

Чтобы скрыть строки, задайте для параметра "Скрытый" значение "Истина" (диапазон. Скрытый = "Истина"). Чтобы отобразить строки, установите для параметра «Скрытый» значение «Ложь» (диапазон).

Как скрыть столбец в VBA?

Чтобы скрыть столбец с помощью VBA, нам нужно определить, какой столбец нам нужно скрыть. Чтобы указать столбец, который нужно скрыть, нам нужно использовать объект RANGE. Затем нам нужно использовать свойство «Весь столбец». Во всем свойстве столбца нам нужно использовать свойство «Скрытый».

Как разворачивать и сворачивать группы в Excel?

Уровни структуры При создании групп вы заметите, что в верхнем левом углу электронной таблицы появятся числа в рамках. Они указывают уровни контура. Если щелкнуть поле «Номер 1», все группы свернутся. Повторный щелчок развернет группы на первом уровне.

Как разворачивать и сворачивать сгруппированные строки с помощью сочетаний клавиш?

Следуйте инструкциям ниже, чтобы узнать, как это сделать.

  1. Вы можете загрузить рабочую тетрадь, чтобы попрактиковаться в этом упражнении. Применимо к: Microsoft® Excel® 2010 и 2013.
  2. Выберите любую ячейку в этих трех столбцах, затем нажмите клавиши «ALT», «A», «H».
  3. Сгруппированные строки теперь отображаются в свернутом виде.
  4. Нажмите «ALT», «A», «J».
  5. Сгруппированные столбцы теперь развернуты.

Как скрыть строки и группы в Excel?

Группировка работает только со смежными столбцами и строками (вместе).

  1. Выберите количество смежных столбцов или строк, которые вы хотите скрыть (вы не можете использовать клавишу Control во время этой операции).
  2. Нажмите кнопку "Группа", расположенную на вкладке "Данные" в группе "Структура", затем выберите.
  3. Ваши столбцы и строки теперь скрыты.

Как свернуть Excel?

Действия. Откройте электронную таблицу в Microsoft Excel. Выберите столбцы, которые вы хотите свернуть. Щелкните вкладку Данные. Щелкните Группа. Выберите «Столбцы» во всплывающем окне «Группа» и нажмите «ОК». Нажмите –, чтобы свернуть столбцы. Нажмите +, чтобы восстановить столбцы.

Как развернуть все группы в Excel?

Развернуть или закрыть все строки и столбцы групп в Excel. Вот некоторые коды VBA, которые могут помочь вам развернуть или закрыть все группы одновременно. 1. Нажмите клавиши Alt + F11, чтобы открыть окно Microsoft Visual Basic для приложений. 2. Нажмите «Вставить» > «Модуль», скопируйте и вставьте код удара в новый модуль. VBA: развернуть все группы.

Как развернуть свернутые строки в Excel?

Сверните определенные разделы, нажав на значок «–», или разверните их, нажав на значок «+». Сверните все похожие разделы, щелкнув цифру 1 в строке метки столбца. 2 расширит все аналогичные разделы. Дополнительные методы работы с Excel см. в нашем учебном классе Excel.

Как свернуть список в Excel?

Чтобы свернуть элементы, нажмите кнопку "минус" слева от каждой группы. Группа сразу развалится, но вся информация останется, просто временно скроется из поля зрения. Чтобы развернуть группу, которую вы только что свернули, нажмите значок плюса слева от группы.

Это небольшой совет VBA по автоматизации развертывания или свертывания групп, созданных в Excel. Прежде чем я перейду к коду VBA о расширении или сворачивании групп в Excel, я хотел бы проинформировать вас о функциях группировки или выделения в Excel.
Всегда полезно знать «Как сделать это вручную. перед автоматизацией любого шага.

Большинство из вас, кто использует Excel в повседневной работе, знают о группировке. Я объясню вам о функции группировки Excel для тех, кто не знает об этом. Как следует из самого названия, это встроенная функция Excel, которая позволяет пользователям соответствующим образом группировать свои строки или столбцы. Группировка может быть выполнена как на уровне строк, так и на уровне столбцов. Это также называется структурированием.

Шаг 1.

Выберите строки или столбцы, к которым вы хотите применить группировку (структурирование).

Шаг 2.

Перейдите на вкладку «Данные» на ленте Excel и нажмите кнопку «Группировать», как показано на рисунке ниже:

Когда определенные строки или столбцы сгруппированы, пользователь сможет увидеть знак + (плюс), чтобы развернуть все сгруппированные строки или столбцы. Как только все строки или столбцы развернуты, пользователь сможет увидеть знак – (минус), чтобы свернуть их, как показано на рисунке ниже.

Что такое вложенная группировка? Вложенный означает, что вложенная группировка представляет собой группировку внутри группы. Я объясню это, приведя пример. Предположим, вы сгруппировали строки с 5 по 20. Внутри этой группы создайте еще одну подгруппу из строк с 8 по 12. То же самое относится и к группировке столбцов. Каждая вложенность называется Уровень. Подгруппы могут быть сделаны до 8 уровней в Microsoft Excel. Обратитесь к изображению ниже. Присутствует максимум 8 уровней. Вам не разрешат группировать дальше уровень.

Outline.ShowLevels — это метод, который используется для отображения контуров разных уровней. Этот метод принимает RowLevel и ColumnLevel в качестве входных данных.

.Outline.ShowLevels(Уровни строк, Уровни столбцов)

Уровни строк:

Это номер уровня строки, ДО которого вы хотите показать. Это означает, что если вы передадите это число как 7, то этот метод покажет все уровни до 7. Он не расширит 8-й уровень, а все уровни до 7.

Уровни столбцов

Это номер уровня столбца, ДО которого вы хотите показать. Это означает, что если вы передадите это число как 7, то этот метод покажет все уровни столбца до 7. Он не расширит 8-й уровень, а все уровни до 7.

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

Доступен только один метод .ShowLevels. Не существует способа скрыть все уровни. Но если вы четко понимаете значение параметров, передаваемых как RowLevels и ColumnLevels, вы сможете добиться этого, используя тот же метод.

Как упоминалось ранее, LevelNumber – это номер уровня для отображения всех уровней ТОЛЬКО ДО этого уровня. Это означает, что все уровни выше этого не будут показаны. Следовательно, если я передам параметры строки и столбца как 1, тогда будет отображаться только первый уровень, а все остальные уровни будут скрыты, и именно так мы достигли обеих целей (развернуть все и свернуть все) одним и тем же методом.

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

Кто-нибудь знает, можно ли расширять/сворачивать группы с помощью
VBA. Я пытался использовать средство записи макросов, но при
разворачивании/сворачивании группы код не генерируется.

JLGWhiz

Тим879

Я группирую много своих данных (вместо того, чтобы скрывать строки). Чтобы сгруппировать
данные, я выбираю "Данные" -> "Группировать", после чего слева /
над строкой/столбцом, который вы сгруппировали, вы видите маленький знак "+".

У меня есть несколько макросов, которые группируют за меня, но я хочу, чтобы они
автоматически сворачивали группировку после группировки
выбранных строк/столбцов.

12 марта, 11:04, JLGWhiz
написал:

Тим879

Я проверил изменение размера, но это не работает. Я не пытаюсь изменить размер
выделенного диапазона, я просто пытаюсь свернуть/развернуть
группировку.

Спасибо за предложение. Есть другие идеи?

12 марта, 11:04, JLGWhiz
написал:

Тим879

Если после группировки установить для высоты строки/столбца значение 0 или Скрыть,
группа будет свернута. Я не уверен, что это просто обходной путь.
Кто-нибудь знает лучший способ сделать это?

Dim myCol As Range
Dim myRow As Range
Dim R_or_C As String

При ошибке возобновить дальше

Если Selection.Rows.Count = 65536, то
R_or_C = "C"

ElseIf Selection.Columns.Count = 256 Then
R_or_C = "R"

Еще
Пока R_or_C <> "R" И R_or_C <> "C"
R_or_C = UCase(InputBox("Вы хотите разгруппировать выбранные
стрки или столбцы. Для строк введите 'R' для столбцов введите 'C'."))

If R_or_C = "" Then Exit Sub
Wend
End If

Выберите вариант R_or_C

Case "C"
Для каждого myCol в Selection.Columns
myCol.Group
myCol.Hidden = True
Далее

Случай "R"
Для каждой строки myRow в Selection.Rows
myRow.Group
myRow.Hidden = True
Далее

JLGWhiz

Нет, больше никаких предложений. Теперь я понимаю, что вы пытались сделать, и все, что я
знаю о группировке, это группировать или разгруппировать. Вообще с ним не работал.

Тревор Уильямс

Не знаю, нужна ли вам эта информация, но более быстрый способ сделать это
(без всего вашего кода):

ActiveSheet.Outline.ShowLevels RowLevels:=1 ', чтобы свернуть строки
ActiveSheet.Outline.ShowLevels RowLevels:=2 ', чтобы развернуть строки

мариодона

Вывод: узнайте, как добавлять кнопки в сводные таблицы и сводные диаграммы, чтобы быстро разворачивать/сворачивать целые поля с помощью макроса VBA.

Уровень квалификации: средний

Развертывание и свертывание полей занимает много времени

Развертывание и свертывание целых полей в сводной таблице может быть многоэтапным процессом, который требует немного времени. Это особенно актуально для пользователей/потребителей ваших файлов отчетов Excel, которые не знакомы с процессом.

Чтобы развернуть или свернуть ВСЁ поле, мы обычно нажимаем небольшие кнопки расширения (+) и свертывания (-) для каждого элемента в поле.

Для этого есть ярлыки в контекстном меню и на вкладке "Параметры/Анализ" на ленте.

Мы также можем нажать кнопки «Развернуть поле» и «Свернуть поле» на вкладке «Анализ/Параметры» на ленте.Ячейка в области строк или столбцов сводной таблицы должна быть выбрана, чтобы эти кнопки работали (были включены).

Сочетания клавиш для развертывания/свертывания полей:

Развернуть все поле: Alt , A , J или клавиша меню , E , E

Свернуть все поле: Alt , A , H или клавиша меню , E , C

Примечание. Чтобы сочетания клавиш работали, необходимо выделить ячейку в области "Строки" или "Столбцы".

Однако в сводной таблице нет специальных кнопок для развертывания/свертывания всего поля.

Новые кнопки «Развернуть и свернуть» в сводных диаграммах Excel 2016

В Excel 2016 в сводные диаграммы была добавлена ​​новая функция, позволяющая разворачивать или сворачивать поля в области строк. Вы увидите маленькие кнопки плюса и минуса в правом нижнем углу сводной диаграммы.

Однако эта функция доступна ТОЛЬКО в Excel 2016 (Office 365). Итак, я создал несколько макросов, которые будут работать в любой версии Excel как в области строк, так и в области столбцов сводной таблицы или сводной диаграммы.

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

  1. Удалите кнопки полей "Значения" и "Ось" на диаграмме.
  2. Удалите метки осей, заголовок и легенду.
  3. Измените размер диаграммы, чтобы отображались только кнопки "Развернуть/Свернуть".

Диаграмма будет скрыта за кнопками. Таким образом, мы просто используем сводную диаграмму для кнопок развертывания/свертывания. Важно отметить, что это будет работать только для полей в области строк сводной таблицы и только в Excel 2016 (Office 365).

Развернуть и свернуть все макросы сводных полей

Этот набор макросов расширяет или сворачивает поле NEXT в области строк или столбцов. Это позволяет нам детализировать информацию о полях в области строк или столбцов.

Хорошим примером является наличие в сводной таблице полей в области строк для года, квартала, месяца, дня. Мы можем сравнить итоги за год, а затем просмотреть итоги по кварталам или месяцам.

Если сводная таблица в настоящее время свернута по годам, макрос "Expand_Entire_RowField" расширит ВСЕ элементы года, чтобы отобразить кварталы для каждого года.

Выполнение макроса Collapse_Entire_RowField приведет к сворачиванию элементов Year обратно.

Вы можете скачать файл, содержащий макросы, ниже.

Развернуть Свернуть все поля Macro.xlsm (68,3 КБ)

Назначение макросов фигурам или кнопкам

Мы можем назначить эти макросы фигурам или кнопкам на листе.

Кнопки можно постоянно нажимать, чтобы переходить вверх или вниз по полям. Это позволяет пользователям ваших отчетов быстро разворачивать или сворачивать целые поля.

Фигуры можно вставлять внутрь сводной диаграммы, чтобы имитировать функциональность кнопок развертывания/свертывания в Excel 2016.

Макрокод VBA

Существует четыре разных макроса для развертывания/свертывания областей строк и столбцов. Макросы используют For Next Loops для довольно агрессивного перебора сводных полей и элементов.

Макрос Expand находит свернутое поле в верхней позиции, проверяя свойство ShowDetail каждого PivotItem. Если он НЕ находит развернутый элемент, он расширяет все поле. Если все элементы развернуты, то он переходит к полю в следующей позиции вниз.

Макрос Collapse действует наоборот. Он начинается с самой нижней позиции поля и работает в обратном направлении, пока не найдет элемент сводки, который НЕ свернут. Если он находит развернутый элемент, он сворачивает все поле. В противном случае он перемещается вверх к полю в следующей позиции в области строк и повторяет процесс.

Скачать файл

Вы можете скачать файл, содержащий макросы для областей строк и столбцов.

Развернуть Свернуть все поля Macro.xlsm (68,3 КБ)

Как мы можем его улучшить?

Кнопки макроса "Развернуть/Свернуть" должны стать хорошим дополнением к любому файлу отчета, который вы отправляете пользователям, не являющимся экспертами в области Excel. Я видел, как многие пользователи несколько раз нажимали маленькие кнопки «развернуть/свернуть» для каждого элемента сводки просто потому, что не знали, что есть лучший способ. Этот макрос должен помочь им быстрее и проще просматривать сводные таблицы или диаграммы.

Пожалуйста, оставьте комментарий ниже с вопросами или предложениями о том, как мы можем это улучшить. Большое спасибо! 🙂

Вам также может понравиться

Как искать в раскрывающихся списках проверки данных в Excel

Быстрый способ вставки срезов в рабочие листы Excel

3 совета по списку полей сводной таблицы в Excel

Анализ банковских выписок с помощью сводных таблиц

Отлично!
Спасибо, Джон

Спасибо за поддержку, Хосин! 🙂

Привет, Джон. Мне очень нравится ваша идея с макросом, но мне кажется, что она не работает.
Это только для Office 2016?
Я использую 2010.

Привет, Владимир!
Я думаю, что это должно работать в 2010 году, но не проверял. Вы получаете сообщение об ошибке с примером файла, который вы можете скачать выше?

Отличная работа… Я очень ценю ее.

Я не знал, что в сводных диаграммах в Excel 2016 есть такие кнопки. Спасибо за создание этого! Кто-то просил вас об этом или вы думали, что это будет весело?

Спасибо, Кевин! 🙂 На создание этого макроса меня вдохновил другой вопрос о группах, о котором я расскажу в следующем посте.

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

Большое спасибо, Джон

По какой-то причине макрос выдает тип ошибки: «Несоответствие типов» в следующей командной строке:

Я получу ту же ошибку, но только после изменения конфигурации сводной таблицы.

Только после внесения изменений в сводную таблицу я получу ту же ошибку.

Отличный макрос Джон, как функциональный, так и обучающий. Мне очень нравится ваш курс, и я учусь каждый раз, когда беру следующий модуль урока.
Я с нетерпением жду вашего обучения, чтобы сделать некоторые из моих электронных таблиц более эффективными!

Большое спасибо, Найджел! Я рад, что вы стали участником курса VBA Pro, и рад слышать, что вы больше узнаете о VBA. 🙂

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

Привет, Джордж!
Отличный вопрос! Иерархия создается с помощью групповой функции сводной таблицы. Вот статья, в которой объясняется группировка дат в сводной таблице по сравнению с использованием формул. Надеюсь, это поможет. Спасибо! 🙂

Джон:
Спасибо. Доказывает, что все мы

Джон:
Спасибо. Доказывает, что нам всем есть чему поучиться. Я с нетерпением жду продолжения жизненного пути к непрерывному обучению!
ГВт

Джон:
Спасибо. Доказывает, что нам всем есть чему поучиться. Я с нетерпением жду продолжения жизненного пути к непрерывному обучению!
Джордж

Извините, я думаю, что загрузил неправильный макрос. Ниже приведена настройка, которую я внес в макрос, чтобы больше не возникала ошибка несоответствия типа 13. Это расширит или свернет все строки или столбцы:
Option Explicit

Sub Expand_Entire_RowField()
'Расширить самое нижнее поле позиции в области строк
', которое в настоящее время развернуто (показ деталей)

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim iFieldCount As Long
Dim iPosition As Long

'Создать ссылку на 1-ю сводную таблицу на листе
'Можно изменить для ссылки на конкретный лист или сводную таблицу.
Set pt = ActiveSheet.PivotTables(1)
'Количество полей в области строк минус 1 (последнее поле не может быть расширено)
iFieldCount = pt.RowFields.Count – 1

'Цикл по позиции поля
For iPosition = 1 To iFieldCount
'Цикл полей в области строк
For Each pf In pt.RowFields
'Если позиция соответствует первому циклу переменная then
If pf.Position = iPosition Then
'Зациклить каждый элемент сводки
Для каждого pi в pf.PivotItems
'Если элемент сводки свернут,
ActiveSheet. PivotTables(1).PivotFields("Годы").ShowDetail = True
ActiveSheet.PivotTables(1).PivotFields("Кварталы").ShowDetail = True
ActiveSheet.PivotTables(1).PivotFields(" Месяцы»).ShowDetail = True
' If pi.ShowDetail = False Then
'Расширить все поле
' pf.ShowDetail = True
'Выйти из макроса
Выйти Sub
' End If
Следующий pi
End If
Следующий pf
'Если строка Exit Sub не нажата, то
'цикл будет продолжаться. следующая позиция поля
Следующая iPosition

' Set pt = ActiveSheet.PivotTables(1)
'
' iFieldCount = pt.RowFields.Count – 1
'
' For iPosition = 1 To iFieldCount
' Для каждого pf в pt.RowFields
' Если pf.Position = iPosition Then
' Для каждого pi в pf.PivotItems
' Если pi.ShowDetail = False Then
' pf.ShowDetail = True
' Exit Sub
' End If
' Next pi
' End If
' Next pf
' Next iPosition

Sub Collapse_Entire_RowField()
'Свернуть самое нижнее поле позиции в области строк
', которое в настоящее время развернуто (показ деталей)

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim iFieldCount As Long
Dim iPosition As Long

'Создать ссылку на 1-ю сводную таблицу на листе
'Можно изменить для ссылки на конкретный лист или сводную таблицу.
Установите pt = ActiveSheet.PivotTables(1)

'Количество полей в области строк минус 1 (последнее поле не может быть расширено)
iFieldCount = pt.RowFields.Count – 1

'Зациклить назад по позиции поля (шаг -1)
For iPosition = iFieldCount To 1 Step -1
'Зациклить поля в области строк
For Every pf In pt.RowFields < br />'Если position соответствует первой переменной цикла, then
If pf.Position = iPosition Then
'Зациклить каждый элемент сводки
For Each pi In pf.PivotItems
'Если элемент сводки раскрывается, затем
ActiveSheet.PivotTables(1).PivotFields("Месяцы").ShowDetail = False
ActiveSheet.PivotTables(1).PivotFields("Кварталы").ShowDetail = False
ActiveSheet .PivotTables(1).PivotFields("Годы").ShowDetail = False
' Если pi.ShowDetail = True Then
'Свернуть все поле
' pf.ShowDetail = False
'Выход из макроса
Exit Sub
' End If
Next pi
End If
Next pf
'Если строка Exit Sub не нажата, то
'цикл продолжится до следующей позиции поля
Следующая iPosition

Sub Expand_Entire_ColumnField()
'Расширить самое нижнее поле позиции в области столбцов
', которое в настоящее время развернуто (показывая детали)

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim iFieldCount As Long
Dim iPosition As Long

Установите pt = ActiveSheet.PivotTables(1)

iFieldCount = pt.ColumnFields.Count – 1

Для iPosition = 1 To iFieldCount
Для каждого pf в pt.ColumnFields
Если pf.Position = iPosition Then
Для каждого pi в pf.PivotItems
ActiveSheet.PivotTables( 1).PivotFields("Годы").ShowDetail = True
ActiveSheet.PivotTables(1).PivotFields("Кварталы").ShowDetail = True
' Если pi.ShowDetail = False Then
' pf.ShowDetail = True
Выйти из подчиненного
' Конец, если
Следующий pi
Конец, если
Следующий pf
Следующая iPosition

Sub Collapse_Entire_ColumnField()
'Свернуть самое нижнее поле позиции в области столбцов
', которое в настоящее время развернуто (показ деталей)

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim iFieldCount As Long
Dim iPosition As Long

'Начать снизу
'Цикл, чтобы найти, отображают ли какие-либо ячейки диапазона данных подробности,
'если нет, перейти к следующему полю,
'если да, свернуть все поле

Установите pt = ActiveSheet.PivotTables(1)

iFieldCount = pt.ColumnFields.Count – 1

For iPosition = iFieldCount To 1 Step -1
Для каждого pf в pt.ColumnFields
If pf.Position = iPosition Then
Для каждого pi в pf.PivotItems
ActiveSheet .PivotTables(1).PivotFields("Кварталы").ShowDetail = False
ActiveSheet.PivotTables(1).PivotFields("Годы").ShowDetail = False
' If pi.ShowDetail = True Then < br />' pf.ShowDetail = False
Exit Sub
' End If
Следующий pi
End If
Следующий pf
Следующий iPosition

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim iFieldCount As Long
Dim iPosition As Long

Set pt = Worksheets("Сводная таблица").PivotTables("PivotTable1")

iFieldCount = pt.RowFields.Count – 1

For iPosition = 1 To iFieldCount
Для каждого pf в pt.RowFields
Если pf.Position = iPosition Then
Для каждого pi в pf.PivotItems
ActiveSheet.PivotTables( 1).PivotFields("Клиент").ShowDetail = True
ActiveSheet.PivotTables(1).PivotFields("Категория").ShowDetail = True
' Если pi.ShowDetail = False Then
' pf.ShowDetail = True
Выйти из подчиненного
' Конец, если
Следующий pi
Конец, если
Следующий pf
Следующая iPosition

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim iFieldCount As Long
Dim iPosition As Long

Set pt = Worksheets("Сводная таблица").PivotTables("PivotTable1")

iFieldCount = pt.RowFields.Count – 1

For iPosition = iFieldCount To 1 Step -1
Для каждого pf в pt.RowFields
Если pf.Position = iPosition Then
Для каждого pi в pf.PivotItems
ActiveSheet .PivotTables(1).PivotFields("Категория").ShowDetail = False
ActiveSheet.PivotTables(1).PivotFields("Клиент").ShowDetail = False
' If pi.ShowDetail = True Then < br />' pf.ShowDetail = False
Exit Sub
' End If
Следующий pi
End If
Следующий pf
Следующий iPosition

Привет, Чак!
Спасибо, что поделились. У меня сейчас нет машины с 2010 годом, чтобы проверить. Мы также могли бы добавить некоторую обработку ошибок вокруг проверки ShowDetails, чтобы обойти эти ошибки. Хотя я не совсем уверен, в чем причина.

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

Исследуя с помощью отладчика, я открыл часы в окне Immediate и обнаружил, что pi.ShowDetail имел тип Integer, хотя предполагалось, что это логическое значение. Я не мог понять, почему тип установлен как Integer? Я хотел бы интегрировать снимок отладчика со значением в этом сообщении.

Уважаемый Джон
Большое спасибо за ваше электронное письмо относительно Excel…. и я все еще хочу поддерживать с вами связь..

Еще раз спасибо, Джон

С уважением,
Авраам Ли

Джон, я недавно начал подписываться на ваши советы из-за нового проекта. В. В двух словах, мне нужно улучшить работу с Vlookup, сводной таблицей и анализом данных между различными электронными таблицами в быстром темпе, например СЕЙЧАС.

Каковы ваши предложения, пожалуйста?

Кроме того, ваши советы всегда ПОТРЯСАЮЩИЕ

Поздравляем с новым концертом! 🙂

Вот несколько полезных ссылок. У меня есть бесплатная серия видео из 3 частей о формулах поиска, включая ВПР, ИНДЕКС, ПОИСКПОЗ и другие. Вот ссылка для регистрации. Это бесплатно.

У меня также есть бесплатный вебинар, посвященный началу работы со сводными таблицами. Вот ссылка для регистрации.

Надеюсь, это поможет вам начать работу. Оба эти ресурса предшествуют моим полным углубленным курсам.

Еще раз спасибо за вашу поддержку! Рад видеть вас здесь! 🙂

Только после изменения сводной таблицы я получу ту же ошибку, что и Чак.

Привет, Фрэнк!
Похоже, это может быть проблема с Excel 2010. Мне нужно будет получить машину с 2010 для тестирования. Тем временем, если у кого-то есть обходной путь/решение, не стесняйтесь публиковать.

Я не уверен, возникает ли ошибка только в этом сводном элементе или в свойстве ShowDetails.

Спасибо, Джон, за это замечательное письмо.
Макросы еще не проверял, но обязательно сделаю.
Если возникнут какие-либо вопросы, я оставлю сообщение. Еще раз спасибо.

Читайте также: