Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
28.03.2024, 18:38:13

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Если в столбце эксель есть данные, то запустить макросом автофильтр
Страниц: [1]   Вниз
Печать
Автор Тема: Если в столбце эксель есть данные, то запустить макросом автофильтр  (Прочитано 4791 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Елена@1969@
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« : 15.07.2020, 15:35:38 »

Добрый день.
Необходимо, чтобы при открытии книги в столбце F происходила автофильтрация от меньшего к большему, Но только если есть в столбце данные (это будут числа).
Мне удалось макрорекордером написать только без условия содержания данных в столбце. И фильтрация происходит даже, если столбец пустой, что мне совсем не надо.
Помогите, пожайлуста, не владею написанием функций макроса.
Вот что у меня получилось:

Код: (vb)
Private Sub Workbook_Open()
'
' Макрос1 Макрос
'

'
    ActiveWorkbook.Worksheets("ИЕПР").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("ИЕПР").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "F11:F10011"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("ИЕПР").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   End Sub


Комментарий администратора Коды оформляйте тегами VBCode. п.п. 4.25 Правил форума
« Последнее редактирование: 15.07.2020, 16:32:43 от Дмитрий Щербаков(The_Prist) » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 15.07.2020, 16:16:11 »

Как можно понять, что столбец F не пустой? Без макросов - просто понять, как Вам подсказать решение. Без макросов Вы как понимаете, что столбец пустой? Нет ни единой записи или можно опереться на ячейку F11, F12?
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Елена@1969@
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« Ответ #2 : 15.07.2020, 16:28:53 »

Возможно я как то не верно описала, что хочу.
В эту книгу подтягиваются данные с других (связи).
В столбец F подтягиваются номера "1001", "3002" и т.п.
Надо, чтобы при открытии книги они встали от меньшего к большему.
Но если книга пустая, и в ней пока нет связей и соответственно данных в столбце "F", то не надо, чтобы происходила фильтрация.
Сейчас происходит в этом файле фильтрация по пустым ячейкам столбца
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #3 : 15.07.2020, 16:32:27 »

и в ней пока нет связей и соответственно данных в столбце "F"
так это я и пытаюсь выяснить Улыбка Мы же не знаем как выглядит Ваша пустая книга Улыбка Она совсем пустая? Или только таблица пустая в ней, но есть заголовки и формулы
В общем случае можно сделать так:
Код: (vb)
Private Sub Workbook_Open()
'
' Макрос1 Макрос
'

'
    If ActiveWorkbook.Worksheets("ИЕПР").Range("F11").Value <> "" Then
      ActiveWorkbook.Worksheets("ИЕПР").AutoFilter.Sort.SortFields.Clear
      ActiveWorkbook.Worksheets("ИЕПР").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "F11:F10011"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
      With ActiveWorkbook.Worksheets("ИЕПР").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
      End With
    End If
   End Sub


P.S. Коды в сообщениях оформляйте тегами VBCode. п.п. 4.25 Правил форума
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Елена@1969@
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« Ответ #4 : 15.07.2020, 16:35:27 »

Вы прописали, чтобы фильтрация в книге не происходила, если другие столбцы(F11)  пустые.
Правильно понимаю?
Наверное так.
Попробую.
Спасибо
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #5 : 15.07.2020, 16:37:24 »

если другие столбцы(F11)  пустые
нет, я прописал условие, что будет фильтрация, если ячейка F11 НЕ ПУСТАЯ:
Код: (vb)
If ActiveWorkbook.Worksheets("ИЕПР").Range("F11").Value <> "" Then
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Елена@1969@
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« Ответ #6 : 15.07.2020, 16:43:58 »

Поняла.
Работает, если указала ячейку F 12.
Спасибо большое!
Может надо было указать, что если другие столбцы пустые, то автофильтр при открытии книги не срабатывает.
Но так тоже отлично!
СПАСИБО!
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #7 : 15.07.2020, 16:56:50 »

Можно по сути с любым диапазоном проделать нечто подобное. Например, для проверки есть ли данные в ячейках A12:F3000 можно проверку записать так:
Код: (vb)
If IsNull(ActiveWorkbook.Worksheets("ИЕПР").Range("A12:F3000").Text) Then
'в диапазоне есть хотя бы одно значение
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Елена@1969@
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« Ответ #8 : 16.07.2020, 12:15:49 »

Добрый день, Дмитрий.
Извините, что опять беспокою.
Почему-то при открытии файла возникает ошибка:
#Run-time error '91':
Object variable or with block variable not set#
И эта новая команда (и в первом и во втором вариантах) подсвечивается желтым.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #9 : 16.07.2020, 13:41:27 »

Убедитесь, что в активной книге есть лист "ИЕПР". А вообще, если все это надо делать именно в книге с кодом, то ActiveWorkbook везде надо заменить на ThisWorkbook, чтобы обращение шло всегда к книге, в которой записан код, а не к любой активной на этот момент.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Елена@1969@
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« Ответ #10 : 16.07.2020, 14:11:15 »

Хорошо.
А я подумала, что требуется что-то объявить переменной.
но я не смогу, читаю, пробую, пока "0"   Плачущий
Спасибо Вам
Записан
Елена@1969@
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« Ответ #11 : 16.07.2020, 14:38:03 »

Огромное СПАСИБО!
Работает Улыбка
Записан
Елена@1969@
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« Ответ #12 : 31.07.2020, 13:33:29 »

Добрый день, Дмитрий.
Возникли трудности с автофильтром.
В столбце «F» применён автофильтр от меньшего к большему (макрос при открытии книги ранее прописали).
Но теперь, если в столбце "Е" есть данные, а в столбце "F" пусто, то строки с таким условием оказываются вверху.
Надо, чтобы если в столбце «Е» есть данные, а в столбце «F» пусто, то переместить строки с такими данными вниз, поставить их сразу после строки в которой есть хоть какие то данные.
При этом условие фильтра от меньшего к большему в столбце "F" должно соблюдаться.
Буду очень благодарна за помощь.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #13 : 31.07.2020, 20:10:04 »

Елена, этот вопрос не имеет отношения непосредственно к данной теме. Задача у Вас вообще не про фильтр, а про сортировку уже. Притом не самую простую. Создайте новую тему с Вашим вопросом.
Спасибо.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru