En este caso, podemos tomar el siguiente ejemplo: si es azul, que ponga un 1; si es amarillo, que ponga un 2, y así sucesivamente, un número para cada color.
Lo que se pide aquí es lo opuesto a un formato condicional. En vez de aplicar un formato según el valor de la celda, se pide obtener un valor según el formato. Si bien no existe ninguna opción para esto, se puede obtener ese resultado mediante una función especialmente creada para ese fin. Algo así:
Function valorcolor(x)
c = x.Interior.ColorIndex
Select Case c
Case 5
valorcolor = 1
Case 6
valorcolor = 2
Case 3
valorcolor = 3
Case 50
valorcolor = 4
End Select
End Function
Esta función “toma nota” del color del relleno de la celda, obtenido mediante la propiedad Interior.ColorIndex. Esta propiedad es un número que depende de ese color: es 5 para el azul, 6 para el amarillo, 3 para el rojo, y así sucesivamente. Una vez que la función sabe cuál es el color aplicado en la celda, devuelve un número del 1 al 4, tal como pide la pregunta. Si la lista de celdas de color la tenemos en la columna [A], a partir de [A2], escribimos la función en [B2]: =valorcolor(A2). Luego extendemos esta función a
toda la lista.
Un problema que tiene esta función es que no se recalcula ante cada modificación de la hoja, como debe ocurrir en una fórmula de Excel. Una manera de resolver este problema es incluir en la fórmula una expresión que sí se recalcule, aunque sin modificar el valor de la función propiamente dicha. Por ejemplo, =valorcolor(A2)+0*ALEATORIO(). Al estar multiplicada por cero, la función ALEATORIO no afecta el resultado de la función, pero sí fuerza su recálculo.