For a formula solution:
B1: =IF(ISNUMBER(--LEFT(A1,FIND("-",A1)-1)),LEFT(A1,FIND("-",A1)-1),MID(A1,FIND("-",A1)+1,99))
C1: =IF(ISNUMBER(--LEFT(A1,FIND("-",A1)-1)),MID(A1,FIND("-",A1)+1,99),LEFT(A1,FIND("-",A1)-1))
For a VBA solution, which might be faster with large amounts of data (read the comments in the code for important information:
Option Explicit
Sub SplitAndOrder()
'Declare variables
Dim wsSrc As Worksheet, wsRes As Worksheet, rRes As Range
Dim vSrc As Variant, vRes() As Variant
Dim I As Long
Dim V As Variant
'Set worksheets and ranges for data Source and Results
'To overwrite original, set wsRes and rRes appropriately
Set wsSrc = Worksheets("Sheet1")
Set wsRes = Worksheets("Sheet1")
Set rRes = Cells(1, 3)
'Get source data into variant array for speed of processing
With wsSrc
vSrc = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
'Dimension results array
ReDim vRes(1 To UBound(vSrc, 1), 1 To 2)
'Process the array
For I = 1 To UBound(vSrc, 1)
V = Split(vSrc(I, 1), "-")
If IsNumeric(V(0)) Then
vRes(I, 1) = (V(0))
vRes(I, 2) = V(1)
Else
vRes(I, 1) = V(1)
vRes(I, 2) = V(0)
End If
Next I
'Write results
Set rRes = rRes.Resize(UBound(vRes, 1), UBound(vRes, 2))
With rRes
.EntireColumn.Clear
.NumberFormat = "@"
.Value = vRes
.EntireColumn.AutoFit
End With
End Sub