Как скрывать строку в 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.

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

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

В этой статье объясняется, как с помощью условного форматирования для отображения или скрытия строки в повторяющуюся таблицу или повторяющийся раздел, в зависимости от того, нужно ли данных в строке совпадает со значением элемента управления поле со списком. Например если шаблона формы повторяющуюся таблицу, которая содержит строки товаров, которые относятся к одной из трех категорий (A, B или C), можно использовать условное форматирование для определения отображаемые строки, в зависимости от параметров, которые делают пользователей в форме.

Примечание: Чтобы предоставить пользователям возможность отобразить или скрыть сведения в форме можно использовать фильтры. Однако поскольку фильтры не поддерживаются для шаблон формы с поддержкой веб-браузера, условное форматирование является альтернативой фильтров в шаблонах форм с поддержкой браузера.

В этой статье

  • Шаг 1: Добавление элементов управления

  • Шаг 2: Укажите условного форматирования

  • Шаг 3: Предварительный просмотр шаблона формы

Шаг 1: Добавление элементов управления

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

  1. В шаблоне формы щелкните место вставки поле со списком и повторяющуюся таблицу.

  2. Если область задач Элементы управления не отображается, щелкните Другие элементы управления в меню Вставка или нажмите клавиши ALT+I, C.

  3. В разделе Вставить элементы управления в области задач элементы управления выберите элемент Список и нажмите кнопку Повторяющаяся таблица.

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

  5. Над полем списка, добавленного на шаблон формы, введите текст, который читает фильтра по типу:.

  6. Введите названия столбцов в первой строке повторяющейся таблицы, чтобы первый столбец считывает продукта, во втором столбце считывает Типи третий столбец считывает цены.

К началу страницы

Шаг 2: Укажите условного форматирования

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

  1. Дважды щелкните поле со списком.

  2. Откройте вкладку Данные.

  3. В разделе элементы списка нажмите кнопку Добавить.

  4. В поле значение в диалоговом окне Добавить вариант введите Aи нажмите кнопку ОК.

  5. Повторите шаги 3 и 4 для добавления значений для B, C и d.

  6. В списке значений выберите D и нажмите кнопку По умолчанию.

  7. Выберите повторяющуюся таблицу в шаблоне формы и в меню Формат выберите Условное форматирование.

  8. В диалоговом окне Условное форматирование нажмите кнопку Добавить.

  9. В разделе это условие в первом поле выберите поле, которое соответствует второго столбца повторяющейся таблицы.

  10. Во втором поле выберите не равно.

  11. В третьем поле нажмите кнопку выбрать поля или группы.

  12. В диалоговом окне Выбор поля или группы выберите поле, соответствующее поле списка, добавленного в шаблоне формы и нажмите кнопку ОК.

    Примечание: Условие будет динамически сравнения двух значений.

  13. В разделе Применить форматирование в диалоговом окне Условное форматирование установите флажок Скрыть этот элемент управления.

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

  14. Чтобы вернуться в шаблоне формы, дважды нажмите кнопку ОК.

  15. Дважды щелкните элемент управления, во втором столбце повторяющейся таблицы.

  16. Откройте вкладку Данные.

  17. Тип D в поле значение.

К началу страницы

Шаг 3: Предварительный просмотр шаблона формы

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

  1. Чтобы проверить изменения, нажмите кнопку Просмотр на стандартной панели инструментов или нажмите клавиши CTRL+SHIFT+B.

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

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

  3. Для каждой строки во втором столбце повторяющейся таблицы замените значение по умолчанию DA, B или C.

    Примечание: Выражения с учетом регистра.

  4. Изменение выделения в поле со списком. Строк в повторяющейся таблице будут отображаться и больше не будут отображаться при выборе различных параметров.

К началу страницы

Нужна дополнительная помощь?

Как скрыть строки при условии без применения фильтра

Автор Serj Kalsin, 29.01.2010, 13:52

« назад — далее »

Здравствуйте!

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

Приложил файл где все описано что я хочу получить на выходе.
Надеюсь на вашу помощь!!!


Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


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


