Не отображать строки с определенными значениями 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% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

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

SCRPN

Дата: Пятница, 20.12.2013, 13:49 |
Сообщение № 1

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

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

Сообщений: 3


Репутация:

0

±

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


Excel 2010

Есть таблица. В зависимости от того какое значение в ячейках A23:A26 (например, если «—«) надо скрыть или отобразить соотвествующую строку (23:26)

Если значение измениться, то заново отобразить/скрыть.

Сообщение отредактировал SCRPNПятница, 20.12.2013, 13:56

 

Ответить

slava

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

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

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

Сообщений: 43


Репутация:

0

±

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


Excel 2010

Есть таблица. В зависимости от того какое значение в ячейках A23:A26 (например, если «—«) надо скрыть или отобразить соотвествующую строку (23:26)

Если значение измениться, то заново отобразить/скрыть.

Вот сюда загляни,мож поможет)) http://www.excelworld.ru/forum/2-8034-1

 

Ответить

_Boroda_

Дата: Пятница, 20.12.2013, 14:12 |
Сообщение № 3

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

SCRPN, Еще раз удалите модераторский комментарий в своем сообщении — я вас вообще забаню.
А в комментарии как раз и было написано про то, что нужно воспользоваться поиском — подобных тем на форуме великое множество. И Правила форума почитать.


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

 

Ответить

SCRPN

Дата: Пятница, 20.12.2013, 14:20 |
Сообщение № 4

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

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

Сообщений: 3


Репутация:

0

±

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


Excel 2010

Отчего старожилам и модераторам не приходит в голову, что не всегда поиск выдает какой-либо результат… Коммент не удалял, возможно мы одновременно его правили.
[moder]А оттого, что мы, прежде, чем что-то написать, делаем то, про что пишем и наглядно убеждаемся в том, что написанное нами истинно.
То есть, вы хотите сказать, что запрос в поиске по сайту «скрыть строки» вам не дал ничего нужного? А может, вы просто ничего не искали?

Сообщение отредактировал SCRPNПятница, 20.12.2013, 14:29

 

Ответить

SCRPN

Дата: Пятница, 20.12.2013, 14:21 |
Сообщение № 5

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

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

Сообщений: 3


Репутация:

0

±

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


Excel 2010

slava, спасибо за ссылку, изучаю.

Изучил. Не то, там не скрывается строка, а скрываются значения ячейки.

Видимо надо макросом с Rows(…).Hidden = True / False но VBA не владею…

Сообщение отредактировал SCRPNПятница, 20.12.2013, 14:25

 

Ответить

_Boroda_

Дата: Пятница, 20.12.2013, 14:29 |
Сообщение № 6

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS


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

 

Ответить

Как в Эксель (Excel) удалить строки по условию?

Как в Excel быстро удалить строки, содержимое которых удовлетворяет определённому условию?

Это удобно сделать с помощью фильтра.

Имеем таблицу данных с заголовком.

Щелкаем на любом месте в заголовке и выбираем на Главной вкладке пункт «Сортировка и фильтр — фильтр».

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

Оставшиеся после применения фильтра ячейки / строки выделяем все вместе и выбираем пункт «Удалить строки с листа» (можно выбрать пункт «Удалить — строку» в меню после щелчка правой кнопкой мыши на выделенной ячейке).

Удалились именно те строки, которые были отфильтрованы, остальные остались на месте (нужно убрать все фильтры, чтобы их увидеть).

Я знаю 2 способа, позволяющих удалить определённые строки в Эксель (Excel).

1 способ — с помощью фильтра.

2 способ — с помощью VBA.

Расскажу о каждом способе подробно.

Если это делать с помощью фильтра, то порядок действий такой:

1) Отбираем нужные строки.

3) Убираем фильтр.

В результате в таблице останется только то, что нужно.

В таблице содержаться сведения о товарах и странах-производител­ ях, нужно оставить только импортные товары (то есть удалить строки, где содержится «Россия»).

1) Так как нас интересуют строки с определённым значением, то можно поставить фильтр так:

Щёлкнуть по любой ячейке с надписью «Россия» правой кнопкой мыши, а затем в контекстном меню выбрать пункт «Фильтр по значению выделенной ячейки».

2) В итоге останутся видимыми только те строки, которые требуется удалить.

Выделяем все строки и щёлкаем по выделенному правой кнопкой мыши, в контекстном меню выбираем «Удалить строки».

3) Строки удалятся, и таблица будет пустой (так как там пока стоит фильтр).

4) Снимаем фильтр с помощью кнопки на панели инструментов «Сортировка и фильтр».

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

