Поиск точного соответствия в Excel с использованием VBA - PullRequest
0 голосов
/ 13 марта 2019

У меня есть приведенный ниже код, и я работаю над созданием панели поиска с опциями в таблице для фильтрации.Это работает отлично, однако я не могу заставить его искать / фильтровать точные совпадения.Например, если я введу «GE», он вернет все совпадения, в которых слова содержат «GE», а мне нужны только те поля, в которых расположены две буквы.

Может кто-нибудь помочь мне настроить мой код?

  'Filtered Data Range (include column heading cells)
     'Cell Range
       Set DataRange = sht.ListObjects("Table1").Range 'Table

'Retrieve User's Search Input

  mySearch = sht.OLEObjects("Hello").Object.Text 'ActiveX Control


'Determine if user is searching for number or text
  If IsNumeric(mySearch) = True Then
    SearchString = "=" & mySearch
  Else
    SearchString = "=*" & mySearch & "*"

'Loop Through Option Buttons
  For Each myButton In sht.OptionButtons
    If myButton.Value = 1 Then
      ButtonName = myButton.Text
      Exit For
    End If
  Next myButton

'Determine Filter Field
  On Error GoTo HeadingNotFound
    myField = Application.WorksheetFunction.Match(ButtonName, DataRange.Rows(1), 0)
  On Error GoTo 0

'Filter Data
  DataRange.AutoFilter _
    Field:=myField, _
    Criteria1:=SearchString, _
    Operator:=xlAnd

'Clear Search Field
  'sht.Shapes("UserSearch").TextFrame.Characters.Text = "" 'Control Form
  sht.OLEObjects("Hello").Object.Text = "" 'ActiveX Control
  'sht.Range("A1").Value = "" 'Cell Input

Exit Sub

'ERROR HANDLERS
HeadingNotFound:
  MsgBox "The column heading [" & ButtonName & "] was not found in cells " & DataRange.Rows(1).Address & ". " & _
    vbNewLine & "Please check for possible typos.", vbCritical, "Header Name Not Found!"

End Sub

1 Ответ

0 голосов
/ 13 марта 2019

SearchString = "=*" & mySearch & "*" Вы ищете все, что будет содержать mySearch.

Измените его на SearchString = "=" & mySearch

...