从string中提取数字集,并在新string中以逗号分隔的值返回

任何人都可以给我任何指示,如何实现这一目标? 我已经设法提取所有的数字,但不能让他们在正确的位置分离。 希望通过excelfunction来实现这一点,但VBA也可以。

这是我现在所拥有的:

=SUMPRODUCT(MID(0&A1;LARGE(INDEX(ISNUMBER(--MID(A1;ROW($1:$25);1))*ROW($1:$25);0);ROW($1:$25))+1;1)*10^ROW($1:$25)/10) 

所需结果示例:

 Cell A1: Result: 123abc 123 abc456 456 123abc456 123,456 789sometext753 789,753 6ty cents, 5% 6,5 

你可以试试这个UDF:

 Public Function GetNumbers(sMark As String) As String 'regexp declaration Dim objRegExp As Object Set objRegExp = CreateObject("vbscript.regexp") With objRegExp .Global = True .Pattern = "(\d+)\D*" Dim i As Long If .Execute(sMark).Count > 1 Then For i = 0 To .Execute(sMark)(0).submatches.Count GetNumbers = GetNumbers & .Execute(sMark)(i).submatches(0) & "," Next Else GetNumbers = .Execute(sMark)(0).submatches(0) & "," End If End With GetNumbers = Left(GetNumbers, Len(GetNumbers) - 1) End Function 

它的尝试和testing你提供的例子,并希望它能适用于所有你需要的情况。

你可以使用这个UDF:

 Function GetNums(target As Range) Dim MyStr As String, i As Integer MyStr = "" If Len(target.Value) = 0 Then GoTo GoExit For i = 1 To Len(target.Value) If IsNumeric(Mid(target, i, 1)) Then MyStr = MyStr & Mid(target, i, 1) Else MyStr = MyStr & " " End If Next i GoExit: GetNums = Application.WorksheetFunction.Substitute(Application.WorksheetFunction.Trim(MyStr), " ", ",") End Function