Скрыть столбец в excel макрос условие

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

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

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

outline1.gif

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

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

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

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

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

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

outline2.gif

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

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

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

Если выделить несколько строк или столбцов, а затем выбрать в меню Данные — Группа и структура — Группировать (Data — Group and Outline — Group), то они будут охвачены прямоугольной скобкой (сгруппированы). Причем группы можно делать вложенными одна в другую (разрешается до 8 уровней вложенности):

outline3.gif

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

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

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

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

outline5.gif

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

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

outline4.gif

Теперь откроем редактор 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:

outline7.png

…и хотите их скрывать одним движением, то предыдущий макрос придется «допилить». Если у вас 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 или старше, то придется придумывать другие способы.

Ссылки по теме

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

Макрос скрывающий столбцы по условию в ячейке

Anton85

Дата: Понедельник, 13.06.2016, 21:49 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Пожалуйста помогите написать макрос. Задача макроса скрывать столбцы лист1, в зависимости от содержимого в лист2 ячейка A2.
Если Лист2. A2 = скорость, то скрыть Лист1.C:F
Если Лист2. A2 = сила, то скрыть Лист1.A:B и E:F
Если Лист2. A2 = выносливость, то скрыть Лист1.A:D

К сообщению приложен файл:

11111.xlsx
(8.8 Kb)

 

Ответить

_Boroda_

Дата: Понедельник, 13.06.2016, 21:59 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Так нужно?
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = «A2» Then
        With Sheets(«Лист1»)
            .Columns(«A:F»).EntireColumn.Hidden = True
            On Error Resume Next
            c_ = WorksheetFunction.Match(Target, .Rows(1), 0)
            .Columns(c_).Resize(, 2).EntireColumn.Hidden = False
        End With
    End If
End Sub

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Anton85

Дата: Вторник, 14.06.2016, 07:00 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Да отлично, спасибо. Только можно активацию по кнопке?

 

Ответить

_Boroda_

Дата: Вторник, 14.06.2016, 07:46 |
Сообщение № 4

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Да не вопрос


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Anton85

Дата: Вторник, 14.06.2016, 08:00 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

отлично, спасибо)))))

 

Ответить

Anton85

Дата: Пятница, 17.06.2016, 12:24 |
Сообщение № 6

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

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

Задача макроса скрывать столбцы лист1, в зависимости от содержимого в лист2 ячейка A2.
Если Лист2. A2 = скорость, то скрыть Лист1.K:BA
Если Лист2. A2 = сила, то скрыть Лист1.G:J и M:BA
Если Лист2. A2 = выносливость, то скрыть Лист1.G:L

Сообщение отредактировал Anton85Пятница, 17.06.2016, 12:52

 

Ответить

sboy

Дата: Пятница, 17.06.2016, 13:24 |
Сообщение № 7

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Добрый день.
Без файлика как-то так
[vba]

Код

Sub SkrSt()
With Sheets(«Лист1»)
.Columns(«A:BA»).EntireColumn.Hidden = False
If Range(«A2»).Value = «скорость» Then .Range(«K:BA»).EntireColumn.Hidden = True
If Range(«A2»).Value = «сила» Then .Range(«G:J, M:BA»).EntireColumn.Hidden = True
If Range(«A2»).Value = «выносливость» Then .Range(«G:L»).EntireColumn.Hidden = True
End With
End Sub

[/vba]


Яндекс: 410016850021169

 

Ответить

_Boroda_

Дата: Пятница, 17.06.2016, 14:07 |
Сообщение № 8

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

А зачем всегда 3 раза проверку делать? После первого True дальше не нужно
[vba]

Код

Sub SkrSt1()
    With Sheets(«Лист1»)
        .Columns(«A:BA»).EntireColumn.Hidden = False
        If Range(«A2»).Value = «скорость» Then .Range(«K:BA»).EntireColumn.Hidden = True: Exit Sub
        If Range(«A2»).Value = «сила» Then .Range(«G:J, M:BA»).EntireColumn.Hidden = True: Exit Sub
        If Range(«A2»).Value = «выносливость» Then .Range(«G:L»).EntireColumn.Hidden = True
    End With
End Sub

[/vba]
А вообще-то лучше наверное через Case
[vba]

Код

Sub SkrSt()
    With Sheets(«Лист1»)
        .Columns(«A:BA»).EntireColumn.Hidden = False
        Select Case Range(«A2»)
            Case «скорость»
                .Range(«K:BA»).EntireColumn.Hidden = True
            Case «сила»
                .Range(«G:J, M:BA»).EntireColumn.Hidden = True
            Case «выносливость»
                .Range(«G:L»).EntireColumn.Hidden = True
        End Select
    End With
End Sub

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

sboy

Дата: Пятница, 17.06.2016, 15:11 |
Сообщение № 9

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

А вообще-то лучше наверное через Case

соглашусь yes


Яндекс: 410016850021169

 

Ответить

Anton85

Дата: Пятница, 17.06.2016, 23:09 |
Сообщение № 10

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Спасибо, все наконец то заработало)))). Выбрал вариант через Case)))

 

Ответить

Довольно часто появляется необходимость в 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. Сумму значений столбца можно узнать, выделив столбец и посмотрев параметр «Сумма выделенных ячеек» в строке состояния. Строка состояния находится внизу окна, под горизонтальной полосой прокрутки.

как определить сумму значений в столбце

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

состав строки состояния в Excel

Как выделить столбец? Как выделить несколько столбцов подряд? Как выделить несколько столбцов выборочно?

Выделить столбец можно однократным кликом левой кнопкой мыши по имени столбца либо нажатием сочетания клавиш Ctrl+Spase (клавиша пробел), либо поместить курсор (маркер выделения) в самую первую ячейку нужного столбца и нажать сочетание клавиш Ctrl+Shift+Стрелка вниз. Несколько столбцов подряд можно выделить, проведя курсором по названиям столбцов с нажатой левой кнопкой мыши, либо выделить первый столбец нужного диапазона столбцов, а затем при нажатой клавише Shift выделить последний столбец диапазона столбцов. Выделить несколько столбцов выборочно, можно щелкая курсором по именам нужных столбцов при нажатой клавише Ctrl.

Как изменить стиль заголовков столбцов?

В Excel столбцы буквами обозначаются по умолчанию, но есть еще способ обозначения столбцов цифрами. При этом способе адрес выделенной ячейки выглядит не как А1, а как R1C1, где R1 (сокращение слова Row – строка) обозначает номер строки, а C1 (сокращение слова Column – колонка) обозначает номер столбца. Изменить способ отображения заголовков столбцов можно в меню «Параметры Excel» после нажатия кнопки «Office». В разделе «Формулы» в группе «Работа с формулами» необходимо поставить флажок перед полем «Стиль ссылок R1C1».

stil ssylok R1C1

Как закрепить столбцы на листе? Как снять закрепление столбцов на листе?

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

как закрепить первый столбец

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

Как изменить ширину столбца? Как задать автоподбор ширины столбца? Как задать фиксированную ширину столбцов? Как задать ширину столбцов по умолчанию?

Ширину столбцов в Excel можно изменять как в сторону увеличения, так и в сторону уменьшения. Для изменения ширины столбца подводим курсор мыши к границе двух соседних столбцов и в тот момент, когда курсор станет двухсторонней горизонтальной стрелкой, нажимаем левую кнопку мыши и перемещаем границу между столбцами в нужном направлении. При этом если было выделено несколько столбцов, то ширина изменилась бы у каждого из них. Автоподбор ширины столбца можно задать на вкладке «Главная», в группе «Ячейки», меню кнопки «Формат», выбрав пункт «Автоподбор ширины столбца».

как установить автоподбор ширины столбца

Автоподбор ширины столбца можно также задать двойным кликом левой кнопки мыши на правой границе столбца возле его имени. При этом если выделены несколько столбцов, то автоподбор применится ко всем столбцам выделенной группы. Ширина столбца по умолчанию зафиксирована в 8,43 символа при размере букв 10 пунктов, но фиксированную ширину можно задать своим собственным значением, для этого выделяем нужные столбцы, на выделенном диапазоне кликаем правой кнопкой мыши и в контекстном меню выбираем пункт «Ширина столбца…». В появившемся окне «Ширина столбца» устанавливаем нужную нам ширину. Для того чтобы задать произвольную ширину столбца по умолчанию, заходим на вкладку «Главная», выбираем группу «Ячейки», раскрываем меню кнопки «Формат» и выбираем пункт «Ширина по умолчанию», где задаем свое значение, после чего нажимаем кнопку «ОК».

Как транспонировать значения столбцов в строки?

Без особого труда можно преобразовать Excel столбец в строку и наоборот. Такое преобразование называется транспонированием. Для преобразования столбца в строку необходимо скопировать данные столбца, после чего нажать правую кнопку мыши и из контекстного меню выбрать пункт «Специальная вставка…». В появившемся диалоговом окне «Специальная вставка» поставить галочку в поле «транспонировать» и нажать кнопку «ОК». Еще один способ — зайти на вкладку «Главная», в группу «Буфер обмена», открыть меню кнопки «Вставить» и выбрать из него пункт «Транспонировать».

как транспонировать столбец в строку

Как добавить новый столбец в таблицу? Как вставить скопированный столбец?

