2008-11-26 4 views
1

Используя макрос, я собрал информацию из нескольких книг в один лист в новой книге.Цветная ячейка, основанная на значении в ячейке

В одном столбце я создал именованный диапазон под названием ColRange. Эта колонка имеет номера от -350 до 500.

Как изменить цвет ячеек на основе значения текста в ячейке.
красный (0-500) желтый (-5-0) зеленый (-350--5)

+0

Пожалуйста, напишите ваш текущий код – 2008-11-26 14:20:57

ответ

0

Предположим, что значение является число хранится в столбце, то:

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 

и предполагая, что значения, превышающие 500 или менее -350, либо невозможно, либо подтверждены вашим сценарием. Кроме того, ваши диапазоны перекрываются немного, какой цвет должен быть 0? Красный или Желтый?

3

Посмотрите на conditional formatting. Возможно, вам даже не понадобится VBA.

Это, как говорится, код VBA будет выглядеть примерно так:

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
+0

ребят старались как и нет радости :( я определяю Rane следующего Set colRange = Range (Cells (2, 9), Cells (rnum, 9)). Выберите , это выделяет ячейки, поэтому, очевидно, что-то делает любая помощь – 2008-11-26 15:45:59

0

Это в ответ на первоначальный вопрос, это просто модификация ответ Винсента:

Если это именованный диапазон (с помощью пользовательского интерфейса: Вставка, Имя, определение):

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 

Если это объект диапазон, определенный в коде:

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 

Я думаю, что ответ Винсента не будет работать, потому что он пытается работать со всем диапазоном ColRange внутри If Then, а не работать по каждой ячейке по одному. (По этой причине, вы также можете обернуть его Application.ScreenUpdating = Ложные

Смежные вопросы