Как скрыть строку в excel по значению ячейки

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

док скрыть строки на основе значения 1


В Excel вы можете использовать функцию «Фильтр» для фильтрации и скрытия строк на основе значения ячейки.

1. Выберите данные, которые нужно отфильтровать, и нажмите Данные > Фильтр. Смотрите скриншот:

док скрыть строки на основе значения 2

2. Затем щелкните стрелку вниз, чтобы отобразить раскрывающийся список фильтров, и щелкните Числовые фильтры (или текстовые фильтры) > Больше чем (вы можете выбрать другой критерий в подменю). Смотрите скриншот:

док скрыть строки на основе значения 3

3. В появившемся диалоговом окне введите критерий в текстовое поле рядом с больше чем. Смотрите скриншот:

док скрыть строки на основе значения 4

4. Нажмите OK. Теперь отображаются только данные, превышающие 3000, а строки, данные которых меньше 3000, скрыты.

док скрыть строки на основе значения 5


Более того, если вас интересует код VBA, здесь я могу представить код VBA для скрытия строк на основе значения ячейки.

1. Нажмите Alt + F11 ключи для включения Microsoft Visual Basic для приложений окно.

2. Затем нажмите Вставить > Модули открыть новый Модули window и вставьте в него код VBA.

VBA: скрыть строки на основе значения ячейки.

Sub HideRow()
'Updateby20150618
Dim Rng As Range
Dim WorkRng As Range
Dim xNumber As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
xNumber = Application.InputBox("Number", xTitleId, "", Type:=1)
For Each Rng In WorkRng
    Rng.EntireRow.Hidden = Rng.Value < xNumber
Next
End Sub

3. Затем нажмите F5 нажмите клавишу для запуска VBA, затем выберите диапазон данных, в котором вы хотите скрыть строки в всплывающем диалоговом окне (за исключением заголовков). Смотрите скриншот:

док скрыть строки на основе значения 6

4. Нажмите OK, и введите номер критерия во втором диалоговом окне. Смотрите скриншот:

док скрыть строки на основе значения 7

5. Нажмите OK. Теперь строки, данные которых меньше 3000, скрыты.

Наконечник: Если вы хотите скрыть строки, превышающие 3000, просто измените Rng.EntireRow.Hidden = Rng.Value <xNumber в Rng.EntireRow.Hidden = Rng.Value> xNumber, или если вы хотите скрыть строки, данные которых равны 3000, измените на Rng.EntireRow.Hidden = Rng.Value = xNumber.



ЕСЛИ вам не нравится включать функцию фильтра, как и VBA, я представляю вам удобный инструмент — Выбрать определенные ячейки of Kutools for Excel чтобы быстро выбрать целые строки на основе значения ячейки, затем вы можете скрыть их.

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

Наконечник. Если вы хотите получить бесплатную пробную версию функции извлечения текста, пожалуйста, перейдите на бесплатную пробную версию Kutools for Excel сначала, а затем перейдите к применению операции в соответствии с вышеуказанными шагами.

1. Выберите диапазон данных и нажмите Кутулс > Выберите > Выбрать определенные ячейки. Смотрите скриншот:

док скрыть строки на основе значения 14

2. в Выбрать определенные ячейки диалог, проверьте Весь ряд под Тип выбора раздел, затем выберите нужный критерий из Конкретный тип список, затем введите число или текст в текстовое поле. Смотрите скриншот:

док скрыть строки на основе значения 9

3. Нажмите Ok > OK закрыть диалоги. Теперь выбираются строки, данные которых меньше 3000, и вам просто нужно щелкнуть правой кнопкой мыши заголовок строки, чтобы отобразить контекстное меню, и выбрать «Скрыть». Смотрите скриншот:
док скрыть строки на основе значения 10

Теперь строки, данные которых меньше 3000, скрыты.

док скрыть строки на основе значения 11

Наконечник:

