excel - una - Celda de color basada en el valor en la celda
funcion si color celda (3)
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?
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
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