theStr = "KT150"Извлечение строки между двумя символами в Excel
Количество персонажей всегда 5 в общей сложности. Я хочу убедиться, что в Str есть 3 номера. Как я могу добиться этого в Excel VBA?
theStr = "KT150"Извлечение строки между двумя символами в Excel
Количество персонажей всегда 5 в общей сложности. Я хочу убедиться, что в Str есть 3 номера. Как я могу добиться этого в Excel VBA?
Ваш вопрос немного не хватает в деталях, но как насчет:
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
Это должно помочь:
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
как бы я добавить счетчик на сколько номеров есть? Я попробовал функцию .Count, но, похоже, не работает прямо из коробки. –
Вы можете сохранить переменную счетчика и увеличить ее в цикле For внутри условия if. – Dev
Или просто поместите: 'Len (myStr)' для вывода. –
Вам не нужно 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
, например:
Без VBA попробовать это:
=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},"")))
для получения числа цифровых цифр.
Мне нужно, чтобы r был String и возвращался как String, если возможно –
@JV Я не понимаю. –
попробовать с приведенной ниже формулой
Предположим, что ваши данные в 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")
Отлично! Большое спасибо :) –
Привет, знаете ли вы, как сделать, чтобы последние 3 символа были цифрами? –