Option Explicit
Public Vcalc As Variant
Public Function SerieN(V, Optional Target)
Dim F, G, N
Dim J As Integer
G = Split(V, ",")
For Each F In G
N = Split(F, "-")
Select Case UBound(N)
Case 0: SerieN = SerieN & "," & N(0)
Case 1: For J = N(0) To N(1)
SerieN = SerieN & "," & J
Next
Case Else: SerieN = xlErrValue
End Select
Next
If Left(SerieN, 1) = "," Then SerieN = Mid(SerieN, 2)
Select Case True
Case IsMissing(Target)
Case TypeName(Target) = "String": Vcalc = Range(Target).Address(External:=True) & "|" & SerieN
Case TypeName(Target) = "Range": Vcalc = Target.Address(External:=True) & "|" & SerieN
End Select
End Function