The following function would do this for you.
Function compare(setA As String, setB As String)
Const delim As String = ";"
For Each strPartA In Split(setA, delim)
found = False
For Each strPartB In Split(setB, delim)
If Trim(strPartA) = Trim(strPartB) Then found = True
If found = False Then compare = compare & strPartA & delim
If Len(compare) > 0 Then compare = Left(compare, Len(compare) - 1)
You can use this as a UDF - i.e. enter it as a formula, e.g. if A1 contains "red;blue;green" and B1 contains "yellow;purple;red" then you can enter this formula in C1:
=compare(A1,B1) to return "blue;green"
And this in D1
=compare(B1,A1) to return "yellow;purple"
Or alternatively, you could write this into a routine:
Dim c As Range
For Each c In Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Cells
c.Offset(, 2) = compare(c.Value, c.Offset(, 1).Value)
c.Offset(, 3) = compare(c.Offset(, 1).Value, c.Value)