valor una según segun resaltar que poner palabra otra hacer funcion formato filas dependiendo cumple condicional condicion con como colorear color celda cambie cambiar automaticamente excel vba excel-vba excel-2010 conditional-formatting

una - excel resaltar celda si



¿Cómo resaltar una celda usando el valor de color hexadecimal dentro de la celda? (4)

Tengo una hoja de cálculo con símbolos y colores hexagonales coincidentes. Quiero llenar la celda misma (o la que está junto a ella) con el color hexadecimal dentro de la celda. He leído un poco sobre el "formato condicional", y creo que esa es la manera de hacerlo.

¿Cómo podría lograr el resultado que me gustaría?


Edición menor a la respuesta de Jon Peltier. Su función CASI funciona, pero los colores que representa son incorrectos debido a que Excel se representará como BGR en lugar de RGB. Aquí está la función corregida, que intercambia los pares de valores Hex en el orden ''correcto'':

Sub ColorCellsByHex() Dim rSelection As Range, rCell As Range, tHex As String If TypeName(Selection) = "Range" Then Set rSelection = Selection For Each rCell In rSelection tHex = Mid(rCell.Text, 6, 2) & Mid(rCell.Text, 4, 2) & Mid(rCell.Text, 2, 2) rCell.Interior.Color = WorksheetFunction.Hex2Dec(tHex) Next End If End Sub


Mucho más simple:

ActiveCell.Interior.Color = WorksheetFunction.Hex2Dec(Mid$(ActiveCell.Text, 2))

Media distancia del "#" inicial, Hex2Dec convierte el número hexadecimal en un valor decimal que VBA puede usar.

Por lo tanto, seleccione el rango para procesar y ejecute esto:

Sub ColorCellsByHexInCells() Dim rSelection As Range, rCell As Range If TypeName(Selection) = "Range" Then Set rSelection = Selection For Each rCell In rSelection rCell.Interior.Color = WorksheetFunction.Hex2Dec(Mid$(rCell.Text, 2)) Next End If End Sub


Para esto, se puede hacer una forma de usuario con la función Hex2Dec.

Function Hex2Dec(n1 As String) As Long Dim nl1 As Long Dim nGVal As Long Dim nSteper As Long Dim nCount As Long Dim x As Long Dim nVal As Long Dim Stepit As Long Dim hVal As String nl1 = Len(n1) nGVal = 0 nSteper = 16 nCount = 1 For x = nl1 To 1 Step -1 hVal = UCase(Mid$(n1, x, 1)) Select Case hVal Case "A" nVal = 10 Case "B" nVal = 11 Case "C" nVal = 12 Case "D" nVal = 13 Case "E" nVal = 14 Case "F" nVal = 15 Case Else nVal = Val(hVal) End Select Stepit = (nSteper ^ (nCount - 1)) nGVal = nGVal + nVal * Stepit nCount = nCount + 1 Next x Hex2Dec = nGVal End Function ... UserForm1.TextBox1 = "RGB(" & Hex2Dec(UserForm1.txtHex1.Value) & "," & _ Hex2Dec(UserForm1.txtHex2.Value) & "," & Hex2Dec(UserForm1.txtHex3.Value) & ")"

Por ejemplo, el valor ingresado al cuadro de texto: # FF8800 - Resultado: RGB (255,136,0)


No se puede lograr con el formato condicional para todos los colores.

Asumiendo: Row1 contiene etiquetas de datos, el conjunto de datos no tiene espacios, el color HEX es para el relleno, no la fuente, ha analizado los valores de color HEX (números, no fórmulas) en columnas C: E (R, G, B) y que no necesita hacer esto a menudo, entonces la macro ColourCells podría ser adecuada para:

Sub ColourCells() Dim HowMany As Integer On Error Resume Next Application.DisplayAlerts = False HowMany = Application.InputBox _ (Prompt:="Enter last row number.", Title:="To apply to how many rows?", Type:=1) On Error GoTo 0 Application.DisplayAlerts = True If HowMany = 0 Then Exit Sub Else Dim i As Integer For i = 2 To HowMany Cells(i, 3).Interior.Color = RGB(Cells(i, 3), Cells(i, 4), Cells(i, 5)) Next i End If End Sub

e ingrese el valor que desee para n cuando se le solicite.

Muestra de salida y fórmulas, etc.

La función RGB () de Excel realmente crea un valor BGR (no creo que nadie que sepa por qué dice por qué) Excel muestra nibbles en orden inverso. Para el código Columns3,4,5 era lógico, pero BGR en lugar del RGB convencional en la imagen que pensé que podría parecer extraño. Para F en la imagen, el valor de C3 (la columna de la mano IZQUIERDA del ''RGB'' tres) se deriva de aplicar DERECHA () al color Hex.