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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск совпадений в нескольких столбцах умной таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск совпадений в нескольких столбцах умной таблицы (Макросы/Sub)
Поиск совпадений в нескольких столбцах умной таблицы
Sashagor1982 Дата: Вторник, 12.10.2021, 19:44 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 211
Репутация: 14 ±
Замечаний: 0% ±

Excel 2007
Добрый день, имеется умная таблица

Необходимо найти строку в которой совпадает Фамилия, Имя, Отчество я нашел решение с помощью автофильтра
[vba]
Код
Private Sub FindLine(family As String, name As String, lastname As String)
    Dim rng As Range
    ThisWorkbook.Worksheets("List").AutoFilterMode = False
    With ThisWorkbook.Worksheets("List").ListObjects("tblOrder") _
        .Range(.ListColumns("Фамилия").DataBodyRange, .ListColumns("Имя").DataBodyRange, .ListColumns("Отчество").DataBodyRange, .ListColumns("Дата рождения").DataBodyRange)
            .AutoFilter Field:=1, Criteria1:="=family"
            .AutoFilter Field:=2, Criteria1:="=name"
            .AutoFilter Field:=3, Criteria1:="=lastname"
    End With
    
    With ThisWorkbook.Worksheets("List").ListObjects("tblOrder")
        On Error Resume Next
        Set rng = .ListColumns("Фамилия").DataBodyRange.Rows.SpecialCells(xlCellTypeVisible)
        On Error GoTo 0
    End With
    
    If Not rng Is Nothing Then
        MsgBox rng.Row
    End If

End Sub
[/vba]
Однако код не рабочий, можно ли мне его поправить?
 
Ответить
СообщениеДобрый день, имеется умная таблица

Необходимо найти строку в которой совпадает Фамилия, Имя, Отчество я нашел решение с помощью автофильтра
[vba]
Код
Private Sub FindLine(family As String, name As String, lastname As String)
    Dim rng As Range
    ThisWorkbook.Worksheets("List").AutoFilterMode = False
    With ThisWorkbook.Worksheets("List").ListObjects("tblOrder") _
        .Range(.ListColumns("Фамилия").DataBodyRange, .ListColumns("Имя").DataBodyRange, .ListColumns("Отчество").DataBodyRange, .ListColumns("Дата рождения").DataBodyRange)
            .AutoFilter Field:=1, Criteria1:="=family"
            .AutoFilter Field:=2, Criteria1:="=name"
            .AutoFilter Field:=3, Criteria1:="=lastname"
    End With
    
    With ThisWorkbook.Worksheets("List").ListObjects("tblOrder")
        On Error Resume Next
        Set rng = .ListColumns("Фамилия").DataBodyRange.Rows.SpecialCells(xlCellTypeVisible)
        On Error GoTo 0
    End With
    
    If Not rng Is Nothing Then
        MsgBox rng.Row
    End If

End Sub
[/vba]
Однако код не рабочий, можно ли мне его поправить?

Автор - Sashagor1982
Дата добавления - 12.10.2021 в 19:44
Gustav Дата: Вторник, 12.10.2021, 21:40 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1913
Репутация: 771 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Как-то лихо Вы с параметрами процедуры обошлись:
[vba]
Код
            .AutoFilter Field:=1, Criteria1:="=family"
            .AutoFilter Field:=2, Criteria1:="=name"
            .AutoFilter Field:=3, Criteria1:="=lastname"
[/vba]
Наверное же, как-то так надо:
[vba]
Код
            .AutoFilter Field:=1, Criteria1:="=" & family
            .AutoFilter Field:=2, Criteria1:="=" & name
            .AutoFilter Field:=3, Criteria1:="=" & lastname
[/vba]


Мой tip box - яд 41001663842605
 
Ответить
СообщениеКак-то лихо Вы с параметрами процедуры обошлись:
[vba]
Код
            .AutoFilter Field:=1, Criteria1:="=family"
            .AutoFilter Field:=2, Criteria1:="=name"
            .AutoFilter Field:=3, Criteria1:="=lastname"
[/vba]
Наверное же, как-то так надо:
[vba]
Код
            .AutoFilter Field:=1, Criteria1:="=" & family
            .AutoFilter Field:=2, Criteria1:="=" & name
            .AutoFilter Field:=3, Criteria1:="=" & lastname
[/vba]

Автор - Gustav
Дата добавления - 12.10.2021 в 21:40
Sashagor1982 Дата: Четверг, 14.10.2021, 16:43 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 211
Репутация: 14 ±
Замечаний: 0% ±

Excel 2007
Ошибка появляется в строке
[vba]
Код
ThisWorkbook.Worksheets("List").ListObjects("tblOrder") _
        .Range(.ListColumns("Фамилия").DataBodyRange, .ListColumns("Имя").DataBodyRange, .ListColumns("Отчество").DataBodyRange, .ListColumns("Дата рождения").DataBodyRange)
[/vba]
 
Ответить
СообщениеОшибка появляется в строке
[vba]
Код
ThisWorkbook.Worksheets("List").ListObjects("tblOrder") _
        .Range(.ListColumns("Фамилия").DataBodyRange, .ListColumns("Имя").DataBodyRange, .ListColumns("Отчество").DataBodyRange, .ListColumns("Дата рождения").DataBodyRange)
[/vba]

Автор - Sashagor1982
Дата добавления - 14.10.2021 в 16:43
MikeVol Дата: Четверг, 14.10.2021, 18:16 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 126
Репутация: 14 ±
Замечаний: 0% ±

Excel 2019
Sashagor1982, Приложите ваш файл-пример с кодом как оно есть.


Ученик - Наблюдатель. Учиться Никогда не поздно.
 
Ответить
СообщениеSashagor1982, Приложите ваш файл-пример с кодом как оно есть.

Автор - MikeVol
Дата добавления - 14.10.2021 в 18:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск совпадений в нескольких столбцах умной таблицы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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