Страницы: 1
RSS
.find vba для поиска конкретного числа, как заставить .find искать не часть числа а конкретное число в имеющемся списке
 
Здравствуйте!
Посоветуйте как обойти возникшую трудность.

Ситуация такова:
Есть два столбца. В первом столбце перечисляются просто номера, во втором столбце список текста с номерами.
Нужно перебрать по порядку номера из первого столбца и каждый раз указывать где он находится во втором столбце.

Написал макрос поиска через .find и он вполне сносно указывает позиции во втором столбце
Проблема возникает когда в первом столбце появляются короткие одно и двухзначные числа: например если в первом столбце число "1" то макрос указывает во втором столбце на любые номера в которых присутствует единица (и №1 и №11 и №111 и №155 и т.д), а нужно чтобы он выделил только позицию №1.
То же самое при поиске двузначных чисел: ища №26 он найдёт и №269 и №2647 и т.д
 
Ваш файл не смотрел, но по вашему тексту могу сказать, что - если вы ищите такое руками на листе через Ctrl+F, то вы в параметрах поиска ставите галочку "ячейка целиком", то в коде vba у  метода Find так же в параметрах надо это указать - LookAt:=xlWhole
Вот почитайте https://vremya-ne-zhdet.ru/vba-excel/metod-range-find/
Изменено: New - 25.09.2021 10:09:26
 
Код
Sub Sertificat_TP_Raschet()
  Dim objWrdApp As Object, RNG As String, j, text, adr$
  If ActiveCell = "" Then Exit Sub
  text = "№" & ActiveCell
  Set j = Range("C:C").Find(text, LookIn:=xlValues)
  If Not j Is Nothing Then
    adr = j.Address(0, 0)
    Set re = CreateObject("VBScript.RegExp"): re.Pattern = text & "(\D|$)"
    Do
      If Not j Is Nothing Then
        If re.test(j.Value) Then
          ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:="", _
          SubAddress:="'" & ActiveSheet.Name & "'!" & j.Address(0, 0)
          Exit Sub
        End If
      End If
      Set j = Range("C:C").Find(text, j)
      If j.Address(0, 0) = adr Then Exit Sub
    Loop
  End If
End Sub
Изменено: Ігор Гончаренко - 25.09.2021 18:15:33
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
New написал:
в коде vba у  метода Find так же в параметрах надо это указать - LookAt:=xlWhole
Т.к. в ячейках во втором столбце помимо номеров есть ещё и дополнительный текст, то поиск с параметром LookAt:=xlWhole не сможет найти в них ни одного совпадения вообще ведь полного совпадения не будет.
Изменено: G_I_S - 25.09.2021 17:25:53
 
G_I_S, у Вас не цитата, а копия сообщения #2. Зачем? Приведите сообщение в порядок.
 
Ігор Гончаренко,

Огромное спасибо!
О подобных методах с регулярными выражениями действительно не подозревал.

Глубине ваших знаний - моё почтение!
Страницы: 1
Наверх