It still wasnt right, 6 days was showing as 1 week 2 days.

I think ive got it now and have amended the function to only return the item you want (either 1-Months, 2-Weeks,3-days)

so use it as =CalcMonths(E13,1) in the Months column, (E13,2) in the weeks and (E13,3) in days.

Function CalcMonths(inDays, outitem)
Dim outvals(4)
outvals(1) = 0
outvals(2) = 0
outvals(3) = 0
Do Until inDays = 0
    outvals(3) = outvals(3) + 1
    Select Case outvals(3)
        Case Is = 3
            outvals(2) = outvals(2) + 1
            outvals(3) = -2
        Case Is > 5
            outvals(3) = 0
        End Select
        Select Case outvals(2)
        Case Is = 3
            outvals(1) = outvals(1) + 1
            outvals(2) = 0
            outvals(3) = -11
    End Select
    inDays = inDays - 1
Loop
If (outvals(3) < 0) Then
outvals(3) = 0
End If

CalcMonths = outvals(outitem)
End Function