Нужно оставить только фрукты, стоящие > 100 рублей.

Здесь фильтр по значению ячейки уже не подойдёт, поэтому поступаем по-другому:

1) Щёлкаем левой кнопкой мыши по любой ячейке столбца с ценой и вызываем фильтр — с помощью копки «Фильтр» на вкладке «Данные» или с помощью копки «Сортировка и фильтр» на вкладке «Главная».

2) Теперь щёлкаем по специальной стрелочке на столбце с ценой, и выбираем «Числовые фильтры» -> «Меньше».

3) В появившемся окне вводим 100 и нажимаем на «OK».

4) Останутся строки с ценой < 100.

5) Теперь так же, как и в 1 примере, удаляем их и убираем фильтр.

В результате в таблице будут только те товары, у которых цена > 100.

Для удаления строк по определённому условию в VBA можно написать цикл, в котором перебираются все строки и одна (несколько) ячеек сравниваются с определённым значением.

Если условие выполняется, тогда удаляем строку с помощью команды Delete.

Создаём кнопку и привязываем к ней код (это самое простое, что можно придумать):

Dim i As Integer

If Cells(i, 3) < 100 Then Rows(i).Delete

Понятно, что если строчек будет не 10, а, например, 100, то цикл будет идти от 1 до 100.

В объекте Cells(i, 3) стоит цифра 3, так как проверяются данные у 3 по счёту столбца.

Но этот код всё же не идеален и некоторые строчки в цикле пропускаются (так как после команды Delete они смещаются) — придётся нажимать на кнопку не один раз, а несколько.

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

Второй вариант удаляем выделенные строки. Для этого выделим их мышью. И поступаем как в первом способе. Можно удалять ячейки со сдвигом и т.д.

Как в excel оставить только нужные строки

Как в excel оставить только нужные строки

20 секретов Excel, которые помогут упростить работу

Перемещение по файлам Excel

Как скрывать информацию в Excel

  1. ЛЕВСИМВ(Строка; Количество_символов) – выводит заданное количество символов с левого края. Например, =ЛЕВСИМВ(А1;10) выведет 10 первых символов строки в ячейке А1 . Функция имеет 2 обязательных аргумента – Строка-источник и количество выводимых символов;

Функция ЛЕВСИМВ в Эксель

  1. ПРАВСИМВ(Строка; Количество_символов) – функция схожа с предыдущей, она выводит заданное количество символов справа. То есть, =ПРАВСИМВ(А1;10) в результате выдаст 10 последних символов из строки А1 .

Функция ПРАВСИМВ в Excel

  1. ПСТР(Строка; Начальный_символ; Количество символов) – выбирает из текста нужное количество знаков, начиная с заданного. Например, =ПСТР(А1;5;3) выведет 3 символа начиная с 5-го (5-7 символы строки).

Функция ПСТР в Эксель

Функции, которая отрезает лишнее количество символов в ячейке, найти не удается, но существует система из двух функций, которые можно применить. Это система из функции ЛЕВСИМВ (или ПРАВСИМВ) и функции ДЛСТР (длина строки).

Microsoft Excel

Как переопределить используемую область листа в Excel

  1. Выберите все столбцы справа от столбца G . Для этого активизируйте любую ячейку в столбце Н , нажмите Ctrl+Пробел, затем Shift+End и в конце, удерживая нажатой Shift, нажмите клавишу .
  2. Выполните команду Главная → Ячейки → Удалить → Удалить столбцы с листа (или щелкните правой кнопкой мыши на заголовке любого столбца и выберите команду Удалить).
  3. Выделите все строки ниже строки 25. Для этого активизируйте любую ячейку в строке 26. Нажмите Shift+Пробел, затем Shift+End и в конце, удерживая нажатой Shift, нажмите клавишу .
  4. Выполните команду Главная → Ячейки → Удалит → Удалить строки с листа(или щелкните правой кнопкой мыши на заголовке любой строки и выберите команду Удалить).
  5. Сохраните книгу, и Excel переопределит последнюю ячейку.

Выделение содержимого ячеек в Excel

Как в excel оставить только нужные строки

x

x

x

Как в Excel отображать только строки с определенным текстом?

В Excel функция «Фильтр» широко используется в нашей повседневной работе. И в этом случае я расскажу, как фильтровать строки с определенным текстом в Excel. Например, здесь два столбца, и я хочу показать строки, содержащие «KTE», только в столбце B, как показано ниже.
doc отображать строки с определенным текстом 1

Показать строки содержат определенную строку Kutools for Excel хорошая идея3

