powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск значения в таблице
14 сообщений из 14, страница 1 из 1
Поиск значения в таблице
    #36279308
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Имеется лист. Первая строка у него закреплена, а все данные таблицы начинаются со второй строки. Как сделать чтобы при введении в ячейку "A1" какого либо выражения происходил поиск по колонке "A" с условим если в колонке "A" встречается выражение из ячейки "A1", то курсор должен переместиться на эту строку, где произошло совпадение?

Подобный поиск я осуществил на форме с использованием элементов ListBox и TextBox

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub TextBox1_Change()
x = Len(TextBox1.Text)
If x <>  0  Then
    For i =  0  To ListBox1.ListCount -  1 
        If UCase(Mid(ListBox1.List(i,  1 ),  1 , x)) = UCase(TextBox1.Text) Then
        ListBox1.selected(i) = True
        Exit Sub
        End If
    Next i
 End If
End Sub

Точно такой же поиск я хочу сделать, но только в роли ListBox должен выступить диапазон ячеек, а в роли TextBox ячейка A1
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36279497
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вставляете в модуль листа, где нужно осуществлять поиск?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cell As Range

On Error Resume Next
If Target <> Range("A1") Then
Exit Sub
Else
    For Each cell In ActiveSheet.Range("A2:A65536")
        If cell.Value = Target.Value Then
        cell.Select
        Exit Sub
        End If
    Next
End If

End Sub
Если в массиве несколько совпадающих значений, выбирается первое.
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36279508
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximuS_GЭто вставляете в модуль листа, где нужно осуществлять поиск?
Здесь знак вопроса не нужен, случайно добавил. Код нужно вставить в модуль листа.
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36279559
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем же делать цикл?
Код: plaintext
Range("A2:A65536").Find (Range("A1"),,,xlWhole).Select
если нужно искать совпадение текста по части ячейки то параметр xlWhole , заменить на xlPart
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36279582
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При попытке ввести значения в Range("A1") курсор улетает в самый конец списка, где ячейка пустая
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36279608
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем же делать цикл?
Range("A2:A65536").Find (Range("A1"),,,xlWhole).Select
если нужно искать совпадение текста по части ячейки то параметр xlWhole, заменить на xlPart
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36279615
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadЗачем же делать цикл?
Range("A2:A65536").Find (Range("A1"),,,xlWhole).Select
если нужно искать совпадение текста по части ячейки то параметр xlWhole, заменить на xlPart
А-а-а, не знал что так можна :)...
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36279689
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Range("A1") <> "" Then
     Range("A2:A65536").Find(Range("A1"), , , xlPart).Select
  End If
End Sub
Сделал так. Теперь после ввода в ячейку какого либо выражения происходит поиск - все нормально, но ввести другое выражение не получается.
Не получается изменить значение Range("A1"), т.к. курсор сразу перепрыгивает на найденную ранее ячейку
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36279783
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 andMegaM

Зачем Вы убрали кусочек моего кода:
Код: plaintext
1.
2.
3.
On Error Resume Next
If Target <> Range("A1") Then
Exit Sub
Else
Попробуйте без него выделить несколько ячеек одновременно. Что получаете? Ошибку?
andMegaM...но ввести другое выражение не получается.
При использовании выше приведенного кусочка кода, выделяя ячеки А1 и А2 одновреммено, есть возможность через строку вводу (там где формулы отображаются) ввести новое значение.
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36279898
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перемещение курсора происходит только если значение в Range("A1") полностью совпадает с каким-либо значением из Range("A2:A65536").
И всеравно это не то что требуется. Может я не понятно поставил задачу...
Мне нужно чтобы при введении в Range("A1") происходил моментальный поиск в Range("A2:A65536")
и при нахождении сочетания символов происходила прокрутка листа на то значение, где оно встречается.
Допустим имеется список городов:
....
Салехард
Самара
Саранск
Саратов
....

т.е если в Range("A1") я ввожу сочетание "Са", то лист должен прокрутиться до значения "Салехард"
если в Range("A1") я ввожу сочетание "Сар", то лист должен прокрутиться до значения "Саранск"

при этом курсор должен оставаться в Range("A1")
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36280291
_Boroda_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andMegaM,

Можно попробовать так:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = [a1] Then
On Error Resume Next
[A2:A65536].Find([a1], , , xlPart).Select
On Error GoTo 0
[a1].Select
End If
End Sub
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36280443
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Boroda_
Это уже похоже на правду. Спасибо.
Но этот код ищет вхождение в любой части выражения и находит первое попавшееся,
т.е. если перевести на sql запросы работает оперптор LIKE '%выражение%'

Мне надо чтобы поиск происходил если введенное выражение совпадает с начальными символами искомого текста.
т.е. если перевести на sql запросы работает оперптор LIKE 'выражение%'
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36280491
_Boroda_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andMegaM,

то же самое, только

[A2:A65536].Find([a1] & "*", , , xlWhole).Select
...
Рейтинг: 0 / 0
Поиск значения в таблице
    #36280529
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отлично. То что надо. Спасибо
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск значения в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]