Жмем ПКМ на название листа — «Исходный текст», попадаем в модуль листа. Туда вставляем такой код

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Or Target.Address = "$C$4" Then
   Rows("29:31").EntireRow.Hidden = [c3] + [c4] = 0
   Rows(28 - ([c3] = 0) - ([c4] = 0) * 2).EntireRow.Hidden = ([c3] = 0) + ([c4] = 0)
End If
End Sub

где
1. $C$3 и $C$4 — адреса ячеек, при изменении значений в которых будет отрабатывать наш макрос,
2. Rows(«29:31») — строки, которые нужно скрывать — отображать,
3. [с3] и [с4] — значения ячек С3 и С4,
4. Rows(«29:31»).EntireRow.Hidden — скрытие строк 29:31 (если не равно 0, то скрыты, если 0 — отображены),
5. 28 — строка, на единицу выше первой строки из п. 2,
6. [c3] = 0 — принимает значение 1, если С3=0, иначе — 0,
7. 28 — ([c3] = 0) — ([c4] = 0) * 2 — принимает значение от 28 до 31 в зависимости от того, равны ли нолю С3 и С4,
8. ([c3] = 0) + ([c4] = 0) — принимает значение от 0 до 2 в зависимости от того, равны ли нолю С3 и С4 (если не равно 0, то строки из п. 7 скрыты, если 0 — отображены),
9. Target — именяемая ячейка.

Уокенбах «Профессиональное програмирование на VBA в Excel » для 2007, для 2003
Джелен «VBA и макросы в майкрософт оффис excel 2007»
Гарнаев «Excel 2002 Разработка приложений»

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Спасибо!
Буду изучать этот код и пытаться его понять.
Огромное спасибо!

А может посоветуете какую-нибудь книгу по макросам, как их программировать и т.п. Или может какой-нибудь ресурс.


У меня похожая задача и ваш пример идеально подходит для ее решения.
Но к сожалению не получается составить аналогичный пример.
Помогите плз.

Суть в следующем: Есть ячейка D11 с выпадающим списком от 2х до 8. Нужно что бы при выборе значения скрывались определенные диапазоны строк от 69 до 200 при 2, от 91 до 200 при 3х и т.д.

И есть ячейка D12 в которой тоже выбор значения из списка но уже текстового.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim R%
Application.ScreenUpdating = False
Rows("46:200").EntireRow.Hidden = False
If Target.Address = "$D$11" Then
   If Target.Value <> 8 Then
     R = Choose(Target.Value, 47, 69, 91, 113, 157, 179)
     Rows(R & ":200").EntireRow.Hidden = True
    End If
End If
Application.ScreenUpdating = True
End Sub
в модуль листа


Спасибо огромное!
Есть только проблема когда удаляешь значение из ячейки D11 макрос выдает ошибку.
А нужно что бы он делал строки видимыми.

И как мне учесть выбор из ячейки d12? Попробовал по аналогии с вашим макросом не получилось.


зачем удалять? ставите 8 и все кассы видны.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim R%
Application.ScreenUpdating = False
Rows("46:200").EntireRow.Hidden = False
If Target.Address = "$D$11" Then
   If Target.Value <> "" Then
      If Target.Value <> 8 Then
      R = Choose(Target.Value, 47, 69, 91, 113, 157, 179)
      Rows(R & ":200").EntireRow.Hidden = True
      End If
   End If
End If
Application.ScreenUpdating = True
End Sub

про d12 опишите что вам там нужно.


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

В ячейке d12 есть выбор между 2 значениями. «Система видеонаблюдения».

Соответственно если выбрана одна из систем 2я скрывается.
Скрываются строки 224:232 если выбран ITV и 233:247 если RVI.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim R%
Application.ScreenUpdating = False
If Target.Address = "$D$11" Then
   If Target.Value <> "" And Target.Value <> 8 Then
      Rows("46:200").EntireRow.Hidden = False
      R = Choose(Target.Value, 47, 69, 91, 113, 157, 179)
      Rows(R & ":200").EntireRow.Hidden = True
   Else
      Rows("46:200").EntireRow.Hidden = False
   End If: Exit Sub
ElseIf Target.Address = "$D$12" Then
   If Target.Value <> "" Then
       Rows("224:247").EntireRow.Hidden = False
       If Target.Value = "RVI" Then
       Rows("233:247").EntireRow.Hidden = True
       Else
       Rows("224:232").EntireRow.Hidden = True
       End If
   Else
   Rows("224:247").EntireRow.Hidden = False
   End If
