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

Вход

Регистрация

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

 

= Мир MS Excel/Скрыть\Показать столбцы не соответствующие тексту - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скрыть\Показать столбцы не соответствующие тексту (Макросы/Sub)
Скрыть\Показать столбцы не соответствующие тексту
Amon Дата: Среда, 13.06.2018, 14:18 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день. Подскажите пожалуйста как можно скрыть все столбцы и строки ( Не пересекающиеся пустые) к примеру не содержащие необходимого значения ?
К примеру у меня есть столбцы во второй строке значение "1 из 8 " , " 2 из 8" и тд
Как мне автоматически определить все заполненные столбцы и скрывать их и наоборот? Просто чтобы если я выбери допустим "3 из 8" чтобы остались только столбцы "3 из 8" и строки которые заполненные в этом столбце, а другие строки и столбцы скрывались. и тд.
Файл во вложении.
К сообщению приложен файл: 123.xlsm(32.0 Kb)


Сообщение отредактировал Amon - Среда, 13.06.2018, 15:57
 
Ответить
СообщениеДобрый день. Подскажите пожалуйста как можно скрыть все столбцы и строки ( Не пересекающиеся пустые) к примеру не содержащие необходимого значения ?
К примеру у меня есть столбцы во второй строке значение "1 из 8 " , " 2 из 8" и тд
Как мне автоматически определить все заполненные столбцы и скрывать их и наоборот? Просто чтобы если я выбери допустим "3 из 8" чтобы остались только столбцы "3 из 8" и строки которые заполненные в этом столбце, а другие строки и столбцы скрывались. и тд.
Файл во вложении.

Автор - Amon
Дата добавления - 13.06.2018 в 14:18
StoTisteg Дата: Среда, 13.06.2018, 15:24 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
Для начала если
Dim o As Range
, то [vba]
Код
Set o = Cells(2, lastcolumn)
[/vba]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеДля начала если
Dim o As Range
, то [vba]
Код
Set o = Cells(2, lastcolumn)
[/vba]

Автор - StoTisteg
Дата добавления - 13.06.2018 в 15:24
StoTisteg Дата: Среда, 13.06.2018, 15:28 | Сообщение № 3
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
For Each r In o
абсолютно бессмысленный "цикл" по одной ячейке...
Set r = Cells.Find("1 из 8")
бессмысленная строка, Вы находите ячейку с содержимым "1 из 8" и тут жен, следующей строкой, меняете её на Cells(2, lastcolumn).


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
For Each r In o
абсолютно бессмысленный "цикл" по одной ячейке...
Set r = Cells.Find("1 из 8")
бессмысленная строка, Вы находите ячейку с содержимым "1 из 8" и тут жен, следующей строкой, меняете её на Cells(2, lastcolumn).

Автор - StoTisteg
Дата добавления - 13.06.2018 в 15:28
_Boroda_ Дата: Среда, 13.06.2018, 15:39 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12400
Репутация: 5092 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума

Автор - _Boroda_
Дата добавления - 13.06.2018 в 15:39
Mikael Дата: Среда, 13.06.2018, 17:48 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
От "D2" до последней заполненной ячейки:
[vba]
Код
Set rng = ws.Range(ws.[d2], ws.Cells(2, ws.Columns.Count).End(xlToLeft))
[/vba]
Перед определением диапазона откройте все столбцы, .End() возвращает только видимые ячейки
[vba]
Код
ws.Cells.EntireColumn.Hidden = False
[/vba]
В Pi должен быть присвоен номер столбца
[vba]
Код
Pi = Cells.Find("1 из 8").Column
[/vba]
К сообщению приложен файл: 123.1.xlsm(31.2 Kb)
 
Ответить
СообщениеДобрый день!
От "D2" до последней заполненной ячейки:
[vba]
Код
Set rng = ws.Range(ws.[d2], ws.Cells(2, ws.Columns.Count).End(xlToLeft))
[/vba]
Перед определением диапазона откройте все столбцы, .End() возвращает только видимые ячейки
[vba]
Код
ws.Cells.EntireColumn.Hidden = False
[/vba]
В Pi должен быть присвоен номер столбца
[vba]
Код
Pi = Cells.Find("1 из 8").Column
[/vba]

