Функция поля поиска для списка инвентаря инструментов - PullRequest
0 голосов
/ 29 мая 2018

Я создал шаблон для инвентаризации инструментов на вкладке Excel "ESOS" и еще одну вкладку для поиска на вкладке лист2.Поиск работает нормально, но я не буду работать, если я не наберу слово целиком или точно слово для названия инструмента.Пример: чтобы найти сверла, я должен ввести именно слово «Сверла».Интересно, есть ли способ для функции поиска VBA для поиска по всему списку, хотя я набираю только Dri или Drill.enter image description here вот код.

Option Compare Text

Sub searchable()
Dim erow As Long
Dim ws As Worksheet
Dim lastrow As Long
Dim count As Integer


lastrow = Sheets("ESOS").Cells(Rows.count, 1).End(xlUp).Row
Sheet2.Range("a11:F6000").ClearContents

count = 0

Dim p As Long

p = 11

For x = 2 To lastrow

If Sheets("ESOS").Cells(x, 1) = Sheet2.Range("B3") Then
     Sheet2.Cells(p, 1) = Sheets("ESOS").Cells(x, 1)
     Sheet2.Cells(p, 2) = Sheets("ESOS").Cells(x, 2)
     Sheet2.Cells(p, 3) = Sheets("ESOS").Cells(x, 3)
     Sheet2.Cells(p, 4) = Sheets("ESOS").Cells(x, 4)
     Sheet2.Cells(p, 5) = Sheets("ESOS").Cells(x, 5)
     Sheet2.Cells(p, 6) = Sheets("ESOS").Cells(x, 6)
     p = p + 1
     count = count + 1
End If
Next x

MsgBox " The number of data found for this item code is " & "" & count

End Sub

1 Ответ

0 голосов
/ 29 мая 2018

Чтобы получить частичные совпадения, измените:

If Sheets("ESOS").Cells(x, 1) = Sheet2.Range("B3") Then

На:

If InStr(Sheets("ESOS").Cells(x, 1), Sheet2.Range("B3")) > 0 Then

Вы также можете сделать поиск нечувствительным к регистру:

If InStr(LCase(Sheets("ESOS").Cells(x, 1)), LCase(Sheet2.Range("B3"))) > 0 Then

Такжеобъявлять что-либо как Integer - это вообще плохая практика, этого следует избегать, особенно если эта переменная хранит номер строки.Если строка превысит 32 767, ваш макрос потерпит крах, хотя в этом случае это число строк результата, которое никогда не должно быть таким большим.Вместо этого используйте Long.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...