Показать строки содержат определенную строку с помощью функции фильтра

1. Выберите используемые диапазоны и нажмите Данные > Фильтр для Фильтр функции.
doc отображать строки с определенным текстом 2

2. Затем щелкните значок фильтра в столбце, по которому нужно выполнить фильтрацию, и выберите Текстовые фильтры > Комплект. Смотрите скриншот:
doc отображать строки с определенным текстом 3

3. в Пользовательский автофильтр в диалоговом окне вы можете указать текст, на основе которого хотите выполнить фильтрацию. Смотрите скриншот:
doc отображать строки с определенным текстом 4

Показать строки содержат определенную строку Kutools for Excel

1. Выберите данные, которые вы хотите использовать, нажмите Kutools Plus > Суперфильтр. Смотрите скриншот:
doc отображать строки с определенным текстом 5

2. Затем в Суперфильтр панель, проверьте Указанный , чтобы исправить диапазон фильтрации, и укажите необходимые критерии в панели. Смотрите скриншот:
doc kutools супер фильтр 1

3. Нажмите Фильтр для фильтрации диапазона.
doc kutools супер фильтр 3

4. Затем нажмите Сохранить текущие настройки фильтра кнопка док сохранить, затем появится диалоговое окно, в котором можно дать этому сценарию имя и указать диапазон применения сценария.
doc kutools супер фильтр 4

5. Нажмите OK, и вы можете открыть сценарий, щелкнув раскрывающееся меню> Открыть сохраненный сценарий настроек фильтра, чтобы выбрать текущий сохраненный сценарий, или нажав Управление сценариями настройки фильтров кнопка менеджер документов, выберите нужную настройку фильтра и нажмите Откройте чтобы в следующий раз включить настройки фильтра.
doc kutools супер фильтр 5
doc kutools супер фильтр 6

Как удалить каждую вторую строку в Excel

Возможность удаления каждой второй строки в Excel — это часто возникающая задача, решение которой не займет более 5 минут.

Видеоинструкция

Как удалить каждую вторую строку в Excel

Для выполнения этой задачи потребуется первоначально добавить новый столбец, который можно назвать «Индикатором» и добавить в первые две строчки цифры 1 и 2.

Создание дополнительной строки и цифр в них в Excel

После копируем первые две ячейки, кликнув правой клавишей мыши и нажав на «Копировать» (сочетание клавиш CTRL+C).

Копирование ячеек в Эксель

Далее выделяем область, в которой будет происходить удаление и нажимаем кликаем правой клавишей мыши и выбираем «Вставить скопированные ячейки» (сочетание клавиш CTRL+V).

Растягивание значений в столбце в Excel

После включаем фильтр, перейдя в «Данные»-«Фильтр».

Фильтрация ячеек в Эксель

Следующим этапом кликаем на 1 и удаляем ее из показа.

Выбор показа каждой второй строки в Excel

Выделяем оставшиеся четные строки и при помощи правой клавиши мыши выводим меню и выбираем «Удалить строку».

Удаление каждой второй строки в Excel

Включаем показ нечетных строк.

Остаток после удаления каждой второй строки в Эксель

Все готово, остались лишь нечетные строки.

Удаление каждой третьей или любой другой строки в Эксель

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

Удаление каждой третей строки в Excel

Аналогичный образом можно обрезать не только 1 но 2 ненужные строки из списка, например, 2 и 4 из 5.

 

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.

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


Цитата: Dauria от 07.04.2011, 14:58
Необходим макрос для скрытия и отображения строк при условии ячейки. Например есть столбец с месяцами года. При введении в ячейку «весна», скрываются строки с месяцами весны. При изменении ячейки на «зима» скрываются строки с зимними месяцами, а весенние отображаются. При введении какого либо другого значения — скрытия не происходит.

Может все же ОЗАДАЧИТЕ нас примерчиком?! ;)

Путей к вершине — множество. Этот один из многих!


Ну, пока Вы нас ОЗАДАЧИВАЕТЕ — набросал вот такой проектик. На скрепке.

Путей к вершине — множество. Этот один из многих!


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

С уважением, Алексей


sm_beer  sm_clap Ну як шо цэ «повыпендриваться», то снимаю шляпу. Копирнул себе, если Вы не против.

Путей к вершине — множество. Этот один из многих!


Да нет, Gregory, тут до идеала, ИМХО, ещё есть куда копать.
Тот же список названий месяцев в массив, наверное, можно было как-то не руками вбивать (не красиво это), а циклом по перебору номеров месяцев от 1 до 12 формулой рабочего листа получить, но я с формулами листа не очень дружу. Попробовал пару формул написать — не получилось и ввёл вручную.
Но с другой стороны, а если показывать/прятать не месяцы, а, например, названия каких-то фруктов-овощей-ягод то так универсальнее…

