14 / 14 / 7
Регистрация: 21.06.2013
Сообщений: 160
Записей в блоге: 1
1

Поиск по двум условиям

16.12.2013, 16:01. Показов 3695. Ответов 9
Метки нет (Все метки)

Здравствуйте!
Сделал поиск по двум условиям. При вводе названия улицы в одно из условий ничего не происходит. При вводе части названия работает!
Помогите найти ошибку пожалуйста.
Вот процедура:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub SuperFiltr()
Dim i, lt1, lt2 As Long, s, txt1, txt2 As String
 
txt1 = TextBox1.Text: lt1 = Len(txt1)
txt2 = TextBox2.Text: lt2 = Len(txt2)
 
If (lt1 + lt2) = 0 Then
    Me.ListBox1.Clear
Else
 
For i = 1 To UBound(x, 1) ' Поиск по любому вхождению символа
    If InStr(x(i, 1), txt1) And InStr(x(i, 1), txt2) Then s = s & "~" & x(i, 1)
Next i
 
Me.ListBox1.List = Split(Mid(s, 2), "~")
End If
 
End Sub
Файл примера прилагаю.
Заранее спасибо.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вложения
Тип файла: zip MyFind.zip (20.9 Кб, 27 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2013, 16:01
Ответы с готовыми решениями:

Поиск данных по двум условиям (по горизонтали и вертикали)
Здравствуйте, помоги, пожалуйста, необходимо из одной таблица перенести данные, соответствующие...

Выборка из таблицы по двум условиям
Уважаемые эксперты! Прошу помощи с небольшой задачей в Excel: Имеется 2 выпадающих меню с...

Заполнение ячеек по двум условиям
Добрый вечер, как по двум условиям (оплачено и дата) из одного листа (журнал )перенести данные(фио...

Подсчет значений по двум условиям
Здравствуйте. Помогите пожалуйста с формулой. Вот условие: есть данные где напротив определенного...

9
3449 / 2112 / 701
Регистрация: 02.11.2012
Сообщений: 5,530
17.12.2013, 11:09 2
Цитата Сообщение от GreyW Посмотреть сообщение
При вводе названия улицы в одно из условий ничего не происходит.
если вводить числа то происходит.
по моему с этой строкой "If InStr(x(i, 1), txt1) And InStr(x(i, 1), txt2)" что то не так. с VBA на ВЫ. сомнения на счет And (И) т.е. у вас должно выполняться два условия для ИСтины.
1
14 / 14 / 7
Регистрация: 21.06.2013
Сообщений: 160
Записей в блоге: 1
17.12.2013, 15:16  [ТС] 3
Цитата Сообщение от Vlad999 Посмотреть сообщение
если вводить числа то происходит.
по моему с этой строкой "If InStr(x(i, 1), txt1) And InStr(x(i, 1), txt2)" что то не так. с VBA на ВЫ. сомнения на счет And (И) т.е. у вас должно выполняться два условия для ИСтины.
Если использую только одно условие и ввожу ломоносова то ничего не находит (хотя должно), если ввожу омоносова находит все, если ввожу моносова опять ничего, если оносова опять находит все, и т.д.
Условие And (И) должно быть, иначе по Ломоносова будут все дома даже если введу номер дома например 3.
0
5694 / 2979 / 619
Регистрация: 23.11.2010
Сообщений: 9,924
17.12.2013, 15:40 4
У Вас почему-то находит только если гласную букву вводить
1
409 / 259 / 80
Регистрация: 27.10.2012
Сообщений: 853
18.12.2013, 00:05 5
Код
If InStr(x(i, 1), txt1) > 0 And InStr(x(i, 1), txt2) > 0 Then
Это как бы =НАЙТИ()
1
14 / 14 / 7
Регистрация: 21.06.2013
Сообщений: 160
Записей в блоге: 1
18.12.2013, 09:48  [ТС] 6
Цитата Сообщение от GreyW Посмотреть сообщение
Visual Basic
1
InStr(x(i, 1), txt1) And InStr(x(i, 1), txt2) Then
Цитата Сообщение от kalbasiatka Посмотреть сообщение
Код
If InStr(x(i, 1), txt1) > 0 And InStr(x(i, 1), txt2) > 0 Then
Всё гениальное просто! Большое спасибо!

Вот только не понятно почему, если здесь использовать только одно условие
Visual Basic
1
InStr(x(i, 1), txt1) Then
то работает без > 0?
0
14 / 14 / 7
Регистрация: 21.06.2013
Сообщений: 160
Записей в блоге: 1
18.12.2013, 10:50  [ТС] 7
Уважаемые форумчане!
Возник ещё один вопрос по данному примеру:

Если ввести первое условие ломоносова, а второе 27, то найдутся два адреса ул.Ломоносова,д.27. Это допустимая ситуация не смотря на повторение.
Но если на форме кликнуть по второму варианту то в таблице всё-равно выделяется первый.
Подскажите пожалуйста как сделать что бы выделялся тот - который прописался в форму при поиске?
Так как в реальной таблице несколько десятков тысяч строк и элементы могут быть разнесены далеко друг от друга, а найти надо.
Заранее спасибо!
0
Миниатюры
Поиск по двум условиям  
409 / 259 / 80
Регистрация: 27.10.2012
Сообщений: 853
18.12.2013, 21:07 8
В листбоксе сделать второй столбец (невидимый) и заносить в него номер строки и обращаться к ячейкам с помощью его.
1
14 / 14 / 7
Регистрация: 21.06.2013
Сообщений: 160
Записей в блоге: 1
19.12.2013, 11:40  [ТС] 9
Цитата Сообщение от kalbasiatka Посмотреть сообщение
В листбоксе сделать второй столбец (невидимый) и заносить в него номер строки и обращаться к ячейкам с помощью его.
Второй столбец получилось сделать, а вот как его скрыть и всё остальное не получается.
0
14 / 14 / 7
Регистрация: 21.06.2013
Сообщений: 160
Записей в блоге: 1
23.12.2013, 15:48  [ТС] 10
Массив значений диапазона получаем так:
Visual Basic
1
x = Range("A2", Cells(Rows.Count, 1).End(xlUp)).Value
, а как получить массив номеров соответствующих строк?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2013, 15:48

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Выборка значения из массива по двум условиям
Доброго дня, уважаемый программисты. Ломаю голову над задачей, но опыта и знаний мало. Есть форма,...

Сумма значений по двум условиям из таблицы
Господа, прошу помощи! Есть сводная таблица партнеров и планами проектов на будущее необходимо...

Выбор значения из таблицы по двум условиям
Здравствуйте Уважаемые! Необходимо сделать выборку из таблицы. Условия такие: 2 Столбца, В первом...

Вернуть значения в ячейку по двум условиям
Добрый день! Мозг плавится! Помогите, пжт! Необходимо прописать формулу для возврата значения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.