In the attached, hurried and basic function Expand. No checks made.
Will fall over if unexpected input.
Function Expand(g)
myNumerals = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9") 'could've used instr instead
If TypeName(g) = "Range" Then
x = Split(Application.Trim(g.Value))
Else
x = Split(Application.Trim(g))
End If
For i = LBound(x) To UBound(x)
y = Split(x(i), "-")
If UBound(y) = 1 Then
p = 0
Do
p = p + 1
Loop Until Not IsError(Application.Match(Mid(y(0), p, 1), myNumerals, 0))
Prefix = Left(y(0), p - 1)
myStart = CLng(Mid(y(0), p))
myFinish = CLng(y(1))
For j = myStart To myFinish
myStr = myStr & " " & Prefix & CStr(j)
Next j
Else
myStr = myStr & " " & x(i)
End If
Next i
Expand = Application.Trim(myStr)
End Function