1. Если вы хотите скрыть строки, содержащие определенное значение, вы можете выбрать Комплект и введите определенное значение в текстовое поле.

док скрыть строки на основе значения 12

2. Если вы хотите скрыть строки, которые содержат значения больше, но меньше значений, вы можете выбрать Больше и Менее, затем введите значения в два поля и установите флажок И,.

док скрыть строки на основе значения 13

Работы С Нами Kutools for ExcelАвтора Выбрать определенные ячейки утилита, вы можете определить расположение определенных ячеек, выбрать целые строки или столбцы на основе значения ячейки и так далее. Щелкните здесь, чтобы узнать больше об этой утилите.



Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

 

dat3010

Пользователь

Сообщений: 14
Регистрация: 04.02.2013

Добрый день

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

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

Заранее благодарен

Прикрепленные файлы

  • тест1.xlsx (9.15 КБ)

 

LVL

Пользователь

Сообщений: 903
Регистрация: 01.01.1970

Т.е. Вы хотите чтобы макрос скрывал нужные строки при изменении значения в результате пересчета формулы?

Изменено: LVL19.04.2013 13:54:46

 

GIG_ant

Пользователь

Сообщений: 3102
Регистрация: 24.12.2012

Объясните подробней.
Не понятна суть вопроса, для чего выводить дополнительную ячейку с формулой, если можно, анализировать значение ячейки В6?

Или вам нужно скрывать только абрикосы?

 

dat3010

Пользователь

Сообщений: 14
Регистрация: 04.02.2013

Я сильно сократил саму таблицу, ради примера

главное значение в ячейке A1, а это значения зависят еще от нескольких ячеек, не только B6

 

dat3010

Пользователь

Сообщений: 14
Регистрация: 04.02.2013

#5

19.04.2013 14:39:41

Цитата
LVL пишет:
Т.е. Вы хотите чтобы макрос скрывал нужные строки при изменении значения в результате пересчета формулы?

именно это и нужно

 

LVL

Пользователь

Сообщений: 903
Регистрация: 01.01.1970

На сколько мне известно, отследить изменение значения ячейки при пересчете формулы в ней нельзя.

 

GIG_ant

Пользователь

Сообщений: 3102
Регистрация: 24.12.2012

Тогда сильно сокращенный макрос  :)

 

dat3010

Пользователь

Сообщений: 14
Регистрация: 04.02.2013

Огромное Спасибо
все работает

 

Геннадий

Пользователь

Сообщений: 296
Регистрация: 27.12.2012

А вот у меня не будет работать
На фирме не хотят ставить новый оффис (стОит Ексель 2003), боятся штрафов
GIG_ant, пожалуйста, макрос бросьте сюда

Изменено: Геннадий19.04.2013 15:39:41

 

GIG_ant

Пользователь

Сообщений: 3102
Регистрация: 24.12.2012

 

Геннадий

Пользователь

Сообщений: 296
Регистрация: 27.12.2012

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#12

19.04.2013 17:21:49

Цитата
Геннадий пишет:
На фирме не хотят ставить новый оффис (стОит Ексель 2003), боятся штрафов

Скачайте конвертер — за него не штрафуют ))

 

dat3010

Пользователь

Сообщений: 14
Регистрация: 04.02.2013

Странно, но теперь не работает «отменить» (ctrl-z) функция после любого ввода данных в любую ячейку, даже на другом листе или книге, если в это же самое время время открыт файл с макросом

Изменено: dat301022.04.2013 14:14:55

 

Геннадий

Пользователь

Сообщений: 296
Регистрация: 27.12.2012

Юрий М:Скачайте конвертер — за него не штрафуют ))
_____________________________________
Всё ОК. Спасибо!

 

mapk

Пользователь

Сообщений: 25
Регистрация: 01.01.1970

