Перебор 4-х списков за раз:
u2.Unit2=First Unit2
u3.Unit3=First Unit3
u4.Unit4=First Unit4
For u1.Unit1=Each Unit1
;some logics here]
;...
temporary.Unit2=Last Unit2
If u2<>temporary Then
u2=After Unit2
Else
; [1]
EndIf
temporary.Unit3=Last Unit3
If u3<>temporary Then
u3=After Unit3
Else
; [1]
EndIf
temporary.Unit4=Last Unit4
If u4<>temporary Then
u4=After Unit4
Else
; [1]
EndIf
Next
[1] - сюда нужно поставить ограничитель на количество проходов за цикл. Если его не будет, возмоюжна ситуация, когда в одном списке 3 юнита, в другом - 30, и последний из первого списка юнит будет обсчитываться 28 раз.