簡體   English   中英

如何在一個單元格中從字符串中查找和添加數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM