Sub SplitColumns()
    Dim SP2$(), SP3$()
                            AR = [A1].CurrentRegion.Value
                            U& = UBound(AR, 2):  If U < 3 Then Exit Sub
    Application.ScreenUpdating = False
                            W& = 1
    For R& = 2 To UBound(AR)
        SP2 = Split(AR(R, 2), ";")
        SP3 = Split(AR(R, 3), ";")
        U3& = UBound(SP3)

        For N& = 0 To UBound(SP2)
                            W = W + 1
            Cells(W, 1).Value = AR(R, 1)
            Cells(W, 2).Value = Trim(SP2(N))
            If U3 < 0 Then T$ = "" Else T = Trim(SP3(IIf(N > U3, U3, N)))
            Cells(W, 3).Value = T
            If U > 3 Then For C& = 4 To U: Cells(W, C).Value = AR(R, C): Next C
        Next N
    Next R

    R = W - 1

    For C = 1 To U
        With Cells(2, C)
            .Resize(R).NumberFormat = .NumberFormat
        End With
    Next

    Application.ScreenUpdating = True
    End
End Sub