Точное совпадение с использованием InStr в Excel VBA

Я написал функцию search function в моей программе, которая вернет, будет ли конкретная строка доступна в одном text file Теперь появляется функция проблемы, не выполняющая соответствие Точного.

Пожалуйста, рассмотрите следующие примеры данных, которые будут внутри моего text file , здесь моя функция не может определить, что оба значения различны. sample data 1 : fol1_fol2_SMPTR и sample data 2 : fol1_fol2_SMPTR1 .

Пожалуйста, найдите мой поисковый код ниже.

 strFileName = "C:\data\datafile.txt" 

Рассмотрим sample data 1 and 2 как входные данные в переменную strSearch

 Function sheetExists(strSearch, strFileName) As Boolean sheetExists = False Dim strLine As String Dim f As Integer Dim lngLine As Long Dim blnFound As Boolean f = FreeFile Open strFileName For Input As #f Do While Not EOF(f) lngLine = lngLine + 1 Line Input #f, strLine If InStr(1, strLine, strSearch, vbBinaryCompare) > 0 Then 'MsgBox "Search string found in line " & lngLine, vbInformation blnFound = True Exit Do End If Loop Close #f If blnFound Then sheetExists = True End If End Function 

Позвольте мне знать ваши ценные предложения и мысли.

Из того, что вы описали, похоже, что вы хотите получить текст в строке после разделителя (в данном случае : :).

  1. Найдите позицию разделителя :

    InStr(1, strLine, ":")

  2. Добавьте 1 к нему, чтобы получить позицию персонажа сразу после него.

    InStr(1, strLine, ":") + 1

  3. Используйте функцию Mid$ чтобы получить строку, начинающуюся с этой позиции до конца этой строки (обратите внимание, что Mid$ имеет 3 параметра; игнорирование последнего предполагает, что строка, начинающаяся с позиции, заданной вторым параметром, заканчивается строки).

    Mid$(strLine, InStr(1, strLine, ":") + 1)

  4. Обрезайте левую часть строки с помощью LTrim$ чтобы удалить все ведущие пробелы.

    LTrim$(Mid$(strLine, InStr(1, strLine, ":") + 1))

  5. Наконец, сравните его со строкой поиска.

    LTrim$(Mid$(strLine, InStr(1, strLine, ":") + 1)) = strSearch


Короче говоря, измените это:

 If InStr(1, strLine, strSearch, vbBinaryCompare) > 0 Then 

К этому:

 If LTrim$(Mid$(strLine, InStr(1, strLine, ":") + 1)) = strSearch Then 

Если я прочитал это правильно, вы хотите убедиться, что строка, сопоставленная в файле, точно такая же, как и первое значение.

Одно из предложений – проверить привязку strSearchValue с разделительным символом.

Например, если для примера «sample data 1: fol1_fol2_SMPTR» следует пробел, вы можете проверить использование If InStr(1,strLine, strSearch & " ",vbBinaryCompare) > 0 Then...

В противном случае, если входные значения просто должны точно соответствовать строке, а других символов нет, тогда вы можете просто использовать If strSearch = strLine Then...

благодаря

  • Excel: функция поиска в векторном стиле без сортировки
  • Я хотел бы посмотреть два значения, чтобы вернуть значение в определенной строке
  • Создание инструмента поиска и результат листинга в электронной таблице Excel
  • Поиск нескольких конкретных слов в Excel
  • Как заменить содержимое ячейки на основе заголовка строки?
  • Excel VBA + Создать список полных имен файлов с именами файлов (или аналогичными)
  • Посмотрите значение с несколькими критериями
  • Посмотрите несколько строк
  • Excel - возвращает несколько совпадающих значений из столбца, соответствующего двум переменным, по горизонтали в одной строке
  • Как запустить хромированный поиск (google) с использованием данных excel для ключевого слова с уникальными вкладками из каждой ячейки? - mac sierra
  • Excel VBA это должно работать, но это не
  • Interesting Posts
    Давайте будем гением компьютера.