Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/скрытие строк по условию в столбце - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
скрытие строк по условию в столбце
micholap_denis Дата: Среда, 01.07.2020, 16:06 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 341
Репутация: 0 ±
Замечаний: 60% ±

Excel 2013
отыскал на форумах макрос, применил к своей таблице все работает,но....
как подправить макрос чтоб искомый текст условия "Скрыть" искало не по всему диапазону а по указанному столбцу таблицы. (чтоб ускорить...таблица большая много столбцов и строк)
и добавить чтоб автоматически макрос срабатывал при открытии и закрытии файла

[vba]
Код
Sub УдалениеСтрокПоУсловию()
    Dim ra As Range, delra As Range
    Application.ScreenUpdating = False    ' отключаем обновление экрана

    ТекстДляПоиска = "Скрыть"    ' скрываем строки с таким текстом

    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
        ' если в строке найден искомый текст
        If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
            ' добавляем строку в диапазон для скрытия
            If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
    Next
    ' если подходящие строки найдены - скрываем их
    If Not delra Is Nothing Then delra.EntireRow.Hidden = True
End Sub
[/vba]
К сообщению приложен файл: 6525244.xls (44.0 Kb)
 
Ответить
Сообщениеотыскал на форумах макрос, применил к своей таблице все работает,но....
как подправить макрос чтоб искомый текст условия "Скрыть" искало не по всему диапазону а по указанному столбцу таблицы. (чтоб ускорить...таблица большая много столбцов и строк)
и добавить чтоб автоматически макрос срабатывал при открытии и закрытии файла

[vba]
Код
Sub УдалениеСтрокПоУсловию()
    Dim ra As Range, delra As Range
    Application.ScreenUpdating = False    ' отключаем обновление экрана

    ТекстДляПоиска = "Скрыть"    ' скрываем строки с таким текстом

    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
        ' если в строке найден искомый текст
        If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
            ' добавляем строку в диапазон для скрытия
            If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
    Next
    ' если подходящие строки найдены - скрываем их
    If Not delra Is Nothing Then delra.EntireRow.Hidden = True
End Sub
[/vba]

Автор - micholap_denis
Дата добавления - 01.07.2020 в 16:06
micholap_denis Дата: Среда, 01.07.2020, 17:44 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 341
Репутация: 0 ±
Замечаний: 60% ±

Excel 2013
извиняюсь в спешке писал на работе, конечно же-
прошу пожалуйста помочь подправить макрос, заранее спасибо.
 
Ответить
Сообщениеизвиняюсь в спешке писал на работе, конечно же-
прошу пожалуйста помочь подправить макрос, заранее спасибо.

Автор - micholap_denis
Дата добавления - 01.07.2020 в 17:44
Kuzmich Дата: Среда, 01.07.2020, 18:02 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 157 ±
Замечаний: 0% ±

Excel 2003
Цитата
искало не по всему диапазону а по указанному столбцу

[vba]
Код
Sub УдалениеСтрокПоУсловию()
Dim iLastRow As Long
Dim ra As Range, delra As Range
Dim ТекстДляПоиска As String
Application.ScreenUpdating = False    ' отключаем обновление экрана
    ТекстДляПоиска = "Скрыть"          ' скрываем строки с таким текстом
    ' перебираем все строки в используемом диапазоне листа
'    For Each ra In ActiveSheet.UsedRange.Rows
iLastRow = Range("A:E").Find("*", Range("A1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
    For Each ra In ActiveSheet.Range("C1:C" & iLastRow)
        ' если в строке найден искомый текст
        If Not ra.Find(ТекстДляПоиска, , xlValues, xlWhole) Is Nothing Then
            ' добавляем строку в диапазон для скрытия
            If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
    Next
    ' если подходящие строки найдены - скрываем их
    If Not delra Is Nothing Then delra.EntireRow.Hidden = True
End Sub
[/vba]
 
Ответить
Сообщение
Цитата
искало не по всему диапазону а по указанному столбцу

[vba]
Код
Sub УдалениеСтрокПоУсловию()
Dim iLastRow As Long
Dim ra As Range, delra As Range
Dim ТекстДляПоиска As String
Application.ScreenUpdating = False    ' отключаем обновление экрана
    ТекстДляПоиска = "Скрыть"          ' скрываем строки с таким текстом
    ' перебираем все строки в используемом диапазоне листа
'    For Each ra In ActiveSheet.UsedRange.Rows
iLastRow = Range("A:E").Find("*", Range("A1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
    For Each ra In ActiveSheet.Range("C1:C" & iLastRow)
        ' если в строке найден искомый текст
        If Not ra.Find(ТекстДляПоиска, , xlValues, xlWhole) Is Nothing Then
            ' добавляем строку в диапазон для скрытия
            If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
    Next
    ' если подходящие строки найдены - скрываем их
    If Not delra Is Nothing Then delra.EntireRow.Hidden = True
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 01.07.2020 в 18:02
micholap_denis Дата: Среда, 01.07.2020, 19:33 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 341
Репутация: 0 ±
Замечаний: 60% ±

Excel 2013
спасибо. все работает!
 
Ответить
Сообщениеспасибо. все работает!

Автор - micholap_denis
Дата добавления - 01.07.2020 в 19:33
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!