Как искать текст с помощью InStr и Excel Search?

#excel #vba

#excel #vba

Вопрос:

Я хочу найти текст «Общий раздел учетной записи», используя InStr поиск и Excel.

Когда я использую поиск в Excel и ввожу слово «Общие», оно находит значение.

Когда я пытаюсь выполнить поиск по «Общему разделу учетной записи» или «Общие» (общие с пробелом после), он не может найти значение.

То же самое относится и к моей InStr() функции:

 ' Loop through entire column A
For i = 1 To eProColCount 'Rows.Count
    If InStr(1, ActiveSheet.Cells(i, "A").value, "General") <> 0 Then
        Debug.Print ActiveSheet.Cells(i, "A").value
    End If
Next i ' End loop
  

Когда я копирую значение внутри ячейки и вставляю его в поиск или в качестве параметра в my InStr() , он находит то, что я ищу.

Я попытался изменить параметры внутри поиска Excel.

Excel

Комментарии:

1. Что =CODE(MID(A3,8,1)) возвращает?

2. Ваш лист с данными может не быть активной таблицей на момент поиска, поэтому не будут возвращены правильные данные. Попробуйте использовать прямые ссылки на рабочие листы и посмотрите, работает ли это. Я бы также использовал диапазон. Метод поиска для этого не является циклом

3. @Tragamor — буква столбца является допустимым 2-м аргументом в Cells — либо 1 или "A" было бы хорошо.

4. @BigBen Он возвращает 160

5. Это неразрывный пробел. Может быть, заменить его обычным пробелом.

Ответ №1:

другой способ читать столбец, пока он не станет пустым

 Option Explicit ' it is a best practice

Sub search()
        
    Dim n As Integer ' to read the next row
    Dim myContent As String ' content of the current Cell
  
    n = 1
    
    Do While Not (IsEmpty(ThisWorkbook.Application.Sheets("NameOfMySheet").Cells(n, 1)))
      
        myContent = ThisWorkbook.Application.Sheets("NameOfMySheet").Cells(n, 1).Value
        
        If InStr(1, myContent, "General") <> 0 Then
            Debug.Print myContent
        End If
    
    ' next row
    n = n   1
    Loop
End Sub