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

Вход

Регистрация

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

 

= Мир MS Excel/Изменение данных в отфильтрованных строках - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение данных в отфильтрованных строках (Формулы/Formulas)
Изменение данных в отфильтрованных строках
ovechkin1973 Дата: Вторник, 08.08.2017, 16:28 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
необходимо доработать файл, в котором автоматически по запуску макроса срабатывает фильтр на листе2 (по данным с другого листа3). При этом отфильтровывается от одной до .....строк (конечное количество строк зависит от много чего, обычно больше нескольких строк не отфильтровывается). Есть необходимость в отфильтрованных строках листа 2 в нужном мне столбце (допустим "С") записать букву"Р". (или что то другое, но это я надеюсь сам освоить по примеру того, что мне предложат)
К сообщению приложен файл: _4.xlsm(84Kb)
 
Ответить
Сообщениенеобходимо доработать файл, в котором автоматически по запуску макроса срабатывает фильтр на листе2 (по данным с другого листа3). При этом отфильтровывается от одной до .....строк (конечное количество строк зависит от много чего, обычно больше нескольких строк не отфильтровывается). Есть необходимость в отфильтрованных строках листа 2 в нужном мне столбце (допустим "С") записать букву"Р". (или что то другое, но это я надеюсь сам освоить по примеру того, что мне предложат)

Автор - ovechkin1973
Дата добавления - 08.08.2017 в 16:28
_Boroda_ Дата: Вторник, 08.08.2017, 16:45 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 10955
Репутация: 4553 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Такой вариант
[vba]
Код
    With Лист1.AutoFilter.Range
        .Columns(3).Offset(1).SpecialCells(xlCellTypeVisible) = "p"
        .Offset(.Rows.Count)(1, 3).Clear
    End With
[/vba]
Но только здесь есть скрытая засада - xlCellTypeVisible сработает только в том случае, если у Вас не больше 8172 (вроде так, если и ошибся, то ненамного) несвязанных диапазонов. Иначе "Выделить видимые ячейки" выделит всё подряд

[p.s.]Перенес тему в ветку про VBA[/p.s.]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТакой вариант
[vba]
Код
    With Лист1.AutoFilter.Range
        .Columns(3).Offset(1).SpecialCells(xlCellTypeVisible) = "p"
        .Offset(.Rows.Count)(1, 3).Clear
    End With
[/vba]
Но только здесь есть скрытая засада - xlCellTypeVisible сработает только в том случае, если у Вас не больше 8172 (вроде так, если и ошибся, то ненамного) несвязанных диапазонов. Иначе "Выделить видимые ячейки" выделит всё подряд

[p.s.]Перенес тему в ветку про VBA[/p.s.]

Автор - _Boroda_
Дата добавления - 08.08.2017 в 16:45
ovechkin1973 Дата: Вторник, 08.08.2017, 20:32 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
xlCellTypeVisible сработает только в том случае, если у Вас не больше 8172 (вроде так, если и ошибся, то ненамного) несвязанных диапазонов. Иначе "Выделить видимые ячейки" выделит всё подряд

не совсем понял Ваш комментарий, точнее не понял наверно полностью. Код не будет адекватно работать, если у меня на листе больше 8172 строки или после включения фильтра их будет больше, чем 8172
 
Ответить
Сообщение
xlCellTypeVisible сработает только в том случае, если у Вас не больше 8172 (вроде так, если и ошибся, то ненамного) несвязанных диапазонов. Иначе "Выделить видимые ячейки" выделит всё подряд

не совсем понял Ваш комментарий, точнее не понял наверно полностью. Код не будет адекватно работать, если у меня на листе больше 8172 строки или после включения фильтра их будет больше, чем 8172

Автор - ovechkin1973
Дата добавления - 08.08.2017 в 20:32
_Boroda_ Дата: Вторник, 08.08.2017, 20:42 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 10955
Репутация: 4553 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не, не строк, а НЕСВЯЗАННЫХ диапазонов. Пример - А1:С3 и А5:С55 - это два несвязанных диапазона


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНе, не строк, а НЕСВЯЗАННЫХ диапазонов. Пример - А1:С3 и А5:С55 - это два несвязанных диапазона

Автор - _Boroda_
Дата добавления - 08.08.2017 в 20:42
ovechkin1973 Дата: Вторник, 08.08.2017, 20:57 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Пример - А1:С3 и А5:С55 - это два несвязанных диапазона

начинаю понимать, спасибо! ну думаю такого у меня не должно быть. А почему именно 8172?
 
Ответить
Сообщение
Пример - А1:С3 и А5:С55 - это два несвязанных диапазона

начинаю понимать, спасибо! ну думаю такого у меня не должно быть. А почему именно 8172?

Автор - ovechkin1973
Дата добавления - 08.08.2017 в 20:57
RAN Дата: Вторник, 08.08.2017, 20:58 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4499
Репутация: 907 ±
Замечаний: 0% ±

2010
если у Вас не больше

Было. В 2010 излечили.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
если у Вас не больше

Было. В 2010 излечили.

Автор - RAN
Дата добавления - 08.08.2017 в 20:58
_Boroda_ Дата: Среда, 09.08.2017, 00:01 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 10955
Репутация: 4553 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Тогда я вообще счастлив. Да, документацию нужно читать.
Ну и на радостях вариант попроще
[vba]
Код
With Лист1.AutoFilter.Range
        .Cells(2, 3).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible) = "p"
End With
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТогда я вообще счастлив. Да, документацию нужно читать.
Ну и на радостях вариант попроще
[vba]
Код
With Лист1.AutoFilter.Range
        .Cells(2, 3).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible) = "p"
End With
[/vba]

Автор - _Boroda_
Дата добавления - 09.08.2017 в 00:01
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение данных в отфильтрованных строках (Формулы/Formulas)
Страница 1 из 11
Поиск:

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