Скрытие/показ ненужных строк и столбцов

Постановка задачи

Предположим, у нас есть такая таблица, с которой нам приходится «танцевать» каждый день:

 

Кому таблица покажется маленькой – мысленно умножьте ее раз двадцать на площадь, добавив еще пару кварталов и два десятка крупных городов. 

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

  • скрыть детали по месяцам, оставив только кварталы
  • скрыть итоги по месяцам и кварталам, оставив только итог за полгода
  • скрыть ненужные на данный момент города (я работаю в Москве – зачем мне видеть Питер?) и т.д.

В реальной жизни примеров таких таблиц море.

Способ 1: скрытие строк и столбцов

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

 

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

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

Способ 2. Группировка

Если вы выберете несколько строк или столбцов, а затем выберите в меню Данные – Группа и Структура – ​​Группа (Данные — Группа и Структура — Группа), то они будут заключены в квадратную скобку (сгруппированы). При этом группы могут быть вложены одна в другую (допускается до 8 уровней вложенности):

Более удобный и быстрый способ — использовать сочетание клавиш для группировки заранее выбранных строк или столбцов. Alt+Shift+Стрелка вправои для разгруппировки Alt+Shift+Стрелка влево, Соответственно.

Этот способ сокрытия ненужных данных гораздо удобнее – можно либо нажать на кнопку с надписью «+, либо-«, либо на кнопки с числовым уровнем группировки в левом верхнем углу листа — тогда все группы нужного уровня будут свернуты или развернуты сразу.

Таким образом, если ваша таблица содержит итоговые строки или столбцы с функцией суммирования соседних ячеек, то есть вероятность (не 100% правда), что Excel он создаст все необходимые группы в таблице одним движением – через меню Данные – Группа и структура – ​​Создать структуру (Данные — Группировать и Структура — Создать структуру). К сожалению, такая функция работает очень непредсказуемо и иногда творит полную ерунду на сложных таблицах. Но вы можете попробовать.

В Excel 2007 и новее все эти радости находятся на вкладке Данные (Дата) в группе   Структура (Контур):

Способ 3. Скрытие выделенных строк/столбцов с помощью макроса

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

Теперь давайте откроем редактор Visual Basic (ALT + F11), вставляем в нашу книгу новый пустой модуль (меню Вставка – Модуль) и скопируйте туда текст двух простых макросов:

Sub Hide() Затемнить ячейку как диапазон Application.ScreenUpdating = False 'Отключить обновление экрана для ускорения для каждой ячейки в ActiveSheet.UsedRange.Rows(1).Cells 'Перебрать все ячейки в первой строке, если cell.Value = "x " Тогда ячейка .EntireColumn.Hidden = True 'если в ячейке x - скрыть столбец Далее для каждой ячейки In ActiveSheet.UsedRange.Columns(1).Cells 'пройти через все ячейки первого столбца If cell.Value = "x" Тогда cell.EntireRow.Hidden = True 'если в ячейке x - скрыть строку Next Application.ScreenUpdating = True End Sub Sub Show() Columns.Hidden = False 'отменить скрытие всех строк и столбцов Rows.Hidden = False End Sub  

Как вы могли догадаться, макрос Спрятать скрывается и макрос Показать – Отображает строки и столбцы с обратными метками. При желании макросам можно назначить горячие клавиши (Alt + F8 и кнопка параметры) или создайте кнопки прямо на листе, чтобы запускать их с вкладки. Разработчик – Вставка – Кнопка (Разработчик — Вставка — Кнопка).

Способ 4. Скрытие строк/столбцов заданным цветом

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

Sub HideByColor() Затемнить ячейку как диапазон Application.ScreenUpdating = False для каждой ячейки в ActiveSheet.UsedRange.Rows(2).Cells Если cell.Interior.Color = Range("F2").Interior.Color Тогда cell.EntireColumn.Hidden = Истина Если cell.Interior.Color = Диапазон("K2").Interior.Color Тогда cell.EntireColumn.Hidden = Истина Далее Для каждой ячейки в ActiveSheet.UsedRange.Columns(2).Cells Если cell.Interior.Color = Диапазон ("D6").Interior.Color Тогда cell.EntireRow.Hidden = True Если cell.Interior.Color = Range("B11").Interior.Color Тогда cell.EntireRow.Hidden = True Следующее приложение.ScreenUpdating = True End Sub  

Однако нельзя забывать об одном нюансе: этот макрос работает только в том случае, если ячейки исходной таблицы были заполнены цветом вручную, а не с использованием условного форматирования (это ограничение свойства Interior.Color). Так, например, если вы автоматически выделили в таблице все сделки, число которых меньше 10, с помощью условного форматирования:

Скрытие/показ ненужных строк и столбцов

… и вы хотите их скрыть одним движением, тогда предыдущий макрос придется «доделать». Если у вас Excel 2010-2013, то можно выйти используя вместо свойства Дизайн собственность DisplayFormat.Interior, который выводит цвет ячейки независимо от того, как он был установлен. Макрос для скрытия синих линий может выглядеть так:

Sub HideByConditionalFormattingColor() Тусклая ячейка как диапазон Application.ScreenUpdating = False для каждой ячейки в ActiveSheet.UsedRange.Columns(1).Cells If cell.DisplayFormat.Interior.Color = Range("G2").DisplayFormat.Interior.Color Тогда ячейка .EntireRow.Hidden = True Следующее приложение.ScreenUpdating = True End Sub  

Ячейка G2 используется в качестве образца для сравнения цветов. К сожалению, собственность Формат отображения появился в Excel только начиная с 2010 версии, поэтому если у вас Excel 2007 или старше, вам придется придумывать другие способы.

  • Что такое макрос, куда вставлять код макроса, как их использовать
  • Автоматическая группировка в многоуровневые списки

 

Оставьте комментарий