Подскажите пжлста код, как скрать строки №2-7 на второй странице, если на первой значение A1=Yes, а если значение A1=No, на второй странице скрать строки №10-15.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Скрытие (скрАтие)  :)  должно происходить по кнопке или автоматически?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#17

28.06.2013 20:31:37

Вы не сказали, по какому условию отображать. Поэтому попробуйте так (скопируйте в модуль первого листа):

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        If Target = "Yes" Then
            Sheets("Лист2").Rows("2:7").EntireRow.Hidden = True
        Else
            Sheets("Лист2").Rows("2:7").EntireRow.Hidden = False
        End If
        If Target = "No" Then
            Sheets("Лист2").Rows("10:15").EntireRow.Hidden = True
        Else
            Sheets("Лист2").Rows("10:15").EntireRow.Hidden = False
        End If
    End If
End Sub
 

mapk

Пользователь

Сообщений: 25
Регистрация: 01.01.1970

#18

01.07.2013 15:16:55

Юрий М, благодарю, то что требовалось.  :)

Скажите, пжлста а что в этом коде не так, не хочет работать.

Код
Sub HideMe(A As Long) 'A - номер столбца для проверки 
    Dim i As Long 
    For i = 33 to 42
        If Cells(i, A).Value = 0 Then
            Rows(i).Hidden = True 
        Else 
            Rows(i).Hidden = False 
        End If 
    Next i 
End Sub

Изменено: mapk01.07.2013 15:29:14

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

А зачем это? (A As Long)
Если хотите указывать не номер, а букву столбца, то пишите в кавычках: If Cells(i, «A»)

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

Ну можно и так — тогда вызывать придётся другим кодом, указывая столбец:
call  HideMe(4)
Будет по D проверять.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Ну да — номер, а не букву, да ещё и Long)

 

mapk

Пользователь

Сообщений: 25
Регистрация: 01.01.1970

вот что получилось — ничего, как заставить код работать?
прошу помощи

Прикрепленные файлы

  • himeme.xlsm (13.09 КБ)

Изменено: mapk02.07.2013 10:55:41

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

mapk, Вы понимаете, что пишете? Call HideMe(1) — без процедуры. Просто поместите Ваш код (цикл) в событие листа Worksheet_Change.

 

mapk

Пользователь

Сообщений: 25
Регистрация: 01.01.1970

#24

02.07.2013 12:00:26

Юрий, Вы правы я не понимаю что пишу, поэтому и спрашиваю:

так?

Код
Private Sub Worksheet_Change() 
    Call HideMe(1) 
End Sub

Изменено: mapk02.07.2013 12:00:39

 

mapk

Пользователь

Сообщений: 25
Регистрация: 01.01.1970

#25

02.07.2013 12:09:19

Разобрался:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Long
    For i = 5 To 10
        If Cells(i, 1).Value = 0 Then
            Rows(i).Hidden = True
        Else
            Rows(i).Hidden = False
        End If
    Next i
End Sub

Благодарю повторно.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#26

02.07.2013 12:11:35

Вот без передачи параметра — сразу в модуле листа:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
    If Not Intersect(Target, Range("A5:A10")) Is Nothing Then
        For i = 5 To 10
            If Cells(i, 1).Value = 0 Then
                Rows(i).Hidden = True
            Else
                Rows(i).Hidden = False
            End If
        Next i
    End If
End Sub
 

mapk

Пользователь

Сообщений: 25
Регистрация: 01.01.1970

Юрий, скажите пожалуйста, как быть в случае, когда значения 1/0 копируються из другого листа.
При этом страница на которой работает код, не обновляется. (только при вводе в ручную)

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Не верю: скопировал ноль с другого листа, вставил — всё сработало.

 

mapk

Пользователь

Сообщений: 25
Регистрация: 01.01.1970

Я имел ввиду есть значение переходит из другой страницы, путем:
=Sheet2!A2

Значение в поле проврки 1/0 меняеться, но строка не скрываеться.

Прикрепленные файлы

  • himeme.xlsm (16.19 КБ)

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#30

