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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
заполнение колонки названием выборки в зависимости от фильтр
chebykina_n_88 Дата: Четверг, 20.07.2023, 11:42 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Добрый день.
Прошу помочь.
Есть файл со множество строк, макрос должен применить фильтр к колонке D. Фильтр "содержит ad_id". После применения фильтра остается какое-то количество строк. В колонке E необходимо прописать "выборка1". Далее отменить фильтр и сделать то же самое со столбцом C.
Пример прилагаю.
К сообщению приложен файл: dlja_makrosa.xlsx (10.5 Kb)
 
Ответить
СообщениеДобрый день.
Прошу помочь.
Есть файл со множество строк, макрос должен применить фильтр к колонке D. Фильтр "содержит ad_id". После применения фильтра остается какое-то количество строк. В колонке E необходимо прописать "выборка1". Далее отменить фильтр и сделать то же самое со столбцом C.
Пример прилагаю.

Автор - chebykina_n_88
Дата добавления - 20.07.2023 в 11:42
MikeVol Дата: Четверг, 20.07.2023, 13:46 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 378
Репутация: 81 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
chebykina_n_88, Здравствуйте.
[vba]
Код

Option Explicit

Sub chebykina_n_88()
    Dim aR As Long, c_id As String
    aR = ThisWorkbook.Worksheets("Лист1").Cells(1000, 1).End(xlUp).Row + 1
    c_id = "*ad_id*"
    Application.ScreenUpdating = False

    With ThisWorkbook.Worksheets("Лист1").Range("A2:D" & aR).CurrentRegion
        .AutoFilter 4, "=" & c_id
        .AutoFilter 3, "=" & c_id
    End With

    With ThisWorkbook.Worksheets("Лист1")

        With .AutoFilter.Range

            If .Columns(3).SpecialCells(xlCellTypeVisible).Count > 1 _
                    And .Columns(4).SpecialCells(xlCellTypeVisible).Count > 1 Then
                .Columns(5).Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Value = "выборка1"
            End If

        End With

        If .AutoFilterMode = True Then .AutoFilterMode = False
    End With

    Application.ScreenUpdating = True
End Sub
[/vba]
Всё отлично отрабатывает. Удачи.


Ученик.
Одесса - Украина


Сообщение отредактировал MikeVol - Четверг, 20.07.2023, 13:47
 
Ответить
Сообщениеchebykina_n_88, Здравствуйте.
[vba]
Код

Option Explicit

Sub chebykina_n_88()
    Dim aR As Long, c_id As String
    aR = ThisWorkbook.Worksheets("Лист1").Cells(1000, 1).End(xlUp).Row + 1
    c_id = "*ad_id*"
    Application.ScreenUpdating = False

    With ThisWorkbook.Worksheets("Лист1").Range("A2:D" & aR).CurrentRegion
        .AutoFilter 4, "=" & c_id
        .AutoFilter 3, "=" & c_id
    End With

    With ThisWorkbook.Worksheets("Лист1")

        With .AutoFilter.Range

            If .Columns(3).SpecialCells(xlCellTypeVisible).Count > 1 _
                    And .Columns(4).SpecialCells(xlCellTypeVisible).Count > 1 Then
                .Columns(5).Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Value = "выборка1"
            End If

        End With

        If .AutoFilterMode = True Then .AutoFilterMode = False
    End With

    Application.ScreenUpdating = True
End Sub
[/vba]
Всё отлично отрабатывает. Удачи.

Автор - MikeVol
Дата добавления - 20.07.2023 в 13:46
msi2102 Дата: Пятница, 21.07.2023, 10:07 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Можно это сделать без использования фильтра
[vba]
Код
Sub Макрос1()
Dim arr, arr_1, n As Long
arr = Range("C2:D" & Cells(Rows.Count, 3).End(xlUp).Row)
ReDim arr_1(1 To UBound(arr), 1 To 1)
For n = 1 To UBound(arr)
    If arr(n, 1) Like "*ad_id*" Or arr(n, 2) Like "*ad_id*" Then arr_1(n, 1) = "выборка1"
Next
[e2].Resize(UBound(arr_1)).ClearContents
[e2].Resize(UBound(arr_1)) = arr_1
End Sub
[/vba]
К сообщению приложен файл: dlja_makrosa.xlsm (15.5 Kb)
 
Ответить
СообщениеМожно это сделать без использования фильтра
[vba]
Код
Sub Макрос1()
Dim arr, arr_1, n As Long
arr = Range("C2:D" & Cells(Rows.Count, 3).End(xlUp).Row)
ReDim arr_1(1 To UBound(arr), 1 To 1)
For n = 1 To UBound(arr)
    If arr(n, 1) Like "*ad_id*" Or arr(n, 2) Like "*ad_id*" Then arr_1(n, 1) = "выборка1"
Next
[e2].Resize(UBound(arr_1)).ClearContents
[e2].Resize(UBound(arr_1)) = arr_1
End Sub
[/vba]

Автор - msi2102
Дата добавления - 21.07.2023 в 10:07
MikeVol Дата: Пятница, 21.07.2023, 11:03 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 378
Репутация: 81 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
msi2102, Приветствую вас! Да можно и без использование фильтра, но ТС просил
Цитата chebykina_n_88, 20.07.2023 в 11:42, в сообщении № 1 ()
макрос должен применить фильтр к колонке D. Фильтр "содержит ad_id"

Хозяин барин.


Ученик.
Одесса - Украина


Сообщение отредактировал MikeVol - Пятница, 21.07.2023, 11:04
 
Ответить
Сообщениеmsi2102, Приветствую вас! Да можно и без использование фильтра, но ТС просил
Цитата chebykina_n_88, 20.07.2023 в 11:42, в сообщении № 1 ()
макрос должен применить фильтр к колонке D. Фильтр "содержит ad_id"

Хозяин барин.

Автор - MikeVol
Дата добавления - 21.07.2023 в 11:03
  • Страница 1 из 1
  • 1
Поиск:

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