Страницы: 1
RSS
Как сделать одной функцией, поиск только цифры и поиск по количеству знаков одновременно, Функция поиска по цифрам с количеством символом в тексте
 
Есть предложение

обл Владимирская, р-н Селиий, д Копнино, ул sfsdfghf, д. 27 rd 1021 601343 5006812523167644  атоыволпжважр

как сделать одной функцией, чтобы выглядело так
после указания ячейки, можно было указать количество знаков целого текста из цифры
=Найтицифрыпоколичеству(A1;6) результат 601343
=Найтицифрыпоколичеству(A1;16) результат 5006812523167644
 
и вам здрасьте
Код
Function Найтицифрыпоколичеству(r, n)
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d{" & n & "}"
        Найтицифрыпоколичеству = .Execute(r)(0)
    End With
End Function
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, спасибо
 
buchlotnik, а как сделать строго чтобы по количеству например 3 тоже берет и режет
 
если понимать что нужно сделать - можно сделать
пока не понятно - ничего сделать нельзя((
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
1021 601343 5006812523167644
1021 601343 5006812523167644
чтобы при указании 4 в количестве было найдено 4
1021 -4
601343 -6
5006812523167644 -16
=Найтицифрыпоколичеству(A1;3) набираю он берет 601343 и оставляет 601 а должно быть 0 или пусто
 
опа!
а чем не устроило то, что предложил buchlotnik???
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, я же написал
как сделать строго, чтобы по количеству и не резало, а брало сколько есть иначе 0 или пусто
например ставишь 3 он берет из 6 тоже, но режет до 3х
Изменено: Goldenito - 13.11.2020 02:17:08
 
Код
        .Pattern = "(^|\D)(\d{" & n & "})(?!\d)"
        If .test(r) Then Найтицифрыпоколичеству = .Execute(r)(0).submatches(1)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, идеально, супер
 
идеально, когда маска зацепит № дома: 3, и 27 и 115 и, возможно, 1001
а вариант выше - это так.... приблизительное решение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, да но на данный момент нужен индекс почты и длинный номер, поэтому все ок  
 
Цитата
Goldenito написал:
идеально, супер
это когда нормальный пример и полное описание задачи содержатся в #1
Цитата
Goldenito написал:
нужен индекс почты и длинный номер
решается моим кодом безо всяких рюшек, а большего изначально и не просили
Изменено: buchlotnik - 13.11.2020 07:15:50
Соблюдение правил форума не освобождает от модераторского произвола
 
Goldenito, написал
Цитата
(A1;3) набираю он берет 601343 и оставляет 601 а должно быть 0 или пусто
Цитата
ставишь 3 он берет из 6 тоже, но режет до 3х
Видимо вам надо так
Код
Function Найтицифрыпоколичеству(r, n)
  With CreateObject("VBScript.RegExp")
    .Pattern = "\b\d{" & n & "}\b"
    If .test(r) Then
      Найтицифрыпоколичеству = .Execute(r)(0)
    Else
      Найтицифрыпоколичеству = "Нет в ячейке " & n & "-значного числа"
    End If
  End With
End Function
Страницы: 1
Наверх