Почему так макросов боитесь? :)
Ведь намного проще использовать одну (две) UDF вместо кучи стандартных формул.
И кстати макросы разрешать не нужно, если UDF в Personal.xls или как у меня в MyFunc.xls:
=MyFunc.xls!ExtractString(A1)
=MyFunc.xls!ExtractNumber(A1)
А формулы тут в копилке должны быть, или вот, несколько версий:
Function GetNumeric(t As Range)
Dim j As Integer, l As String
For j = 1 To Len(t)
If IsNumeric(Mid(t, j, 1)) Then l = l & Mid(t, j, 1)
Next j
GetNumeric = Val(l)
End Function
Public Function ExtractNumber(S As String)
Dim i As Integer, str As String
For i = 1 To Len(S)
If InStr(1, "1234567890,", Mid(S, i, 1)) <> 0 Then str = str & Mid(S, i, 1)
Next
ExtractNumber = str
End Function
Public Function ExtractString(S As String)
Dim i As Integer, str As String
For i = 1 To Len(S)
If InStr(1, "QWERTYUIOPASDFGHJKLZXCVBNM,.-<>=*/ ", UCase(Mid(S, i, 1))) <> 0 Then str = str & Mid(S, i, 1)
Next
ExtractString = Application.Trim(str)
End Function
Function NumbersOnly(srcStr As String) As String
Dim objRegEx As Object
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Global = True
.Pattern = "[^0-9,]" '"\D"
NumbersOnly = .Replace(srcStr, vbNullString)
End With
Set objRegEx = Nothing
End Function