valor una segĂșn segun resaltar que palabra otra hacer funcion formato filas dependiendo condicional con como colorear color celdas celda cambie cambiar automaticamente excel vba spreadsheet

una - Excel: establece el color de fondo del valor de celda a rgb de datos en la celda



funcion si color celda (4)

Tengo una columna que contiene valores rgb, por ejemplo

127,187,199 67,22,94

En Excel, ¿hay alguna forma de que pueda usar esto para establecer el color de fondo de la celda?


Establecer la propiedad Color por sí solo garantizará una coincidencia exacta. Excel 2003 solo puede manejar 56 colores a la vez. La buena noticia es que puede asignar cualquier valor de rgb a esas 56 ranuras (que se denominan ColorIndex). Cuando establece el color de una celda usando la propiedad Color, esto hace que Excel use el "ColorIndex" más cercano. Ejemplo: Establecer una celda en RGB 10,20,50 (o 3281930) hará que se establezca en el índice de color 56, que es 51,51,51 (o 3355443).

Si quiere estar seguro de que obtuvo una coincidencia exacta, necesita cambiar un ColorIndex al valor RGB que desea y luego cambiar el ColorIndex de la Celda a dicho valor. Sin embargo, debe tener en cuenta que al cambiar el valor de un índice de color, cambia el color de todas las celdas que ya usan ese color dentro del libro de trabajo. Para dar un ejemplo, Red es ColorIndex 3. Entonces, cualquier celda que haya hecho Rojo realmente haya hecho ColorIndex 3. Y si redefine ColorIndex 3 para que sea, por ejemplo, morado, su celda se volverá púrpura, pero todos los otros glóbulos rojos en el el libro de trabajo también se cambiará a morado.

Hay varias estrategias para lidiar con esto. Una forma es elegir un índice que aún no se utiliza, o solo uno que piense que no será utilizado. Otra forma es cambiar el valor RGB del ColorIndex más cercano para que su cambio sea sutil. El código que publiqué a continuación adopta este enfoque. Aprovechando el conocimiento de que se asigna el ColorIndex más cercano, asigna el valor RGB directamente a la celda (obteniendo así el color más cercano) y luego asigna el valor RGB a ese índice.

Sub Example() Dim lngColor As Long lngColor = RGB(10, 20, 50) With Range("A1").Interior .Color = lngColor ActiveWorkbook.Colors(.ColorIndex) = lngColor End With End Sub


Las celdas no se pueden cambiar desde una función de VBA utilizada como una fórmula de hoja de cálculo. Excepto a través de esta solución ...

Ponga esta función en un nuevo módulo:

Function SetRGB(x As Range, R As Byte, G As Byte, B As Byte) On Error Resume Next x.Interior.Color = RGB(R, G, B) x.Font.Color = IIf(0.299 * R + 0.587 * G + 0.114 * B < 128, vbWhite, vbBlack) End Function

Luego use esta fórmula en su hoja, por ejemplo en la celda D2 :

=HYPERLINK(SetRGB(D2;A2;B2;C2);"HOVER!")

Una vez que coloca el mouse sobre la celda (¡pruébelo!), El color de fondo se actualiza al RGB tomado de las celdas A2 a C2 . El color de la fuente es un blanco o negro que contrasta.


Para colorear cada celda en función de su valor entero actual, lo siguiente debería funcionar, si tiene una versión reciente de Excel. (Las versiones anteriores no manejan rgb también)

Sub Colourise() '' '' Colourise Macro '' '' Colours all selected cells, based on their current integer rgb value '' For e.g. (it''s a bit backward from what you might expect) '' 255 = #ff0000 = red '' 256*255 = #00ff00 = green '' 256*256*255 #0000ff = blue '' 255 + 256*256*255 #ff00ff = magenta '' and so on... '' '' Keyboard Shortcut: Ctrl+Shift+C (or whatever you want to set it to) '' For Each cell In Selection If WorksheetFunction.IsNumber(cell) Then cell.Interior.Color = cell.Value End If Next cell End Sub

Si en lugar de un número tiene una cadena, entonces puede dividir la cadena en tres números y combinarlos usando rgb ().


Puede usar VBA, algo así como

Range("A1:A6").Interior.Color = RGB(127,187,199)

Solo pase el valor de la celda.