Автор - Mikael
Дата добавления - 13.06.2018 в 17:48
Amon Дата: Четверг, 14.06.2018, 10:28 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В Pi должен быть присвоен номер столбца

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

[vba]
Код

Dim str$: str = sahe.[c2]
Pi = Cells.Find(str).Column
[/vba] Строки почему-то не сворачиваются(


Сообщение отредактировал Amon - Четверг, 14.06.2018, 10:33
 
Ответить
Сообщение
В Pi должен быть присвоен номер столбца

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

[vba]
Код

Dim str$: str = sahe.[c2]
Pi = Cells.Find(str).Column
[/vba] Строки почему-то не сворачиваются(

Автор - Amon
Дата добавления - 14.06.2018 в 10:28
StoTisteg Дата: Четверг, 14.06.2018, 10:39 | Сообщение № 7
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
Amon, а где в Вашем фрагменте
Цитата
лист в переменной с именем с ячейки


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеAmon, а где в Вашем фрагменте
Цитата
лист в переменной с именем с ячейки

Автор - StoTisteg
Дата добавления - 14.06.2018 в 10:39
Amon Дата: Четверг, 14.06.2018, 10:48 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
а где

Я не догадывался что это может так сильно повлиять.Извините меня( Думал просто поменяю лист и все будет ок. я заметил что не сворачивается если
[vba]
Код

Dim str$: str = sahe.[c2]
Pi = Cells.Find(str).Column
'А так почему-то прекрасно работает
Dim str$: str = "1 из 8"
Pi = Cells.Find("1 из 8").Column
[/vba]
 
Ответить
Сообщение
а где

Я не догадывался что это может так сильно повлиять.Извините меня( Думал просто поменяю лист и все будет ок. я заметил что не сворачивается если
[vba]
Код

Dim str$: str = sahe.[c2]
Pi = Cells.Find(str).Column
'А так почему-то прекрасно работает
Dim str$: str = "1 из 8"
Pi = Cells.Find("1 из 8").Column
[/vba]

Автор - Amon
Дата добавления - 14.06.2018 в 10:48
StoTisteg Дата: Четверг, 14.06.2018, 10:52 | Сообщение № 9
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
Ну так проверьте, на каком этапе у Вас идёт сбой. Гоняйте пошагово и смотрите, какие значения у Вас принимают str и Pi. Мы-то ни диста, который у Вас sahe, ни процесса присвоения этой переменной значения не видим...


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Четверг, 14.06.2018, 10:54
 
Ответить
СообщениеНу так проверьте, на каком этапе у Вас идёт сбой. Гоняйте пошагово и смотрите, какие значения у Вас принимают str и Pi. Мы-то ни диста, который у Вас sahe, ни процесса присвоения этой переменной значения не видим...

Автор - StoTisteg
Дата добавления - 14.06.2018 в 10:52
Amon Дата: Четверг, 14.06.2018, 11:00 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
я понял в чем проблема. Только не знаю пока что как ее решить.
Значение str у меня в ячейке листа [c2] и когда он ищет ячейку которая в [c2] он ее же и находит откуда и берет значение. Сейчас нагуглю как исправить чтобы pi искал значения с колонки Д и дальше, а не с шапки с которой он берет значение и будет мне счастье спасибо всем огромное за помощь.
[vba]
Код

                        Dim i As Integer
                        Pi = Cells.Find(str).Column
                        Rows("9:45").Hidden = False
                        For i = 9 To 45
                        If Cells(i, Pi).Value = "" Then Rows(i).Hidden = True
                        Next
[/vba]


Сообщение отредактировал Amon - Четверг, 14.06.2018, 11:02
 
Ответить
Сообщениея понял в чем проблема. Только не знаю пока что как ее решить.
Значение str у меня в ячейке листа [c2] и когда он ищет ячейку которая в [c2] он ее же и находит откуда и берет значение. Сейчас нагуглю как исправить чтобы pi искал значения с колонки Д и дальше, а не с шапки с которой он берет значение и будет мне счастье спасибо всем огромное за помощь.
[vba]
Код

                        Dim i As Integer
                        Pi = Cells.Find(str).Column
                        Rows("9:45").Hidden = False
                        For i = 9 To 45
                        If Cells(i, Pi).Value = "" Then Rows(i).Hidden = True
                        Next
[/vba]

Автор - Amon
Дата добавления - 14.06.2018 в 11:00
Mikael Дата: Четверг, 14.06.2018, 11:12 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
Утречка всем! :D
Amon, а столбцы нормально сворачивает?
Если процедура вызывается с другого листа, необходимо явно указать на каком листе искать и сворачивать ячейки.
Попробуйте так:
[vba]
Код
Pi = ws.Cells.Find(str).Column
ws.Rows("9:45").Hidden = False
For i = 9 To 45
If ws.Cells(i, Pi).Value = "" Then ws.Rows(i).Hidden = True
Next
[/vba]
 
Ответить
СообщениеУтречка всем! :D
Amon, а столбцы нормально сворачивает?
Если процедура вызывается с другого листа, необходимо явно указать на каком листе искать и сворачивать ячейки.
Попробуйте так:
[vba]
Код
Pi = ws.Cells.Find(str).Column
ws.Rows("9:45").Hidden = False
For i = 9 To 45
If ws.Cells(i, Pi).Value = "" Then ws.Rows(i).Hidden = True
Next
[/vba]

Автор - Mikael
Дата добавления - 14.06.2018 в 11:12
StoTisteg Дата: Четверг, 14.06.2018, 11:21 | Сообщение № 12
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
Задайте точный диапазон поиска:
[vba]
Код
Pi = range(Cells(2,3),Cells(2,Cells(Columns.Count).End(xlToLeft).Column)).Find(str).Column
[/vba]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеЗадайте точный диапазон поиска:
[vba]
Код
Pi = range(Cells(2,3),Cells(2,Cells(Columns.Count).End(xlToLeft).Column)).Find(str).Column
[/vba]

Автор - StoTisteg
Дата добавления - 14.06.2018 в 11:21
Amon Дата: Четверг, 14.06.2018, 12:07 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Задайте точный диапазон поиска:


Спасибо я указал так [vba]
Код
Pi = Cells.Find(str, [c2]).Column
[/vba]

работает вроде норм)
Столбцы да, нормально сворачивается вроде все) Убрал обновление экрана и вообще все супер стало. Вызывается только с активного листа


Сообщение отредактировал Amon - Четверг, 14.06.2018, 12:08
 
Ответить
Сообщение
Задайте точный диапазон поиска:


Спасибо я указал так [vba]
Код
Pi = Cells.Find(str, [c2]).Column
[/vba]

работает вроде норм)
Столбцы да, нормально сворачивается вроде все) Убрал обновление экрана и вообще все супер стало. Вызывается только с активного листа

Автор - Amon
Дата добавления - 14.06.2018 в 12:07
StoTisteg Дата: Четверг, 14.06.2018, 12:30 | Сообщение № 14
Группа: Авторы
Ранг: Ветеран
Сообщений: 879
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
Amon, точный диапазон в любом случае не повредит, ускоряет работу. Поиск-то работает перебором... А если там кто-нибудь с его параметрами игрался и поставил просмотр по столбцам... Ну Вы поняли.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеAmon, точный диапазон в любом случае не повредит, ускоряет работу. Поиск-то работает перебором... А если там кто-нибудь с его параметрами игрался и поставил просмотр по столбцам... Ну Вы поняли.

Автор - StoTisteg
Дата добавления - 14.06.2018 в 12:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скрыть\Показать столбцы не соответствующие тексту (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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