2016-04-28 2 views

ответ

0

Ваш вопрос немного не хватает в деталях, но как насчет:

Sub test() 

    Debug.Print containsXnumbers("KT150", 3) 

End Sub 

Function containsXnumbers(sInput As String, xNumbers As Long) As Boolean 

    Dim x As Long 
    Dim numCount As Long 

    For x = 1 To Len(sInput) 
     If IsNumeric(Mid(sInput, x, 1)) Then numCount = numCount + 1 
    Next x 

    If numCount = xNumbers Then containsXnumbers = True 

End Function 
+0

Отлично! Большое спасибо :) –

+0

Привет, знаете ли вы, как сделать, чтобы последние 3 символа были цифрами? –

0

Это должно помочь:

Function onlyDigits(s As String) As String 
    ' Variables needed (remember to use "option explicit"). ' 
    Dim retval As String ' This is the return string.  ' 
    Dim i As Integer  ' Counter for character position. ' 

    ' Initialise return string to empty      ' 
    retval = "" 

    ' For every character in input string, copy digits to  ' 
    ' return string.          ' 
    For i = 1 To Len(s) 
     If Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" Then 
      retval = retval + Mid(s, i, 1) 
     End If 
    Next 

    ' Then return the return string.       ' 
    onlyDigits = retval 
End Function 

Пример:

Dim myStr as String 
myStr = onlyDigits ("3d1fgd4g1dg5d9gdg") 
MsgBox (myStr) 

Вернется (в окне сообщения):

314159 

* Код является точной копией this SO answer

+0

как бы я добавить счетчик на сколько номеров есть? Я попробовал функцию .Count, но, похоже, не работает прямо из коробки. –

+0

Вы можете сохранить переменную счетчика и увеличить ее в цикле For внутри условия if. – Dev

+1

Или просто поместите: 'Len (myStr)' для вывода. –

1

Вам не нужно VBA, чтобы получить число цифр в строке, но вот один из способов их сосчитать:

Public Function KountNumbers(r As Range) As Long 
    Dim i As Long, t As String 

    t = r.Text 
    For i = 1 To Len(t) 
     If Mid(t, i, 1) Like "[0-9]" Then KountNumbers = KountNumbers + 1 
    Next i 
End Function 

, например:

enter image description here

Без VBA попробовать это:

=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},""))) 

для получения числа цифровых цифр.

+0

Мне нужно, чтобы r был String и возвращался как String, если возможно –

+0

@JV Я не понимаю. –

0

попробовать с приведенной ниже формулой

Предположим, что ваши данные в A1. Примените следующую формулу в B1

=IF(AND(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"1",""),"2",""),"3",""),"4",""),"5",""),"6",""),"7",""),"8",""),"9",""),"0",""))=2,LEN(A1)=5),"3 character numerals","No 3 numerals found") 

enter image description here