02.07.2013 13:35:28

Копирование и присвоение формулой — разные вещи. Если формулы — используйте событие листа Calculate.

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

(4 шага) Скрыть строки на основе значения ячейки с помощью фильтра

(5 шагов) Скрыть строки на основе по значению ячейки с помощью VBA

(3 шага) Скрыть строки на основе значения ячейки с помощью Kutools for Excel


Содержание

  1. Скрыть строки на основе значения ячейки с помощью фильтра
  2. Скрыть строки на основе значения ячейки с помощью VBA
  3. Быстрое выделение ячеек на основе критериев в Excel
  4. Скрыть строки на основе значения ячейки с помощью Kutools for Excel
  5. Скрыть строки на основе значения ячейки

Скрыть строки на основе значения ячейки с помощью фильтра

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

1. Выберите данные, которые нужно отфильтровать, и нажмите Данные > Фильтр . См. Снимок экрана:

2. Затем нажмите стрелку вниз, чтобы отобразить раскрывающийся список фильтров, и нажмите Числовые фильтры (или текстовые фильтры) > Больше, чем (вы можете выбрать другой критерий нужно из подменю). См. Снимок экрана:

3. В появившемся диалоговом окне введите критерий в текстовое поле рядом с больше чем. См. Снимок экрана:

4. Нажмите ОК . Теперь отображаются только данные больше 3000, а строки, данные которых меньше 3000, скрыты.


Скрыть строки на основе значения ячейки с помощью VBA

Кроме того, если вас интересует Код VBA, здесь я могу ввести код VBA для скрытия строк на основе значения ячейки.

1. Нажмите клавиши Alt + F11 , чтобы открыть окно Microsoft Visual Basic для приложений .

2. Затем нажмите Вставить > Module , чтобы открыть новое окно Module , и вставьте в него ниже код VBA.

VBA: скрыть строки на основе значения ячейки.

3. Затем нажмите клавишу F5 , чтобы запустить VBA, затем выберите диапазон данных, в котором вы хотите скрыть строки, в всплывающем диалоговом окне (за исключением заголовков). См. Снимок экрана:

4. Нажмите OK и введите номер критерия во втором диалоговом окне. См. Снимок экрана:

5. Нажмите ОК . Теперь строки, данные которых меньше 3000, скрыты.

Совет: Если вы хотите скрыть строки, размер которых превышает 3000, просто измените Rng.EntireRow.Hidden = Rng. Value xNumber, или если вы хотите скрыть строки, данные которых равны 3000, измените на Rng.EntireRow. Hidden = Rng.Value = xNumber.


Быстрое выделение ячеек на основе критериев в Excel

С помощью Kutools for Excel’s Выбрать определенные ячейки , вы можете выбрать ячейки на основе одного или двух критериев один раз.
Kutools for Excel: с более чем 300 удобными добавками Excel -ins, попробуйте без ограничений в течение 30 дней.

Скрыть строки на основе значения ячейки с помощью Kutools for Excel

ЕСЛИ вам не нравится включать функцию фильтра, ни VBA, здесь я представляю вам удобный инструмент – Select Specific Ячейки из Kutools for Excel , чтобы быстро выбирать целые строки на основе значения ячейки, затем вы можете скрыть их.

Kutools for Excel , с более чем 300 удобными функциями, упрощает вашу работу.

Бесплатная загрузка
Бесплатная полнофункциональная версия через 30 дней

После бесплатной установки Kutools for Excel, сделайте следующее:

Совет. Если вы хотите получить бесплатную пробную версию функции извлечения текста, сначала попробуйте бесплатно попробовать Kutools for Excel, а затем примените операцию в соответствии с вышеуказанными шагами.

1. Выберите диапазон данных и нажмите Kutools > Выбрать > Выбрать определенные ячейки . См. Снимок экрана:

