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

Вход

Регистрация

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

 

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

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

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


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

Автор - ovechkin1973
Дата добавления - 08.08.2017 в 16:28
_Boroda_ Дата: Вторник, 08.08.2017, 16:45 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

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

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


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

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

Автор - ovechkin1973
Дата добавления - 08.08.2017 в 20:32
_Boroda_ Дата: Вторник, 08.08.2017, 20:42 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 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
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

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

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


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

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

Автор - RAN
Дата добавления - 08.08.2017 в 20:58
_Boroda_ Дата: Среда, 09.08.2017, 00:01 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 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 из 1
  • 1
Поиск:

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