反转字符串中的数字

时间:2018-03-15 17:20:39

标签: excel vba excel-vba

在Excel中,我在某些单元格中有一些字符串。字符串看起来像这样:

  约翰出生于1002年,现年91岁

     

Alissa出生于1102年,92年后将去亚特兰大。

我希望他们看起来像这样:

  约翰出生于2001年,现年19岁

     

Alissa出生于2011年,29年后将去亚特兰大。

我搜索并找到了以下反转所有字符串的VBA代码:

Function Reversestr(str As String) As String
    Reversestr = StrReverse(Trim(str))
End Function

但是我只想让字符串中的数字反转。如何才能使函数只选择字符串中的数字?

1 个答案:

答案 0 :(得分:2)

这将迭代A列并反转找到的所有数字:

Sub FLIPNUM()

    With Worksheets("Sheet1")
        Dim rngarr As Variant
        rngarr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value

        Dim i As Long
        For i = LBound(rngarr, 1) To UBound(rngarr, 1)
            Dim str() As String
            str = Split(rngarr(i, 1))

            Dim j As Long
            For j = 0 To UBound(str)
                If IsNumeric(str(j)) Then
                    str(j) = StrReverse(str(j))
                End If
            Next j
            rngarr(i, 1) = Join(str, " ")
        Next i
        .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value = rngarr
    End With

End Sub

或作为一种功能:

Public Function ReverseNum(rng As Range) As String
    If rng.Cells.Count > 1 Then Exit Function
    Dim str() As String
    str = Split(rng.Value)

    Dim j As Long
    For j = 0 To UBound(str)
        If IsNumeric(str(j)) Then
            str(j) = StrReverse(str(j))
        End If
    Next j
    ReverseNum = Join(str, " ")
End Function

enter image description here