TheStr = "KT150"

Всего всегда 5 персонажей. Я хочу убедиться, что в строке Str. Как мне добиться этого в Excel VBA?

0
J V 28 Апр 2016 в 15:32

4 ответа

Лучший ответ

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

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
SWa 28 Апр 2016 в 12:43

Попробуйте с формулой ниже

Предположим, что ваши данные находятся в 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

0
Karthick Gunasekaran 28 Апр 2016 в 13:49

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

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

* Код является точной копией этого SO-ответа

0
Community 23 Май 2017 в 10:33

Вам не нужен 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},"")))

Чтобы получить количество цифр.

1
Gary's Student 28 Апр 2016 в 12:45