С уважением, Алексей


И чуть короче(аттач). Леш, а месяцы в массив:

Public Sub www()
   Dim m(1 To 12) As String, i&
   For i = 1 To 12
       m(i) = MonthName(i)
   Next
End Sub

Я, как всегда, чертовски адекватен… Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771


Dauria, если надо, чтоб выбранный сезон прятался, то последняя строка:
Range(«MONTHS»).EntireRow.Hidden = False: Range([b4]).EntireRow.Hidden = True

Я, как всегда, чертовски адекватен… Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771


Спасибо, Gregory, все очень замечательно. А было бы еще лучше, если бы объяснил макрос, чтобы я его смог его под себя переделать.


Ну, Серёга, так — это просто прямо в лоб и заточено только под такое порядковое расположение месяцев. При месяцах-то вряд ли, конечно, кому-то в голову придёт другой их порядок перечисления и твоё решение отсутствующего примера тоже вполне логичное.
Но моё, ИМХО, более универсальное и гибкое. Но это только ИМХО. А вот Dauria, так и не выложив пример, выбрала вариант от GWolf.

А по поводу функции MonthName(), так я просто не знал о ней  :'(

С уважением, Алексей


Леш, при любом расположении месяцев в моем примере все зависит от того, как задать имена диапазонам.

Цитата: Alex_ST от 09.04.2011, 18:20
А вот Dauria, так и не выложив пример, выбрала вариант от GWolf.

Кажись не выбрала а выбрал ;D

Я, как всегда, чертовски адекватен… Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771


Цитата: Dauria от 09.04.2011, 12:59
Спасибо, Gregory, все очень замечательно. А было бы еще лучше, если бы объяснил макрос, чтобы я его смог его под себя переделать.

Доброго дня!

Поскольку данный сайт просматривают и неавторы данных топиков, то выкладываю макрос с пояснениями прямо сюда. Может объясник кривовато, но как смог. Если где-то ошибся, а кто-то заметил: — Поправте, пожалуйста. Спасибо!

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim blok As Range '- переменная для хранения интервала параметров
    Dim cl As Range '- переменная для текущего значения параметра

    'Начнем с того, что код выполнятся будет, только при изменении значения в ячейке "C3"
    If Target.Address(ReferenceStyle:=xlR1C1) = "R2C3" Then

            'теперь посмотрим это самое изменение, если оно = "", то и выполнять нестоит
        If Target.Text = "" Then Exit Sub
        'ну а если все же введено непустое значение, то _
         для текущей активной книги и ее активного листа
        With ThisWorkbook.ActiveSheet
        'загрузим в переменную blok значения интервала "B4:B15"
        Set blok = .Range(Cells(4, 2), Cells(15, 2))

                'теперь перебираем значения из blok
        For Each cl In blok
            'и если высота строки = 0, то
            If Rows(cl.Row).RowHeight = 0 Then
                'установим высоту строки = 12.75
                Rows(cl.Row).RowHeight = 12.75
            End If
        Next
        'открыв т.о. все значения диапазона blok, займемся основной задачей: - посмотрим, _
         что же хочет пользователь: - Какое значение он ввел в ячейку определения парамет- _
         ра "Время года":

                Select Case Target.Text '- Какое значение он ввел в ячейку определения параметра "Время года":

                        'ПОСКОЛЬКУ, ДЛЯ ВСЕХ ВРЕМЕН ГОДА _
             СПОСОБ ДАЛЬНЕЙШИХ ДЕЙСТВИЙ ОДИНА- _
             КОВ, ПОКАЖЕМ НА ВРЕМЕНИ ГОДА "Зима"

                        Case "Зима", "зима", "ЗИМА" '- в ячейку введено "Зима" (в разных вариантах возможного написания)
                'перебираем значения из blok
                For Each cl In blok
                    'и если, очередное значение из blok = "Январь" или "Февраль" или "Декабрь"
                    If cl <> "Январь" And cl <> "Февраль" And cl <> "Декабрь" Then
                        ' то высоту строки с номером cl.Row, делаем = 0. Собственно И ВСЕ!
                        Rows(cl.Row).RowHeight = 0
                    End If
                Next
            Case "Весна", "весна", "ВЕСНА" '- в ячейку введено "Весна" (в разных вариантах возможного написания)
                For Each cl In blok
                    If cl <> "Март" And cl <> "Апрель" And cl <> "Май" Then
                        Rows(cl.Row).RowHeight = 0
                    End If
                Next
            Case "Лето", "лето", "ЛЕТО" '- в ячейку введено "Лето" (в разных вариантах возможного написания)
                For Each cl In blok
                    If cl <> "Июнь" And cl <> "Июль" And cl <> "Август" Then
                        Rows(cl.Row).RowHeight = 0
                    End If
                Next
            Case "Осень", "осень", "ОСЕНЬ" '- в ячейку введено "Осень" (в разных вариантах возможного написания)
                For Each cl In blok
                    If cl <> "Сентябрь" And cl <> "Октябрь" And cl <> "Ноябрь" Then
                        Rows(cl.Row).RowHeight = 0
                    End If
                Next
            Case Else '- в ячейку введен какой то другой набор символов
                MsgBox "Словоформа не является обозначением понятия " & Chr(171) & "Время года" & Chr(187) & "!"
        End Select
        End With
    End If
