Это легко решить с помощью UDF
Вариант 1: передать ячейку, цвет которой вы хотите, в качестве параметра (эта ячейка может быть где угодно, не ограничиваясь следующей ячейкой справа)
Function GetColor(r As Range) As Variant
Application.Volatile
GetColor = r.Interior.ColorIndex
End Function
Вариант 2: получить цвет следующей ячейки справа от ячейки, содержащей формулу
Function GetColorNextCell() As Variant
Application.Volatile
GetColorNextCell = Application.ThisCell.Offset(, 1).Interior.ColorIndex
End Function
При этом использование формата в качестве данных является плохим идея. Обе эти формулы (и ваша версия именованного диапазона) не будут обновляться, если вы просто измените цвет ячейки. Все они требовали от вас принудительного обновления c для обновления (изменение формата не вызывает восстановление c).
Я сделал их Volitile, чтобы они хотя бы обновлялись на все восстанавливает, но даже тогда они не будут обновляться, если вы просто измените цвет.
Вы представляете что-то с этим цветом. Я бы посоветовал вам изменить это, чтобы использовать значение c в ячейке для представления того, что есть. Вы всегда можете использовать условное форматирование, чтобы также покрасить ячейку на основе этого значения.