在Excel中的两个字符之间提取string

theStr =“KT150”

字符总数总是5。 我想确保在Str中有3个数字。 我如何在Excel VBA中实现这个function?

你的问题有点缺乏细节,但如何:

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 

你不需要VBA来获取string中的数字的数量,但这里有一个方法来计算它们:

 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},""))) 

得到数字的数字。

这应该有所帮助:

 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 

*代码是这个答案的确切副本

尝试下面的公式

假设你的数据在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") 

在这里输入图像说明