Try this version.


Function UniqueDates(Entry As String)
UniqueDates = 0

If Entry = "" Or InStr(Entry, ", ") = 0 Then UniqueDates = 0: GoTo Quit

MyArray = Split(Entry, ", ")


'Sort Array by First Date
SortLoop:
Flag = False
For Count = 0 To UBound(MyArray) - 1
Dates1 = Split(MyArray(Count), ":")
Dates2 = Split(MyArray(Count + 1), ":")

If Dates1(0) - Dates2(0) > 0 Then
Flag = True
t = MyArray(Count)
MyArray(Count) = MyArray(Count + 1)
MyArray(Count + 1) = t
End If

Next

If Flag = True Then GoTo SortLoop

For Count = 0 To UBound(MyArray) - 1

'Get First 2 Dates
Dates1 = Split(MyArray(Count), ":")
Dates2 = Split(MyArray(Count + 1), ":")

t = Dates1(1) - Dates2(0)

If t >= 0 Then
'There is an Overlap
MyArray(Count + 1) = Dates1(0) & ":" & Dates2(1)
Else
'No Overlap
UniqueDates = UniqueDates + Dates1(1) - Dates1(0)
End If

Next
Dates2 = Split(MyArray(Count), ":")
UniqueDates = UniqueDates + Dates2(1) - Dates2(0)

Quit:

End Function