excel una Celda de color basada en el valor en la celda




¿como hacer para que en excel un numero salga rojo o azul segun su valor determinado? (3)

Eche un vistazo al formateo condicional . Es posible que ni siquiera necesites VBA para hacer esto.

Dicho esto, el código de VBA sería algo como esto:

Public Sub colorit()
    Dim colRange As Range
    Dim rowNum As Integer
    Dim rnum As Integer

    rnum = 20
    Set colRange = Range(Cells(2, 9), Cells(rnum, 9))

    For rowNum = 1 To colRange.Rows.Count
        If colRange.Cells(rowNum, 1).Value <= -5 Then
            colRange.Cells(rowNum, 1).Interior.Color = RGB(0, 255, 0)
        ElseIf colRange.Cells(rowNum, 1).Value <= 0 Then
            colRange.Cells(rowNum, 1).Interior.Color = RGB(255, 255, 0)
        ElseIf colRange.Cells(rowNum, 1).Value <= 500 Then
            colRange.Cells(rowNum, 1).Interior.Color = RGB(255, 0, 0)
        End If
    Next rowNum
End Sub

Usando una macro, he consolidado la información de varios libros de trabajo en una hoja en el nuevo libro de trabajo.

En una columna, he creado un rango llamado ColRange. Esa columna tiene números que van desde -350 a 500.

¿Cómo cambio el color de las celdas según el valor del texto en la celda?
rojo (0-500) amarillo (-5-0) verde (-350--5)


Esto es en respuesta a la pregunta original, es una simple modificación de la respuesta de Vincent:

Si se trata de un rango con nombre (usando la interfaz de usuario: Insertar, Nombre, Definir):

Dim c As Range

For Each c In Range("ColRange").Cells
    If c.Value >= 0 And c.Value <= 500 Then
        c.Interior.Color = RGB(255, 0, 0)
    ElseIf c.Value >= -5 Then
        c.Interior.Color = RGB(255, 255, 200)
    Else
        c.Interior.Color = RGB(0, 255, 0)
    End If

Next c

Si es un objeto de rango, definido en el código:

Dim c as Range

For Each c In colRange.Cells

    If c.Value >= 0 And c.Value <= 500 Then
        c.Interior.Color = RGB(255, 0, 0)
    ElseIf c.Value >= -5 Then
        c.Interior.Color = RGB(255, 255, 200)
    Else
        c.Interior.Color = RGB(0, 255, 0)
    End If

Next c

Creo que la respuesta de Vincent no funcionará porque intenta operar en todo el rango de ColRange, dentro del If Then, en lugar de operar en cada celda de a una por vez. (Por esta razón, es posible que también desee envolverlo con Application.ScreenUpdating = False


Suponga que ese valor es el número almacenado en la columna y luego:

If value >= 0 AND value <= 500 Then
    ColRange.Interior.Color = RGB(255,0,0)
ElseIf  value >= -5 Then
    ColRange.Interior.Color = RGB(255,255,200)
Else
    ColRange.Interior.Color = RGB(0,255,0)
End If

Y suponiendo que valores de más de 500 o menos de -350 o no son posibles o validados por su secuencia de comandos. Además, sus rangos se superponen un poco, ¿de qué color debería ser 0? Rojo o amarillo?





excel-vba