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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск совпадений в нескольких столбцах умной таблицы (Макросы/Sub)
Поиск совпадений в нескольких столбцах умной таблицы
Sashagor1982 Дата: Вторник, 12.10.2021, 19:44 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2706
Репутация: 1123 ±
Замечаний: 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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 299
Репутация: 51 ±
Замечаний: 0% ±

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


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

Автор - MikeVol
Дата добавления - 14.10.2021 в 18:16
Sashagor1982 Дата: Среда, 20.10.2021, 22:14 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Вот файл
К сообщению приложен файл: 4335182.xlsm (186.0 Kb)
 
Ответить
СообщениеВот файл

Автор - Sashagor1982
Дата добавления - 20.10.2021 в 22:14
Pelena Дата: Четверг, 21.10.2021, 08:35 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19167
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Так не подойдёт?
[vba]
Код
    With ThisWorkbook.Worksheets("List").ListObjects("tblOrder").Range
        .AutoFilter Field:=3, Criteria1:=family
        .AutoFilter Field:=4, Criteria1:=name
        .AutoFilter Field:=5, Criteria1:=lastname
    End With
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТак не подойдёт?
[vba]
Код
    With ThisWorkbook.Worksheets("List").ListObjects("tblOrder").Range
        .AutoFilter Field:=3, Criteria1:=family
        .AutoFilter Field:=4, Criteria1:=name
        .AutoFilter Field:=5, Criteria1:=lastname
    End With
[/vba]

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

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