Вставить новый столбец в таблицу можно, кликнув правой кнопкой мыши на имени столбца, левее которого надо поместить новый столбец и выбрать в контекстном меню пункт «Вставить». Аналогичное действие можно осуществить через главное меню Excel. В окне открытого листа выделите столбец, левее которого надо поместить новый столбец, после этого зайдите на вкладку «Главная», в группу «Ячейки», раскройте меню кнопки «Вставить» и выберите в списке пункт «Вставить столбцы на лист». При вставке новых столбцов, общее количество столбцов на листе остается неизменным.

как вставить столбцы на лист

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

specialnaya vstavka

Как очистить столбцы от содержимого? Как скрыть и отобразить столбцы? Как удалить столбцы?

Для очистки столбцов от содержимого нужно выделить нужный диапазон и нажать клавишу Delete на клавиатуре либо кликнуть правой кнопкой мыши на выделенном диапазоне и выбрать из контекстного меню пункт «Очистить содержимое». Очистить столбцы от содержимого можно также на вкладке «Главная» в группе «Редактирование», меню кнопки «Очистить».

как очистить содержимое столбцов в Excel

Через меню кнопки «Очистить» можно на выбор произвести очистку выделенных столбцов от содержимого (текста, цифровых значений, формул), от форматов, от примечаний, а можно произвести полную очистку, выбрав пункт «Очистить все». Информацию, расположенную в столбцах или строках, можно скрывать. Скрытые данные не удаляются, а временно не выводятся на экран. Для скрытия столбца, его необходимо выделить, затем щелкнуть правой кнопкой мыши в любом месте выделенного диапазона либо на названии столбца и выбрать из контекстного меню пункт «Скрыть». Для отображения скрытых столбцов нужно выделить два столбца, между которых находятся скрытые столбцы и, щелкнув правой кнопкой мыши, выбрать из контекстного меню пункт «Отобразить». Скрытие и отображение столбцов можно также производить на вкладке «Главная», в группе «Ячейки», в меню кнопки «Формат».

как отобразить скрытые столбцы

Удаление столбцов производится абсолютно аналогично их скрытию, только в контекстном меню вместо пункта «Скрыть» выбирается пункт «Удалить», а на вкладке «Главная», в группе «Ячейки», выбирается кнопка «Удалить» вместо кнопки «Формат».

Как удалять либо скрывать столбцы макросом при соблюдении условия?

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

На выбор пользователя надстройка позволяет удалять либо скрывать пустые столбцы, а может на выбор пользователя скрывать либо удалять столбцы, удовлетворяющие заданным условиям, например, таким как содержание заданного текста, либо отсутствием такового, может учитывать регистр при поиске текста в столбцах, а может не учитывать. Для того, чтобы при удалении/скрытии в таблицах не пострадали столбцы с какими-либо промежуточными результатами, введено дополнительное ограничение по номерам столбцов, при помощи которого можно задавать диапазон для действия макроса. Если же диапазон не задан пользователем, то макрос работает со столбцами, так называемого используемого диапазона, то есть со столбца, в котором содержится первая заполненная информацией ячейка, до столбца с последней заполненной ячейкой. Пользователю также предлагается ограничить обработку данных либо активным листом, либо всеми листами активной рабочей книги.

Как удалять либо скрывать столбцы макросом по нескольким условиям?

Специально для случаев, когда необходимо удалять либо скрывать столбцы, содержащие разные слова, либо сочетания слов, надстройка доработана таким образом, чтобы можно было ввести сразу все искомые слова либо их сочетания в поле для ввода текста. При этом в качестве разделителя используется знак точка с запятой (;). Это позволяет сократить количество запусков макроса и сделать необходимые манипуляции со столбцами за один раз.

Надстройка позволяет:

1) Скрывать либо удалять столбцы;

2) Выбирать одно из нескольких условий для искомых значений (совпадает, не совпадает, содержит, не содержит, начинается, не начинается, заканчивается, не заканчивается);

3) Находить пустые столбцы и столбцы, содержащие заданный текст;

4) Позволяет осуществлять одновременный поиск различных текстовых выражений, внесенных в поле для ввода текста с использованием знака-разделителя. В качестве знака-разделителя используется (;) точка с запятой ;

5) Выбирать различные диапазоны для обработки данных;

6) Ограничивать выбранные диапазоны номерами столбцов слева и/или справа для избежания повреждения боковых шапок таблиц и столбцов с разного рода промежуточными итогами;

7) Осуществлять поиск текста в столбцах как с учетом регистра, так и без.

удаление и скрытие столбцов по нескольким условиямCompleteSolutionмакрос (надстройка) для удаления/скрытия пустых столбцов и столбцов по условию

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

Другие материалы по теме:

Как скрыть или отобразить строки и столбцы с помощью свойства 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


Понравилась статья? Поделить с друзьями:
  • Скрыть подпись в excel
  • Скрыть столбец excel миф
  • Скрыть ошибки в ячейках в excel
  • Скрыть список листов excel
  • Скрыть область примечаний word