2. В диалоговом окне Выбрать определенные ячейки установите флажок Вся строка в разделе Тип выбора , затем выберите нужный критерий из Определенный тип , затем введите число или текст в текстовое поле. См. Снимок экрана:

3. Нажмите ОК > ОК , чтобы закрыть диалоговые окна. Теперь выбираются строки, данные которых меньше 3000, и вам просто нужно щелкнуть правой кнопкой мыши заголовок строки, чтобы отобразить контекстное меню, и выбрать «Скрыть». См. Снимок экрана:

Теперь строки, данные которых меньше 3000, скрыты.

Совет:

1. Если вы хотите скрыть строки, содержащие определенное значение, вы можете выбрать Содержит и ввести определенное значение в текстовое поле.

2. Если вы хотите скрыть строки, содержащие значения больше, но меньше значений, вы можете выбрать Больше и Меньше , а затем введите значения в два и установите флажок И .

С помощью Kutools for Excel Выбрать конкретный Ячейки , вы можете определить расположение определенных ячеек, выбрать целые строки или столбцы на основе значения ячейки и т. Д. Щелкните здесь, чтобы узнать больше об этой утилите.

Скрыть строки на основе значения ячейки

Kutools for Excel: 300+ функций, которые вы должны иметь в Excel, 30-дневную бесплатную пробную версию отсюда.



Фильтрация данных

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

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

  • Отключить. Установка флажка отключает фильтрацию данных;

  • флажки, соответствующие различным фильтрам:

    • Скрыть пустые строки и столбцы. Скрываются столбцы и строки, не содержащие никаких данных;

    • Скрыть строки и столбцы с нулевыми значениями. Скрываются столбцы и строки, содержащие только нулевые значения;

    • Скрыть строки и столбцы с нечисловыми значениями. Скрываются строки и столбцы, содержащие только нечисловые значения;

    • Скрыть строки и столбцы по условию. Фильтр не реализован.

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

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

    • Скрыть ячейки. Группа служит для настройки условия фильтрации числовых значений. Скрыты будут значения, соответствующие заданному условию. По умолчанию условие не задано.

Доступные условия

    • равные А;

    • не равные А;

    • больше А;

    • меньше А;

    • большие или равные А;

    • меньшие или равные А;

    • между А и В включительно;

    • меньшие А или большие В.

    • Скрыть. Группа служит для настройки параметров скрытия ячеек. Если флажок установлен, то соответствующий тип ячеек будет скрыт. Возможно скрыть: нулевые, нечисловые, пустые ячейки;

    • Оставлять владельцев нескрытых элементов. Установка флажка позволяет оставлять в «отфильтрованной» таблице владельцев (родителей) элементов, не отвечающих условию фильтрации, даже если их собственные значения удовлетворяют условию фильтрации;

    • Область действия. Группа служит для указания области таблицы, к которой будет применяться фильтрация:

      • Область применения. Диапазон ячеек таблицы, предназначенных для фильтрации. Возможные варианты: фильтрация в рамках всей таблицы либо в рамках выделенной области;

      • Область действия. Ячейки в заданном диапазоне, предназначенные для фильтрации. Возможные варианты: фильтрация только строк, фильтрация только столбцов, фильтрация строк и столбцов.

См. также:

Работа с таблицей данных

Макрос на скрытие строк по условию

Irokezx

Дата: Воскресенье, 30.07.2017, 15:40 |
Сообщение № 1

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

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

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


Excel 2013

Добрый день, уважаемые форумчане!

Выкладываю пример макроса для решения следующей задачи (см. файл-пример): автоматически скрывать/показывать строки при проверке условия в ячейках B8:B19 (List1).

