[英]How Can I Find and Add Numbers from a String in One Cell
有人可以幫助在字母數字單元格中添加數字值嗎?
例如,
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的總和為23!
我會這樣做:
Function SumOnlyDigits(s As String) As Long
Dim Total As Long, i As Long
For i = 1 To Len(s)
If IsNumeric(Mid(s, i, 1)) Then Total = Total + CLng(Mid(s, i, 1))
Next
SumOnlyDigits = Total
End Function
更改為將總計返回為Long而不是String。
更新:這將求和連續混合在字母表中的數字
Private Function SumOnlyNumbers(s As String) As Long
Dim Total As Long, i As Long, x As Long
i = 1
Do Until i > Len(s)
If IsNumeric(Mid(s, i, 1)) Then
x = CLng(GetNumber(Mid(s, i)))
Total = Total + x
i = i + Len(CStr(x))
Else
i = i + 1
End If
Loop
SumOnlyNumbers = Total
End Function
Private Function GetNumber(s As String) As String
Dim sTmp As String, i As Long
sTmp = ""
For i = 1 To Len(s)
' Join characters until non numeric
If IsNumeric(Mid(s, i, 1)) Then
sTmp = sTmp & Mid(s, i, 1)
Else
Exit For
End If
Next
GetNumber = sTmp
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.