End If
Application.ScreenUpdating = True
End Sub


Как то странно получилось. Изменил некоторые настройки в профиле и началась абра-кадабра. Когда выхожу все ок..

Пришлось перерегистрироваться. Может у кого было подскажите как все вернуть обратно.


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


cheshiki1 Все получилось. Спасибо большое.


Добрый день. Здесь обсуждается вопрос, над которым я как раз ломаю голову, авось поможете.
На первом листе есть выпадающий список от 1 до 10, на втором листе должен работать макрос, который в зависимости от числа, которое в списке первого листа, будет скрывать строки в таблицах. То есть, если в списке число 1- значит в таблицах должно остаться по 1 строке, если в списке число 4, то соответственно должно остаться по 4 строки. Помогите пожалуйста, совсем сил нет уже.  :)


Private Sub Worksheet_Change(ByVal Target As Range)
Dim R%
Application.ScreenUpdating = False
If Target.Address <> "$A$1" Then Exit Sub
With Sheets("Лист2")
  If Target = "" Then
  .Rows("1:100").EntireRow.Hidden = False
  Else
  .Rows("1:100").EntireRow.Hidden = False
     For i = .Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        If .Cells(i, 1) > Target And .Cells(i, 1) <> "" Then .Cells(i, 1).EntireRow.Hidden = True
     Next
  End If
End With
Application.ScreenUpdating = True
End Sub


Огромное вам спасибо.  :)


Доброго времени суток. Снова вынужден просить о помощи(.
Использую код для скрытия строк относительно числа в ячейке. Если число в ячейке просто прописано(в моём случае это список от1 до 10), то код работает. Если же число выводится посредством формулы(необходимо считать количество заполненных строк в таблице и относительно результата скрывать лишние строки), код работать отказывается. Можно ли заставить VBA работать относительно ячейки, с обновляемым значением?
Собсно код:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim R%
Application.ScreenUpdating = False
If Target.Address <> "$A$1" Then Exit Sub
With Sheets("Лист2")
  If Target = "" Then
  .Rows("1:100").EntireRow.Hidden = False
  Else
  .Rows("1:100").EntireRow.Hidden = False
     For i = .Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        If .Cells(i, 1) > Target And .Cells(i, 1) <> "" Then .Cells(i, 1).EntireRow.Hidden = True
     Next
  End If
End With
Application.ScreenUpdating = True
End Sub

Возможно есть не очень сложное решение этого вопроса? Заранее благодарен.
С ув. athe.


Прошу меня извинить за глупые вопросы. «Ларчик просто открывался»:

If Target.Value = "" Then...

13:31
Нет, я ошибся. Не работает. Вопрос актуален.


пробуйте


Private Sub Worksheet_Change(ByVal Target As Range)
Dim R%
Application.DisplayAlerts = False
Application.ScreenUpdating = False
If Not (Intersect(Target, Union(Me.Range("A1"), Me.Range("A1").Precedents)) Is Nothing) Then
With Sheets("Лист2")
  If Target = "" Then
  .Rows("1:100").EntireRow.Hidden = False
  Else
  .Rows("1:100").EntireRow.Hidden = False
     For i = .Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        If .Cells(i, 1) > Target And .Cells(i, 1) <> "" Then .Cells(i, 1).EntireRow.Hidden = True
     Next
  End If
End With
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

файл не смотрел.


cheshiki1
Спасибо за отклик. Код работает, но к сожалению не так, как нужно. У меня значение [A1] высчитывается формулой:

=10-счётесли(Лист2!B3:B12;0)
Увы, строки при этом не скрываются. Я также пробовал добывать [A1] из таблицы, которая не участвует в макросе, но эффект был такой же.
  Интересным образом программа работает если значение [A1] считается суммой двух ячеек. Учитывается не сумма, а значения слагаемых.
  При попытке изменить ячейку в листе 1 программа ругается на эту строку:

If Not (Intersect(Target, Union(Me.Range("A1"), Me.Range("A1").Precedents)) Is Nothing) Then

Спасибо.
С ув. athe.


Вот что значит файл не посмотрел. :) Та строка не работает если в формуле ссылка на другой лист.
пробуйте это

Private Sub Worksheet_Calculate()
Static v As Variant
Application.Calculation = xlManual
Application.ScreenUpdating = False
If Me.Range("A1").Value <> v Then
    With Sheets("Ëèñò2")
       If Cells(1, 1) = "" Then
         .Rows("1:100").EntireRow.Hidden = False
       Else
         .Rows("1:100").EntireRow.Hidden = False
         For i = .Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
            If .Cells(i, 1) > Cells(1, 1) And .Cells(i, 1) <> "" Then .Cells(i, 1).EntireRow.Hidden = True
         Next
      End If
    End With
    v = Me.Range("A1").Value
End If
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub


cheshiki1, спасибо вам большое. Всё отлично работает.  :) Теперь отчёты потекут рекой).


Добрый день.
Прошу прощения за поднятие старой темы.
Успешно использую вышеуказанный код, за что благодарен участникам форума.
Я попытался использовать его для несколько иной задачи, но, увы ничего не вышло. Необходимо скрывать тот или иной диапазон строк в зависимости от значения в списке. Для этого в столбце А вместо чисел я прописал формулы: «=ЕСЛИ(Лист_1!I8=draft!A1;1;2)». Себто, если значение в ячейке соответствует таблице №1, то в столбце А, возле таблицы №1 будет значение 1 (таблица видима), а напротив остальных таблиц будет значение 2 (таблица скрыта).
Код к сожалению срабатывает только один раз, после чего не реагирует на изменения значения в списке. Если войти и выйти в режим конструктора, — программа снова может сработать один раз. Подскажите пожалуйста, в чём может быть загвоздка?
Заранее благодарен,
athe

Собсно код:

Private Sub Worksheet_Calculate()
Static v As Variant
Application.Calculation = xlManual
Application.ScreenUpdating = False
If Me.Range("A1").Value <> v Then
    With Sheets("Лист_1")
       If Cells(1, 1) = "" Then
         .Rows("1:1000").EntireRow.Hidden = False
       Else
         .Rows("1:1000").EntireRow.Hidden = False
         For i = .Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
            If .Cells(i, 1) > Cells(1, 1) And .Cells(i, 1) <> "" Then .Cells(i, 1).EntireRow.Hidden = True
         Next
      End If
    End With
    v = Me.Range("A1").Value
End If
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub


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

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$I$8" Then Exit Sub
Dim i As Long
Application.Calculation = xlManual
Application.ScreenUpdating = False

With Sheets("Лист_1")
     .Rows("1:1000").EntireRow.Hidden = False
         For i = .Cells(Rows.Count, 1).End(xlUp).Row To 12 Step -1
            If .Cells(i, 1) <> 1 Then .Cells(i, 1).EntireRow.Hidden = True
         Next
End With

Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub


  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • Как скрыть строки при условии без применения фильтра

Скрыть строки со значением 0 в заданном столбце.

Alex1976

Дата: Суббота, 20.02.2016, 08:26 |
Сообщение № 1

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

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

Сообщений: 15


Репутация:

0

±

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


Excel 2013

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

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

02_.rar
(37.9 Kb)

 

Ответить

Nic70y

Дата: Суббота, 20.02.2016, 08:31 |
Сообщение № 2

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

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

а просто фильтр не подходит?


ЮMoney 41001841029809

 

Ответить

Alex1976

Дата: Суббота, 20.02.2016, 08:39 |
Сообщение № 3

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

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

Сообщений: 15


Репутация:

0

±

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


Excel 2013

э

а просто фильтр не подходит?

это как?

 

Ответить

Nic70y

Дата: Суббота, 20.02.2016, 08:43 |
Сообщение № 4

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

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

Выделяем пару ячеек начиная с заголовка в Вашей таблице
Вкладка — Главная — Сортировка и фильтр — Фильтр
в фильтре убираем галку с 0

о, кстати есть видео на сайте


ЮMoney 41001841029809

Сообщение отредактировал Nic70yСуббота, 20.02.2016, 08:46

 

Ответить

Alex1976

Дата: Суббота, 20.02.2016, 09:07 |
Сообщение № 5

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

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

Сообщений: 15


Репутация:

0

±

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


Excel 2013

