Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2011, 00:58   #1
clever77
Пользователь
 
Регистрация: 13.04.2011
Сообщений: 58
По умолчанию Как определить адресс видимой ячейки по применения автофильтра?

А столбец данных
Применен автофильтр по критерию (Пусть будет значение ячейки=1)

Columns(1).AutoFilter Field:=1, Criteria1:="=1"

Найдено 10 значений
Итог
ячейка А1 Заглавие столбца+10 видимых ячеек, со значением=1

Вопрос:
Как узнать адресс каждой из 10 видимых ячеек. Достаточно номер строки, т.к. номер столбца известен

Можно использовать:

Set orange = [a2:a105]
With orange
А = orange.SpecialCells(xlVisible).Addr ess
End With

А-в итоге будет равна адресу всех видимых ячеек
$A$2,$A$35,$A$58,$A$90..... и.т.д и из этой строки выбирать адреса, но хочется попроще

Как присвоить переменной А адрес к примеру второй видимой ячейки?
clever77 вне форума Ответить с цитированием
Старый 02.06.2011, 01:57   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

a = Split(orange.SpecialCells(xlVisible ).Address, ",")(2 - 1)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.06.2011, 13:51   #3
clever77
Пользователь
 
Регистрация: 13.04.2011
Сообщений: 58
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
a = Split(orange.SpecialCells(xlVisible ).Address, ",")(2 - 1)
Да, это работает....
Но не совсем то что хотелось......
После применения автофильтра у Вас есть столбец с 1 строкой (Cells(1,1) -заголовок и несколько видимых строк удовлетворяющих условию (в нашем случае=1), которые распологаются не подряд....
Пусть активная ячейка - заголовок столбца, т.е первая строка

Тогда как обратиться ко второй строке (видимой)?

По средствам ActiveCell.Offset(1,0) не получается .....
Если исп ActiveCell.Offset(1, 0).SpecialCells(xlVisible).Select
Выделяются все видимы строки включая заголовок
А надо сделать активной только вторую видимую ячейку в столбце А
А уж опр адресс активной ячейки - это просто...
clever77 вне форума Ответить с цитированием
Старый 02.06.2011, 14:49   #4
clever77
Пользователь
 
Регистрация: 13.04.2011
Сообщений: 58
По умолчанию

Додумался чтобы выделялись только видимые ячейки в столбце А (не вся строка) исключая заголовок

With [a2:a105].SpecialCells(xlVisible)
.SpecialCells(xlVisible).Offset(xlV isible = True, 0).Select
End With

Может кто знает как из этого оставить выделенной только вторую видимую ячейку в столбце A?

Или как присвоить видимым ячейкам столбца В номера выделенных ячеек столбца А?
clever77 вне форума Ответить с цитированием
Старый 02.06.2011, 22:14   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
  Dim A As String
  A = [a2:a105].SpecialCells(xlVisible).Address
  If InStr(A, ",") = 0 Then
    SecCelAdr = Range(A).Cells(2).Address
  Else
    If Range(Split(A, ",")(0)).Count > 1 Then
      SecCelAdr = Range(Split(A, ",")(0)).Cells(2).Address
    Else
      SecCelAdr = Range(Split(A, ",")(1)).Cells(1).Address
    End If
  End If
в SecCelAdr получите адрес второй видимой ячейки (при включенном фильтре, выключенном)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.06.2011, 22:22   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Или как присвоить видимым ячейкам столбца В номера выделенных ячеек столбца А?
"выделенных" - видимо видимых, извините за тавтологию.
в В2=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(102;A$2:A2), тянете вниз по данным, применяете фильтры, смотрите... шлете деньги
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 02.06.2011 в 22:25.
IgorGO вне форума Ответить с цитированием
Старый 05.06.2011, 03:28   #7
clever77
Пользователь
 
Регистрация: 13.04.2011
Сообщений: 58
По умолчанию

[QUOTE=IgorGO;816124]"выделенных" - видимо видимых, извините за тавтологию.

Нет имелось ввиду именно выделенных, т.к. после

With [a2:a105].SpecialCells(xlVisible)
.SpecialCells(xlVisible).Offset(xlV isible = True, 0).Select
End With

В столбце А остаются выделенными только ячейки удовлетворяющие условию (критерию фильтра),а вот скрытые ячейки столбца не выделяются. Причем ActiveCell не заголовок столбца, а вторая видимая строка, Простите не строка,а ячейка..

На данный момент вопрос закрыт!

Результат достигнут другим путем. Перемещение между видимыми ячейками происходит без опр адреса и без исп циклов . Решение оказалось довольно простым - по средствам включения в программу Intersect – пересечения двух диапазонов:
1. Диапазон фильтра
2. Видимых ячеек
В итоге при выполнении макроса перемещение происходит последовательно по всем видимым (отфильтрованным значениям), причем как вниз, так думаю возможно организовать и обратное перемещение - вверх, аналогично табличному EXCEL при нажатии стрелок перемещения ВВЕРХ и ВНИЗ.
3 дня ушло на поиск в интернете 5 строчек кода!!!! Начал было уже думать, что простого решения НЕТ................

Спасибо всем за участие!

Последний раз редактировалось clever77; 05.06.2011 в 03:31.
clever77 вне форума Ответить с цитированием
Старый 16.07.2011, 19:58   #8
CooperNick
 
Регистрация: 16.07.2011
Сообщений: 9
По умолчанию

Подскажите, а как заполнить текстовой константой ячейки первого столбца после применения автофильтра по содержимому второго столбца?

Спасибо.
CooperNick вне форума Ответить с цитированием
Старый 16.07.2011, 20:03   #9
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Выделить ячейки первого столбца, в строку формул ввести текст, Ctrl+Enter.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 16.07.2011, 20:10   #10
CooperNick
 
Регистрация: 16.07.2011
Сообщений: 9
По умолчанию

Я неправильно сформулировал, сорри.

После записи макроса получился вот такой код
Код:
    Selection.AutoFilter Field:=2, Criteria1:="=Вася", Operator:=xlOr _
        , Criteria2:="=Петя"
    
    Range("A3246").Select 'Это я мышкой кликнул на первой ячейке
    ActiveCell.FormulaR1C1 = "Друг"
    
    Selection.FillDown
Но при воспроизведении срабатывает только автофильтр.

Ну и адрес первой ячейки полсле применения автофильтра будет меняться

Последний раз редактировалось CooperNick; 16.07.2011 в 20:15. Причина: забыл тег code
CooperNick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить адрес ячейки? PARTOS Microsoft Office Excel 9 31.10.2018 00:28
адресс ячейки через ссылку mihakr Microsoft Office Excel 16 07.08.2011 08:29
Подготовка файла для применения автофильтра Andrey-baykov Microsoft Office Excel 4 01.03.2011 15:18
Как определить IP-адресс компьютера в локальной сети? SalasAndriy C/C++ Сетевое программирование 2 29.11.2007 02:09
Как определить координаты видимой части PaintBox? Vladimir K. Общие вопросы Delphi 3 28.12.2006 10:02