End Sub

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

Private Sub Worksheet_Change(ByVal Target As Range)
....
End Sub

оберните все в:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
...
End Sub

но тогда нужно обязательно ссылаться на Sh — куда будет передаваться имя листа!

Путей к вершине — множество. Этот один из многих!


Вот видишь, Серёга, Dauria не ищет простых путей!
(кстати, в профиле пользователя М/Ж не указано и судить об этом можно только по единственному слову «смог» в посте, что вполне могло быть и опечаткой :D )
Ни твой простейший, ни мой чуть сложнее, но более гибкий варианты топик-стартера не заинтересовали… Хочет разобраться с вариантом GWolf . Ну, флаг — в руки.

GWolf,
примените Option Compare Text в декларациях модуля или UCase (cl) и Select Case UCase (Target) в процедуре чтобы не указывать все возможные варианты написания заглавных и строчных букв в названиях сезонов и месяцев (всё равно ВсЕ ВАриАнты НАПИсаНия нЕ пРЕДусМОТриТЕ)
Но всё равно, даже при вашем варианте решения, ИМХО, привязываться к конкретным ячейкам, прописывая их адреса в коде — не правильно. Намного удобнее использовать именованные диапазоны.
Тогда при необходимости добавить/удалить строку/столбец ВНЕ рабочей области таблицы (ну, например, создать дополнительную строку для заголовка таблицы или добавить слева от месяцев  доп. столбец) или переместить в другое место на листе ячейку выпадающего списка, из которого выбираются названия сезонов, не будет необходимости править код, т.к. именованные диапазоны сами будут «ползать» по листу.

С уважением, Алексей


Цитата: Alex_ST от 11.04.2011, 09:53
…примените Option Compare Text в декларациях модуля или UCase (cl) и Select Case UCase (Target) в процедуре чтобы не указывать все возможные варианты написания заглавных и строчных букв в названиях сезонов и месяцев (всё равно ВсЕ ВАриАнты НАПИсаНия нЕ пРЕДусМОТриТЕ)
Но всё равно, даже при вашем варианте решения, ИМХО, привязываться к конкретным ячейкам, прописывая их адреса в коде — не правильно. Намного удобнее использовать именованные диапазоны.
Тогда при необходимости добавить/удалить строку/столбец ВНЕ рабочей области таблицы (ну, например, создать дополнительную строку для заголовка таблицы или добавить слева от месяцев  доп. столбец) или переместить в другое место на листе ячейку выпадающего списка, из которого выбираются названия сезонов, не будет необходимости править код, т.к. именованные диапазоны сами будут «ползать» по листу.

Спасибо коллега! Учту.

Путей к вершине — множество. Этот один из многих!


И ещё:
1. В коде у вас указано:

        'загрузим в переменную blok значения интервала "B4:B15"
        Set blok = .Range(Cells(4, 2), Cells(15, 2))

это что, для того, чтобы запутать?
Наверное, понятнее было бы всё-таки так:

        'загрузим в переменную blok значения интервала "B4:B15"
        Set blok = .Range("B4:B15")

2. Зачем вы указываете конкретную высоту строки — 12,5:

Rows(cl.Row).RowHeight = 12.75
Может, всё-таки лучше использовать автоподбор высоты строки:

cl.EntireRow.AutoFit

С уважением, Алексей


Всем большое спасибо! Очень помогли.


Понравилась статья? Поделить с друзьями:
  • Не отображать номер на первой странице word
  • Не отображать изображения word
  • Не отображать деление на 0 в excel
  • Не отображается ярлык листа excel
  • Не отображается ярлык word