[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range) ‘Задаём событие, при котором запускается макрос
Application.ScreenUpdating = False ‘Отключаем обновление экрана во время выполнения макроса
Dim i& ‘Объявляем переменную
For i = 8 To 19 ‘Указываем диапазон цикла, в данном случае по номерам строк
If Range(«B» & i).Value = «» Then ‘Проверяем, пустые ли ячейки, соответствующие указанному выше диапазону, в интересующем столбце («B»)
Rows(i).EntireRow.Hidden = True ‘Скрываем строки, если эти ячейки пустые
Else: Rows(i).EntireRow.Hidden = False ‘Отображаем строки, если ячейки заполнены
End If ‘Закрываем конструкцию проверки указанных условий
Next ‘Запускаем описанную выше процедуру для каждого значения переменной из указанного диапазона цикла
End Sub

[/vba]

Собственно макрос работает, но у меня возник ряд вопросов, связанный с теоретической частью VBA (уровень моих знаний около нулевой отметки):

1) Соответствует ли содержимое моих комментариев после знака апострофа (см. тело макроса) правильному описанию выполняемой процедуры?
2) Было бы интересно посмотреть более рациональные (Ваши) варианты решения для этой задачки с использованием VBA-кода, если они существуют.
3) Чем отличаются между собой макросы типов Sub/Private Sub/Public Sub? Если я правильно понял, процедуру Private Sub можно запустить только из модуля, в котором он прописан (т.е. в моём случае это List1), тогда как процедуру Sub возможно выполнить из любой части рабочей книги. Разницу между Sub и Public Sub понять не могу.
4) Есть ли возможность написания аналогичного макроса, при условии проверки несмежных диапазонов листа? Полагаю, это можно осуществить в одном коде путём обозначения нескольких переменных и перечисления для каждой условия проверки. На этот вопрос участников форума прошу на текущий момент не выкладывать готовое решение. Хочется увидеть ответ в формате Есть/Нет и Правильный/Неправильный ход мысли.

 

Ответить

_Boroda_

Дата: Воскресенье, 30.07.2017, 16:16 |
Сообщение № 2

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

1. Если не сильно придираться к определениям, то да

2. Для небольших объемов все нормально. Для больших — Вы независимо от того, скрыта ячейка или нет, все равно с ней что-то делаете. Зачем, если Вам нужно скрыть, а она уже скрыта? Или наоборот — открыть, а она уже открыта (кстати, как у Вас может быть заполнена ячейка, если перед этим она скрыта была? Её ж для этого открыть нужно). По возможности к листу нужно как можно меньше обращаться — сильно влияет на скорость. Поэтому я бы написал что-то типа:
Сначала всё открываем[vba]

Код

Rows(«8:19»).EntireRow.Hidden = False

[/vba]потом пробегаемся по ячейкам и собираем их адреса в одну кучу. А потом что-то типа
[vba]

Код

Range(«B6:B7,B9,B11,B14,B16,B18:B20,B22»).RowHeight = 0

[/vba]
Можно и не пробегаться циклом. Если ячеек не очень много (могу ошибаться, вроде до 2^13 = 8192) и там действительно реально пусто, а не результат формулы «», то прокатит вот так
[vba]

Код

Range(«B8:B19»).SpecialCells(xlCellTypeBlanks).RowHeight = 0

[/vba]
И Application.ScreenUpdating нужно возвращать в True. Теоретически он возвращается сам, но здесь на форуме с год назад была тема про тормоза макроса (сейчас искать не буду — долго), где лечение заключалось как раз в этом.

3. В общих чертах, не придираясь к конкретным словам, да, все верно. Sub по умолчанию означает Public Sub. В этом отличие от переменных, которые по умолчанию Private

4. См. п.2

Файл не смотрел


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

 

Ответить

Irokezx

Дата: Вторник, 01.08.2017, 02:05 |
Сообщение № 3

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

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

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


Excel 2013

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

 

Ответить

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как скрыть столбец в excel с паролем
  • Как скрыть строку в excel клавишами
  • Как скрыть столбец в excel плюсик
  • Как скрыть строку в excel для всех таблица
  • Как скрыть столбец в excel от просмотра

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии