在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
但是我只想让字符串中的数字反转。如何才能使函数只选择字符串中的数字?
答案 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