Excel: Funciones para combinar colores con campos decimales

Si tenés una lista de números hexadecimales que representan colores en formato RGB y necesitás que la celda vecina a cada código muestre el color correspondiente. ¿Hay alguna función para eso?
VIE, 26 / FEB / 2016

Este problema tiene varias partes:

-Separar el código en sus tres campos hexadecimales.

-Convertir esos campos a decimal.

-Obtener el color correspondiente a esos campos.

Comencemos por el primer punto. Supongamos que el primer código está en [A2]. Separamos sus campos con tres funciones para manejo de texto:

Primer campo, =IZQUIERDA(A2;2) Segundo campo, =EXTRAE(A2;3;2) Tercer campo, =DERECHA(A2;2)

La primera función separa los dos caracteres a la izquierda del código. La segunda separa dos caracteres, contando a partir del tercero. La última función separa los dos caracteres de la derecha. Ahora tenemos que convertir estos dígitos hexadecimales a base decimal. Podemos hacerlo con la función HEX.A.DEC. Por ejemplo, si extrajimos los dos caracteres de la izquierda en la celda [B2], la fórmula es =HEX.A.DEC(B2). Hacemos lo mismo con los otros dos campos. Finalmente, aplicamos el color con una macro:

Sub colores() For i = 2 To 12

Cells(i, “H”).Interior.Color = _

RGB(Cells(i, “E”), _

Cells(i, “F”), _

Cells(i, “G”)) Next End Sub

Esta macro aplica en la columna [H] el color RGB correspondiente a los decimales obtenidos en las columnas [E], [F] y [G].

Comentarios
¡Comparte esta noticia!

Últimos lanzamientos Ver más

2 Comments

  1. SAYO dice:

    Pero me parece más prolijo de la siguiente forma

    Sub Colores()
    Hoja = ThisComponent.getSheets().getByIndex(0)
    Dim lVar As Long
    Dim celda2 As Object

    for i=1 to 12
    Celda2 = Hoja.getCellByPosition(7,i)
    lvar=rgb(Hoja.getCellByPosition(4,i).value,Hoja.getCellByPosition(5,i).value,Hoja.getCellByPosition(6,i).value)
    celda2.CellBackColor=lvar
    Celda2.String = lvar

    NEXT I

    End Sub

  2. SAYO dice:

    Para los que quieran la misma función pero en formato Open Document
    Solo hay que hacer algunos cambios en la macro, queda un poco más larga.

    Sub Colores()
    Hoja = ThisComponent.getSheets().getByIndex(0)
    for i=1 to 12
    Hoja.getCellByPosition(7,i).CellBackColor=rgb(Hoja.getCellByPosition(4,i).value,Hoja.getCellByPosition(5,i).value,Hoja.getCellByPosition(6,i).value)

    NEXT I

    End Sub

Leave a Reply