Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Поиск ряда определенных символов

Автор Nurbol, 26.04.2018, 20:10:25

« назад - далее »

sboy

Цитата: Nurbol от 03.05.2018, 20:05:10значение в ячейке должно точно соответствовать искомой подстроке
это определяется параметром поиска, можно изменить на поиск части
lookat:=xlWhole
lookat:=xlPart

Цитата: Nurbol от 03.05.2018, 20:05:10вместо четверки, и понял, что нужно передать ее в параметрах функции. А как?
вместо четверки и напишите какой столбец нужен. Или он не известен заранее?
Цитата: Nurbol от 03.05.2018, 20:05:10а что делает функция, если в ячейке несколько возможных вариантов?
перебирает и соединяет все
Цитата: Nurbol от 03.05.2018, 20:05:10в 2016 Ексель нашел Кузнецову, а в 2013 - не нашел.
тут не подскажу, т.к. работаю только на 2010, нет возможности проверить. В 2010 тоже не находит (из-за пробела)

Nurbol

Цитата: sboy от 04.05.2018, 09:26:51
это определяется параметром поиска, можно изменить на поиск части
понятно, будем пробовать

Цитата: sboy от 04.05.2018, 09:26:51вместо четверки и напишите какой столбец нужен. Или он не известен заранее?
Да, неизвестен. Точнее, известен, но нужно передать его в параметрах функции так как разные пользователи с разными файлами. Но здесь я попробую сам. Если не получится - тогда к вам обращусь. Пока не хочу сильно тревожить - итак хорошо помогли, чтобы отвлекать на такие мелочи.

Цитата: sboy от 04.05.2018, 09:26:51перебирает и соединяет все
А вот это интересно. Есть возможность, как-то их в массив, что ли, собирать, а выдавать по индексу, который передается вместе с параметрами функции?

Цитата: sboy от 04.05.2018, 09:26:51тут не подскажу, т.к. работаю только на 2010, нет возможности проверить. В 2010 тоже не находит (из-за пробела)
Ладно, будем экспериментировать. Может "lookat:=xlPart" поможет.
lookat:=xlPart


Спасибо огромное.

Nurbol

В общем, решил выложить полный код, который в результате получился у меня.
Кому-то в помощь, а кто-то может критику подаст.
Всему буду рад.

Function BNBFinder(NaznacheniePlatezha As String, ListBazyPoiska As String, StolbecFIO As Integer, StolbecDBZ As Integer) As String
    '
    '
    '
    'NaznacheniePlatezha - ячейка Назначение платежа из банковской выписки текст которой будет анализироваться
    'ListBazyPoiska - Название листа, в котором находятся все разнородные данные из базы и откуда будет производиться поиск
    'StolbecFIO - номер столбца, содержащий ФИО должника, которого требуется определить
    'StolbecDBZ - номер столбца, содержащий ДБЗ должника, которого требуется определить
    '
    '
    '
   
    Dim SheetNumber As Integer
    Dim t As String
    Dim nurbol As String
    Dim x As Integer
    Dim r
    Dim s
    s = ""
   
    SheetNumber = Worksheets(ListBazyPoiska).Index
    t = NaznacheniePlatezha
    t = Replace(NaznacheniePlatezha, Chr(10), "") 'удаляем переносы строк
   
    With CreateObject("VBscript.RegExp")
        .Global = True
        .Pattern = "(FV)?[-#0-9?/]{6,}"
        If .test(t) Then
            For x = 0 To .Execute(t).Count - 1
                Set r = Sheets(SheetNumber).UsedRange.Find(.Execute(t)(x), lookat:=xlWhole)  'xlPart)   'xlWhole)
                    If Not r Is Nothing Then
                        s = s + "ФИО: " & Sheets(SheetNumber).Cells(r.Row, StolbecFIO) & Chr(10) & "ДБЗ: " & Sheets(SheetNumber).Cells(r.Row, StolbecDBZ) & Chr(10)
                    End If
            Next x
             
            If Len(s) > 0 Then
                nurbol = Left(s, Len(s) - 1)
            Else: nurbol = ""
            End If
        End If
    End With
    BNBFinder = nurbol
End Function

Nurbol

Только пока не разобрался, как работать с шаблонами
.Pattern = "(FV)?[-#0-9?/]{6,}" 

Может дадите направление, где лучше всего почитать, что-то толком не могу сориентироваться

sboy

ищите в интернете по запросу "Регулярные выражения", RegExp
для тренировки использую сайт

Яндекс.Метрика Рейтинг@Mail.ru