Скрытие/отображение ненужных строк и столбцов
Постановка задачи
Предположим, что у нас имеется вот такая таблица, с которой приходится «танцевать» каждый день:
Кому таблица покажется маленькой — мысленно умножьте ее по площади в двадцать раз, добавив еще пару кварталов и два десятка крупных российских городов.
Задача — временно убирать с экрана ненужные в данный момент для работы строки и столбцы, т.е.,
- скрывать подробности по месяцам, оставляя только кварталы
- скрывать итоги по месяцам и по кварталам, оставляя только итог за полугодие
- скрывать ненужные в данный момент города (я работаю в Москве — зачем мне видеть Питер?) и т.д.
В реальной жизни примеров таких таблиц — море.
Способ 1. Скрытие строк и столбцов
Способ, прямо скажем, примитивный и не очень удобный, но два слова про него сказать можно. Любые выделенные предварительно строки или столбцы на листе можно скрыть, щелкнув по заголовку столбца или строки правой кнопкой мыши и выбрав в контекстном меню команду Скрыть (Hide):
Для обратного отображения нужно выделить соседние строки/столбцы и, щелкнув правой кнопкой мыши, выбрать в меню, соответственно, Отобразить (Unhide).
Проблема в том, что с каждым столбцом и строкой придется возиться персонально, что неудобно.
Способ 2. Группировка
Если выделить несколько строк или столбцов, а затем выбрать в меню Данные — Группа и структура — Группировать (Data — Group and Outline — Group), то они будут охвачены прямоугольной скобкой (сгруппированы). Причем группы можно делать вложенными одна в другую (разрешается до 8 уровней вложенности):
Более удобный и быстрый способ — использовать для группировки выделенных предварительно строк или столбцов сочетание клавиш Alt+Shift+стрелка вправо, а для разгруппировки Alt+Shift+стрелка влево, соответственно.
Такой способ скрытия ненужных данных гораздо удобнее — можно нажимать либо на кнопку со знаком «+» или «—«, либо на кнопки с цифровым обозначением уровня группировки в левом верхнем углу листа — тогда все группы нужного уровня будут сворачиваться или разворачиваться сразу.
Кроме того, если в вашей таблице присутствуют итоговые строки или столбцы с функцией суммирования соседних ячеек, то есть шанс (не 100%-ый правда), что Excel сам создаст все нужные группировки в таблице одним движением — через меню Данные — Группа и структура — Создать структуру (Data — Group and Outline — Create Outline). К сожалению, подобная функция работает весьма непредсказуемо и на сложных таблицах порой делает совершенную ерунду. Но попробовать можно.
В Excel 2007 и новее все эти радости находятся на вкладке Данные (Data) в группе Структура (Outline):
Способ 3. Скрытие помеченных строк/столбцов макросом
Этот способ, пожалуй, можно назвать самым универсальным. Добавим пустую строку и пустой столбец в начало нашего листа и отметим любым значком те строки и столбцы, которые мы хотим скрывать:
Теперь откроем редактор Visual Basic (ALT+F11), вставим в нашу книгу новый пустой модуль (меню Insert — Module) и скопируем туда текст двух простых макросов:
Sub Hide() Dim cell As Range Application.ScreenUpdating = False 'отключаем обновление экрана для ускорения For Each cell In ActiveSheet.UsedRange.Rows(1).Cells 'проходим по всем ячейкам первой строки If cell.Value = "x" Then cell.EntireColumn.Hidden = True 'если в ячейке x - скрываем столбец Next For Each cell In ActiveSheet.UsedRange.Columns(1).Cells 'проходим по всем ячейкам первого столбца If cell.Value = "x" Then cell.EntireRow.Hidden = True 'если в ячейке x - скрываем строку Next Application.ScreenUpdating = True End Sub Sub Show() Columns.Hidden = False 'отменяем все скрытия строк и столбцов Rows.Hidden = False End Sub
Как легко догадаться, макрос Hide скрывает, а макрос Show — отображает обратно помеченные строки и столбцы. При желании, макросам можно назначить горячие клавиши (Alt+F8 и кнопка Параметры), либо создать прямо на листе кнопки для их запуска с вкладки Разработчик — Вставить — Кнопка (Developer — Insert — Button).
Способ 4. Скрытие строк/столбцов с заданным цветом
Допустим, что в приведенном выше примере мы, наоборот, хотим скрыть итоги, т.е. фиолетовые и черные строки и желтые и зеленые столбцы. Тогда наш предыдущий макрос придется немного видоизменить, добавив вместо проверки на наличие «х» проверку на совпадение цвета заливки с произвольно выбранными ячейками-образцами:
Sub HideByColor() Dim cell As Range Application.ScreenUpdating = False For Each cell In ActiveSheet.UsedRange.Rows(2).Cells If cell.Interior.Color = Range("F2").Interior.Color Then cell.EntireColumn.Hidden = True If cell.Interior.Color = Range("K2").Interior.Color Then cell.EntireColumn.Hidden = True Next For Each cell In ActiveSheet.UsedRange.Columns(2).Cells If cell.Interior.Color = Range("D6").Interior.Color Then cell.EntireRow.Hidden = True If cell.Interior.Color = Range("B11").Interior.Color Then cell.EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub
Однако надо не забывать про один нюанс: этот макрос работает только в том случае, если ячейки исходной таблицы заливались цветом вручную, а не с помощью условного форматирования (это ограничение свойства Interior.Color). Так, например, если вы с помощью условного форматирования автоматически подсветили в своей таблице все сделки, где количество меньше 10:
…и хотите их скрывать одним движением, то предыдущий макрос придется «допилить». Если у вас Excel 2010-2013, то можно выкрутиться, используя вместо свойства Interior свойство DisplayFormat.Interior, которое выдает цвет ячейки вне зависимости от способа, которым он был задан. Макрос для скрытия синих строк тогда может выглядеть так:
Sub HideByConditionalFormattingColor() Dim cell As Range Application.ScreenUpdating = False For Each cell In ActiveSheet.UsedRange.Columns(1).Cells If cell.DisplayFormat.Interior.Color = Range("G2").DisplayFormat.Interior.Color Then cell.EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub
Ячейка G2 берется в качестве образца для сравнения цвета. К сожалению, свойство DisplayFormat появилось в Excel только начиная с 2010 версии, поэтому если у вас Excel 2007 или старше, то придется придумывать другие способы.
Ссылки по теме
- Что такое макрос, куда вставлять код макроса, как их использовать
- Автоматическая группировка в многоуровневых списках
Макрос скрывающий столбцы по условию в ячейке |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Довольно часто появляется необходимость в Excel скрывать или отображать строки или столбцы. Особенно это актуально, когда на листе размещается очень много информации и часть из них является вспомогательной и требуется не всегда и тем самым загромождает пространство, ухудшая восприятие. Если это приходится делать часто, то делать это с помощью меню неудобно, особенно если приходится скрывать и отображать разные столбцы и строки.
Для существенного удобства можно написать простенький макрос, привязав его к кнопке и делать это одним щелком мыши.
Вот так выглядят простые примеры, с помощью которых Вы без труда сможете скрывать или отображать строки и столбцы с помощью VBA
Пример 1: Скрыть строку 2 в Excel
Sub HideString() ‘Это название макроса
Rows(2).Hidden = True
End Sub
Пример 2: Скрыть несколько строк в Excel (строку 3-5)
Sub HideStrings()
Rows(«3:5»).Hidden = True
End Sub
Пример 3: Скрыть столбец 2 в Excel
Sub HideCollumn()
Columns(2).Hidden = True
End Sub
Пример 4: Скрытие нескольких столбцов в Excel
Sub HideCollumns()
Columns(«E:F»).Hidden = True
End Sub
Пример 5: Скрытие строки по имени ячейки в Excel
Sub HideCell()
Range(«Возможности Excel»).EntireRow.Hidden = True
End Sub
Пример 6: Скрытие нескольких строк по адресам ячеек
Sub HideCell()
Range(«B3:D4»).EntireRow.Hidden = True
End Sub
Пример 7: Скрытие столбца по имени ячейки
Sub HideCell()
Range(«Возможности Excel»).EntireColumn.Hidden = True
End Sub
Пример 8: Скрытие нескольких столбцов по адресам ячеек
Sub HideCell()
Range(«C2:D5»).EntireColumn.Hidden = True
End Sub
Как видите процесс автоматического скрытия строк и столбцов очень прост, а применений данному приему огромное множество.
Для того, чтобы отобразить строки и столбцы в Excel вы можете воспользоваться этими же макросами, но вместе True необходимо указать False
Например, макрос для того, чтобы отобразить строку 2 будет выглядеть следующим образом:
Sub ViewString()
Rows(2).Hidden = False
End Sub
Надеемся, что данная статья была полезна вам и ответила на вопрос: как скрыть или отобразить строки и столбцы в Excel с помощью VBA
Спасибо за внимание.
Рассмотрим наиболее распространенные вопросы, касающиеся столбцов Excel, на примере Excel 2007, а также познакомимся с надстройкой (макросом), автоматизирующей удаление и скрытие столбцов Excel по заданному условию.
С чем имеем дело?
Рабочая книга (Workbook) – это файл Excel, содержащий рабочие листы. Рабочий лист (Worksheet) — это электронная таблица, которая используется приложением Excel для хранения и обработки данных. Рабочий лист состоит из ячеек. Ячейка – это основной элемент электронной таблицы. Именно ячейки являются носителями информации и содержат текст, значения, примечания, формулы и т.д. Каждая ячейка имеет свой адрес – номер строки и номер столбца, на пересечении которых эта ячейка находится. Ячейки организованы в столбцы и строки и являются частью рабочей книги.
Сколько столбцов в рабочем листе?
Количество столбцов в Excel варьируется в зависимости от версии, так в версии Excel 2003 столбцов 256, а в версиях 2007 и 2010 уже 16 384. Сумму значений столбца можно узнать, выделив столбец и посмотрев параметр «Сумма выделенных ячеек» в строке состояния. Строка состояния находится внизу окна, под горизонтальной полосой прокрутки.
Состав строки состояния может быть настроен на усмотрение пользователя, для этого необходимо кликнуть правой кнопкой мыши на свободном месте строки состояния. Ниже приведен набор параметров, выводить которые в строке состояния можно путем установки флажка перед соответствующим параметром.
Как выделить столбец? Как выделить несколько столбцов подряд? Как выделить несколько столбцов выборочно?
Выделить столбец можно однократным кликом левой кнопкой мыши по имени столбца либо нажатием сочетания клавиш Ctrl+Spase (клавиша пробел), либо поместить курсор (маркер выделения) в самую первую ячейку нужного столбца и нажать сочетание клавиш Ctrl+Shift+Стрелка вниз. Несколько столбцов подряд можно выделить, проведя курсором по названиям столбцов с нажатой левой кнопкой мыши, либо выделить первый столбец нужного диапазона столбцов, а затем при нажатой клавише Shift выделить последний столбец диапазона столбцов. Выделить несколько столбцов выборочно, можно щелкая курсором по именам нужных столбцов при нажатой клавише Ctrl.
Как изменить стиль заголовков столбцов?
В Excel столбцы буквами обозначаются по умолчанию, но есть еще способ обозначения столбцов цифрами. При этом способе адрес выделенной ячейки выглядит не как А1, а как R1C1, где R1 (сокращение слова Row – строка) обозначает номер строки, а C1 (сокращение слова Column – колонка) обозначает номер столбца. Изменить способ отображения заголовков столбцов можно в меню «Параметры Excel» после нажатия кнопки «Office». В разделе «Формулы» в группе «Работа с формулами» необходимо поставить флажок перед полем «Стиль ссылок R1C1».
Как закрепить столбцы на листе? Как снять закрепление столбцов на листе?
При работе с таблицами, которые в ширину выходят за видимые пределы экрана для удобства ввода и просмотра данных можно закрепить нужные столбцы. Для этого необходимо выделить столбец, следующий за нужным, перейти во вкладку «Вид», в группу «Окно», нажать кнопку «Закрепить области» и в выпадающем списке команд выбрать пункт «Закрепить области». Для закрепления первого столбца можно не выделяя столбца выбрать пункт «Закрепить первый столбец» в меню кнопки «Закрепить области».
Для закрепления следующих столбцов нужно снять предыдущее закрепление, если оно имеется. Для этого надо зайти на все ту же вкладку «Вид» и в группе «Окно» раскрыть меню кнопки «Закрепить области» после чего выбрать пункт «Снять закрепление областей».
Как изменить ширину столбца? Как задать автоподбор ширины столбца? Как задать фиксированную ширину столбцов? Как задать ширину столбцов по умолчанию?
Ширину столбцов в Excel можно изменять как в сторону увеличения, так и в сторону уменьшения. Для изменения ширины столбца подводим курсор мыши к границе двух соседних столбцов и в тот момент, когда курсор станет двухсторонней горизонтальной стрелкой, нажимаем левую кнопку мыши и перемещаем границу между столбцами в нужном направлении. При этом если было выделено несколько столбцов, то ширина изменилась бы у каждого из них. Автоподбор ширины столбца можно задать на вкладке «Главная», в группе «Ячейки», меню кнопки «Формат», выбрав пункт «Автоподбор ширины столбца».
Автоподбор ширины столбца можно также задать двойным кликом левой кнопки мыши на правой границе столбца возле его имени. При этом если выделены несколько столбцов, то автоподбор применится ко всем столбцам выделенной группы. Ширина столбца по умолчанию зафиксирована в 8,43 символа при размере букв 10 пунктов, но фиксированную ширину можно задать своим собственным значением, для этого выделяем нужные столбцы, на выделенном диапазоне кликаем правой кнопкой мыши и в контекстном меню выбираем пункт «Ширина столбца…». В появившемся окне «Ширина столбца» устанавливаем нужную нам ширину. Для того чтобы задать произвольную ширину столбца по умолчанию, заходим на вкладку «Главная», выбираем группу «Ячейки», раскрываем меню кнопки «Формат» и выбираем пункт «Ширина по умолчанию», где задаем свое значение, после чего нажимаем кнопку «ОК».
Как транспонировать значения столбцов в строки?
Без особого труда можно преобразовать Excel столбец в строку и наоборот. Такое преобразование называется транспонированием. Для преобразования столбца в строку необходимо скопировать данные столбца, после чего нажать правую кнопку мыши и из контекстного меню выбрать пункт «Специальная вставка…». В появившемся диалоговом окне «Специальная вставка» поставить галочку в поле «транспонировать» и нажать кнопку «ОК». Еще один способ — зайти на вкладку «Главная», в группу «Буфер обмена», открыть меню кнопки «Вставить» и выбрать из него пункт «Транспонировать».
Как добавить новый столбец в таблицу? Как вставить скопированный столбец?
Вставить новый столбец в таблицу можно, кликнув правой кнопкой мыши на имени столбца, левее которого надо поместить новый столбец и выбрать в контекстном меню пункт «Вставить». Аналогичное действие можно осуществить через главное меню Excel. В окне открытого листа выделите столбец, левее которого надо поместить новый столбец, после этого зайдите на вкладку «Главная», в группу «Ячейки», раскройте меню кнопки «Вставить» и выберите в списке пункт «Вставить столбцы на лист». При вставке новых столбцов, общее количество столбцов на листе остается неизменным.
При вставке скопированных столбцов предусмотрены разные режимы вставки, так например, при осуществлении вставки в контекстном меню есть три пункта, относящиеся к вставке – «Вставить», «Специальная вставка» и «Вставить скопированные ячейки». При выборе пункта «Вставить», данные вставляются вместо или поверх тех данных, которые находились в столбце, куда производится вставка. При выборе же пункта «Вставить скопированные ячейки» данные вставляются рядом, старые значение столбца сохраняются, но смещаются при этом в сторону. Описанные выше способы вставки, сделают полные копии ячеек в столбцах, включая текст, форматы, формулы и примечания. При выборе пункта «Специальная вставка» можно произвести частичное копирование, выбрав из предложенного списка только нужный параметр.
Как очистить столбцы от содержимого? Как скрыть и отобразить столбцы? Как удалить столбцы?
Для очистки столбцов от содержимого нужно выделить нужный диапазон и нажать клавишу Delete на клавиатуре либо кликнуть правой кнопкой мыши на выделенном диапазоне и выбрать из контекстного меню пункт «Очистить содержимое». Очистить столбцы от содержимого можно также на вкладке «Главная» в группе «Редактирование», меню кнопки «Очистить».
Через меню кнопки «Очистить» можно на выбор произвести очистку выделенных столбцов от содержимого (текста, цифровых значений, формул), от форматов, от примечаний, а можно произвести полную очистку, выбрав пункт «Очистить все». Информацию, расположенную в столбцах или строках, можно скрывать. Скрытые данные не удаляются, а временно не выводятся на экран. Для скрытия столбца, его необходимо выделить, затем щелкнуть правой кнопкой мыши в любом месте выделенного диапазона либо на названии столбца и выбрать из контекстного меню пункт «Скрыть». Для отображения скрытых столбцов нужно выделить два столбца, между которых находятся скрытые столбцы и, щелкнув правой кнопкой мыши, выбрать из контекстного меню пункт «Отобразить». Скрытие и отображение столбцов можно также производить на вкладке «Главная», в группе «Ячейки», в меню кнопки «Формат».
Удаление столбцов производится абсолютно аналогично их скрытию, только в контекстном меню вместо пункта «Скрыть» выбирается пункт «Удалить», а на вкладке «Главная», в группе «Ячейки», выбирается кнопка «Удалить» вместо кнопки «Формат».
Как удалять либо скрывать столбцы макросом при соблюдении условия?
При работе с объемными таблицами данных, зачастую приходится заниматься скрытием или удалением лишних столбцов с данными, это могут быть, например, пустые столбцы, либо столбцы с промежуточными расчетами, либо столбцы, содержащие определенный текст. Процесс, мягко говоря, утомительный. Как раз в таких случаях существенно облегчит жизнь надстройка для быстрой и безошибочной обработки столбцов. Посмотрим на возможности, предоставляемые этой надстройкой.
На выбор пользователя надстройка позволяет удалять либо скрывать пустые столбцы, а может на выбор пользователя скрывать либо удалять столбцы, удовлетворяющие заданным условиям, например, таким как содержание заданного текста, либо отсутствием такового, может учитывать регистр при поиске текста в столбцах, а может не учитывать. Для того, чтобы при удалении/скрытии в таблицах не пострадали столбцы с какими-либо промежуточными результатами, введено дополнительное ограничение по номерам столбцов, при помощи которого можно задавать диапазон для действия макроса. Если же диапазон не задан пользователем, то макрос работает со столбцами, так называемого используемого диапазона, то есть со столбца, в котором содержится первая заполненная информацией ячейка, до столбца с последней заполненной ячейкой. Пользователю также предлагается ограничить обработку данных либо активным листом, либо всеми листами активной рабочей книги.
Как удалять либо скрывать столбцы макросом по нескольким условиям?
Специально для случаев, когда необходимо удалять либо скрывать столбцы, содержащие разные слова, либо сочетания слов, надстройка доработана таким образом, чтобы можно было ввести сразу все искомые слова либо их сочетания в поле для ввода текста. При этом в качестве разделителя используется знак точка с запятой (;). Это позволяет сократить количество запусков макроса и сделать необходимые манипуляции со столбцами за один раз.
Надстройка позволяет:
1) Скрывать либо удалять столбцы;
2) Выбирать одно из нескольких условий для искомых значений (совпадает, не совпадает, содержит, не содержит, начинается, не начинается, заканчивается, не заканчивается);
3) Находить пустые столбцы и столбцы, содержащие заданный текст;
4) Позволяет осуществлять одновременный поиск различных текстовых выражений, внесенных в поле для ввода текста с использованием знака-разделителя. В качестве знака-разделителя используется (;) точка с запятой ;
5) Выбирать различные диапазоны для обработки данных;
6) Ограничивать выбранные диапазоны номерами столбцов слева и/или справа для избежания повреждения боковых шапок таблиц и столбцов с разного рода промежуточными итогами;
7) Осуществлять поиск текста в столбцах как с учетом регистра, так и без.
макрос (надстройка) для удаления/скрытия пустых столбцов и столбцов по условию
При нажатии кнопки «Пуск» макрос скроет либо удалит пустые столбцы, либо столбцы, содержащие заданный пользователем текст на активном листе либо на всех листах рабочей книги.
Другие материалы по теме:
Как скрыть или отобразить строки и столбцы с помощью свойства Range.Hidden из кода VBA Excel? Примеры скрытия и отображения строк и столбцов.
Range.Hidden — это свойство, которое задает или возвращает логическое значение, указывающее на то, скрыты строки (столбцы) или нет.
Синтаксис
Expression — выражение (переменная), возвращающее объект Range.
- True — диапазон строк или столбцов скрыт;
- False — диапазон строк или столбцов не скрыт.
Примечание
Указанный диапазон (Expression) должен охватывать весь столбец или строку. Это условие распространяется и на группы столбцов и строк.
Свойство Range.Hidden предназначено для чтения и записи.
Примеры кода с Range.Hidden
Пример 1
Варианты скрытия и отображения третьей, пятой и седьмой строк с помощью свойства Range.Hidden:
Sub Primer1() ‘Скрытие 3 строки Rows(3).Hidden = True ‘Скрытие 5 строки Range(«D5»).EntireRow.Hidden = True ‘Скрытие 7 строки Cells(7, 250).EntireRow.Hidden = True MsgBox «3, 5 и 7 строки скрыты» ‘Отображение 3 строки Range(«L3»).EntireRow.Hidden = False ‘Скрытие 5 строки Cells(5, 250).EntireRow.Hidden = False ‘Скрытие 7 строки Rows(7).Hidden = False MsgBox «3, 5 и 7 строки отображены» End Sub |
Пример 2
Варианты скрытия и отображения третьего, пятого и седьмого столбцов из кода VBA Excel:
Sub Primer2() ‘Скрытие 3 столбца Columns(3).Hidden = True ‘Скрытие 5 столбца Range(«E2»).EntireColumn.Hidden = True ‘Скрытие 7 столбца Cells(25, 7).EntireColumn.Hidden = True MsgBox «3, 5 и 7 столбцы скрыты» ‘Отображение 3 столбца Range(«C10»).EntireColumn.Hidden = False ‘Отображение 5 столбца Cells(125, 5).EntireColumn.Hidden = False ‘Отображение 7 столбца Columns(«G»).Hidden = False MsgBox «3, 5 и 7 столбцы отображены» End Sub |
Пример 3
Варианты скрытия и отображения сразу нескольких строк с помощью свойства Range.Hidden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Primer3() ‘Скрытие одновременно 2, 3 и 4 строк Rows(«2:4»).Hidden = True MsgBox «2, 3 и 4 строки скрыты» ‘Скрытие одновременно 6, 7 и 8 строк Range(«C6:D8»).EntireRow.Hidden = True MsgBox «6, 7 и 8 строки скрыты» ‘Отображение 2, 3 и 4 строк Range(«D2:F4»).EntireRow.Hidden = False MsgBox «2, 3 и 4 строки отображены» ‘Отображение 6, 7 и 8 строк Rows(«6:8»).Hidden = False MsgBox «6, 7 и 8 строки отображены» End Sub |
Пример 4
Варианты скрытия и отображения сразу нескольких столбцов из кода VBA Excel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Primer4() ‘Скрытие одновременно 2, 3 и 4 столбцов Columns(«B:D»).Hidden = True MsgBox «2, 3 и 4 столбцы скрыты» ‘Скрытие одновременно 6, 7 и 8 столбцов Range(«F3:H40»).EntireColumn.Hidden = True MsgBox «6, 7 и 8 столбцы скрыты» ‘Отображение 2, 3 и 4 столбцов Range(«B6:D6»).EntireColumn.Hidden = False MsgBox «2, 3 и 4 столбцы отображены» ‘Отображение 6, 7 и 8 столбцов Columns(«F:H»).Hidden = False MsgBox «6, 7 и 8 столбцы отображены» End Sub |