Спасибо огромное. Все получилось. Я про эту фишку и не знал.
Но хотелось бы чтоб скрывались и появлялись по значению в столбце

 

Ответить

Nic70y

Дата: Суббота, 20.02.2016, 09:21 |
Сообщение № 6

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

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

не совсем понял.
Вы хотите, что бы фильтр (ну или скрытие строк) срабатывал при активации листа? — это макросом
Вам какой вариант нужен?


ЮMoney 41001841029809

Сообщение отредактировал Nic70yСуббота, 20.02.2016, 09:29

 

Ответить

Alex1976

Дата: Суббота, 20.02.2016, 16:58 |
Сообщение № 7

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

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

Сообщений: 15


Репутация:

0

±

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


Excel 2013

 

Ответить

китин

Дата: Суббота, 20.02.2016, 17:19 |
Сообщение № 8

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

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

Коля твоя ссылка на главную форумов выкидывает :'( :'( :'(


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Nic70y

Дата: Суббота, 20.02.2016, 17:25 |
Сообщение № 9

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

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

чето глюгануло.
макрос попозже прикреплю, если не забуду, бежать надо…


ЮMoney 41001841029809

 

Ответить

Nic70y

Дата: Суббота, 20.02.2016, 21:39 |
Сообщение № 10

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

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

Правой кнопкой мыши по ярлыку листа (где нужно «фильтровать») — Исходный текст,
в открывшемся модуле вставляете макрос:
[vba]

Код

Private Sub Worksheet_Activate()
    Rows(«2:25»).EntireRow.Hidden = False
    For Each c In Range(«f2:F25»)
    If c = 0 Then
    c.EntireRow.Hidden = True
    End If
    Next
End Sub

[/vba]
Rows(«2:25»)
Range(«f2:F25»)
меняете на Ваш диапазон,
сохраняете файл с поддержкой макросов


ЮMoney 41001841029809

Сообщение отредактировал Nic70yСуббота, 20.02.2016, 21:44

 

Ответить

Alex1976

Дата: Суббота, 20.02.2016, 22:23 |
Сообщение № 11

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

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

Сообщений: 15


Репутация:

0

±

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


Excel 2013

Спасибо огромное то что надо hands

 

Ответить

Содержание

  • Процедура скрытия
    • Способ 1: группировка
    • Способ 2: перетягивание ячеек
    • Способ 3: групповое скрытие ячеек перетягиванием
    • Способ 4: контекстное меню
    • Способ 5: лента инструментов
    • Способ 6: фильтрация
    • Способ 7: скрытие ячеек
  • Вопросы и ответы

Скрыть строки в Microsoft Excel

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

Процедура скрытия

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

Способ 1: группировка

Одним из самых популярных способов скрыть элементы является их группировка.

  1. Выделяем строки листа, которые нужно сгруппировать, а потом спрятать. При этом не обязательно выделять всю строку, а можно отметить только по одной ячейке в группируемых строчках. Далее переходим во вкладку «Данные». В блоке «Структура», который располагается на ленте инструментов, жмем на кнопку «Группировать».
  2. Группировка данных в Microsoft Excel

  3. Открывается небольшое окошко, которое предлагает выбрать, что конкретно нужно группировать: строки или столбцы. Так как нам нужно сгруппировать именно строки, то не производим никаких изменений настроек, потому что переключатель по умолчанию установлен в то положение, которое нам требуется. Жмем на кнопку «OK».
  4. Выбор объекта группировки в Microsoft Excel

  5. После этого образуется группа. Чтобы скрыть данные, которые располагаются в ней, достаточно нажать на пиктограмму в виде знака «минус». Она размещается слева от вертикальной панели координат.
  6. Скрытие строк методом группировки в Microsoft Excel

  7. Как видим, строки скрыты. Чтобы показать их снова, нужно нажать на знак «плюс».

Раскрытие группы в Microsoft Excel

Урок: Как сделать группировку в Excel

Способ 2: перетягивание ячеек

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

  1. Устанавливаем курсор на вертикальной панели координат, где отмечены номера строк, на нижнюю границу той строчки, содержимое которой хотим спрятать. При этом курсор должен преобразоваться в значок в виде креста с двойным указателем, который направлен вверх и вниз. Затем зажимаем левую кнопку мыши и тянем указатель вверх, пока нижняя и верхняя границы строки не сомкнутся.
  2. Перятягивание границ строки в Microsoft Excel

  3. Строка будет скрыта.

Строка скрыта в Microsoft Excel

Способ 3: групповое скрытие ячеек перетягиванием

Если нужно таким методом скрыть сразу несколько элементов, то прежде их следует выделить.

  1. Зажимаем левую кнопку мыши и выделяем на вертикальной панели координат группу тех строк, которые желаем скрыть.
    Выделение диапазона строк в Microsoft Excel

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

    Lumpics.ru

    Выделение диапазона строк с помощью Shift в Microsoft Excel

    Можно даже выделить несколько отдельных строк. Для этого по каждой из них нужно производить клик левой кнопкой мыши с зажатой клавишей Ctrl.

  2. Выделение отдельных строк в Microsoft Excel

  3. Становимся курсором на нижнюю границу любой из этих строк и тянем её вверх, пока границы не сомкнутся.
  4. Перетягивание диапазона строк в Microsoft Excel

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

Диапазон строк скрыт в Microsoft Excel

Способ 4: контекстное меню

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

  1. Выделяем строчки одним из трёх способов, о которых шла речь выше:
    • исключительно при помощи мышки;
    • с использованием клавиши Shift;
    • с использованием клавиши Ctrl.
  2. Выделение строк в Microsoft Excel

  3. Кликаем по вертикальной шкале координат правой кнопкой мыши. Появляется контекстное меню. Отмечаем пункт «Скрыть».
  4. Скрытие строк через контекстное меню в Microsoft Excel

  5. Выделенные строки вследствие вышеуказанных действий будут скрыты.

Строки скрыты через контекстное меню в Microsoft Excel

Способ 5: лента инструментов

Также скрыть строки можно, воспользовавшись кнопкой на ленте инструментов.

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

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

Способ 6: фильтрация

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

  1. Выделяем всю таблицу или одну из ячеек в её шапке. Во вкладке «Главная» жмем на значок «Сортировка и фильтр», который расположен в блоке инструментов «Редактирование». Открывается список действий, где выбираем пункт «Фильтр».
    Включение фильтра через вкладку Главная в Microsoft Excel

    Можно также поступить иначе. После выделения таблицы или шапки переходим во вкладку «Данные». Кликам по кнопке «Фильтр». Она расположена на ленте в блоке «Сортировка и фильтр».

  2. Включение фильтра в Microsoft Excel

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

  5. Открывается меню фильтрации. Снимаем галочки с тех значений, которые содержатся в строках, предназначенных для скрытия. Затем жмем на кнопку «OK».
  6. Меню фильтрации в Microsoft Excel

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

Строки скрыты при помощи фильтрации в Microsoft Excel

Урок: Сортировка и фильтрация данных в Excel

Способ 7: скрытие ячеек

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

  1. Выделяем одну или несколько ячеек, которые нужно спрятать. Кликаем по выделенному фрагменту правой кнопкой мыши. Открывается контекстное меню. Выбираем в нем пункт «Формат ячейки…».
  2. Переход в формат ячеек в Microsoft Excel

  3. Происходит запуск окна форматирования. Нам нужно перейти в его вкладку «Число». Далее в блоке параметров «Числовые форматы» выделяем позицию «Все форматы». В правой части окна в поле «Тип» вбиваем следующее выражение:

    ;;;

    Жмем на кнопку «OK» для сохранения введенных настроек.

  4. Окно форматирования в Microsoft Excel

  5. Как видим, после этого все данные в выделенных ячейках исчезли. Но они исчезли только для глаз, а по факту продолжают там находиться. Чтобы удостоверится в этом, достаточно взглянуть на строку формул, в которой они отображаются. Если снова понадобится включить отображение данных в ячейках, то нужно будет через окно форматирования поменять в них формат на тот, что был ранее.

Информация в ячейках скрыта в Microsoft Excel

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

Еще статьи по данной теме:

Помогла ли Вам статья?

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

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

  • Как скрыть в excel ячейки с нулями
  • Как скрывать строки в excel с плюсиками
  • Как скрыть в excel строки только на одной странице
  • Как скрывать строки в excel по условию макрос
  • Как скрыть в excel строки с определенным текстом

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

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