it seems to me that you better create a new field during the load. A variable can have a lot different values during loadtime but only one "endvalue" when the load is done. So my suggestions is using a preceding load to create an additional field "MyColor" similar to:
Market, Region, Batman . . . and the rest,
if( Len(Trim(Batman)) = 0 and Region = 'Gotham', 'Red', // isnull(Batman) and . .. should work also
if( Len(Trim(Batman)) = 0 and Region = 'London', 'Yellow',
if( Len(Trim(Batman)) = 0 and Region = 'Paris', 'green',
))) AS MyColor
SQL Select Market . .. and the rest
Now MyColor can be used everywhere (Listboxes etc.) in the whole app.