Для показанного вами конкретного случая я изменил вашу формулу для извлечения цветов с помощью формул вместо использования кода VBA.
=INDEX(RIGHT(LEFT(SUBSTITUTE(A2:A65000,"-","|",2),FIND("|",SUBSTITUTE(A2:A65000,"-","|",2))-1),LEN(LEFT(SUBSTITUTE(A2:A65000,"-","|",2),FIND("|",SUBSTITUTE(A2:A65000,"-","|",2))-1))-FIND("-",LEFT(SUBSTITUTE(A2:A65000,"-","|",2),FIND("|",SUBSTITUTE(A2:A65000,"-","|",2))-1))),MATCH(0,COUNTIF($B$1:B1,RIGHT(LEFT(SUBSTITUTE(A2:A65000,"-","|",2),FIND("|",SUBSTITUTE(A2:A65000,"-","|",2))-1),LEN(LEFT(SUBSTITUTE(A2:A65000,"-","|",2),FIND("|",SUBSTITUTE(A2:A65000,"-","|",2))-1))-FIND("-",LEFT(SUBSTITUTE(A2:A65000,"-","|",2),FIND("|",SUBSTITUTE(A2:A65000,"-","|",2))-1)))),0))
Как и у вас, это формула массива; поэтому нажмите Ctrl-Enter.
Затем вы можете скопировать и вставить эту формулу из B2 вниз, и когда вы получите #VALUES, больше нет уникальных. Кроме того, если вы измените значения в столбце A, вам может потребоваться скопировать формулу в большее количество ячеек, если уникальные значения увеличатся.