基于单元格中的值的颜色单元格

使用macros,我已经将来自多个工作簿的信息整合到新工作簿中的一个工作表中。

在一列中,我创build了一个名为ColRange的命名区域。 该栏的数字范围从-350到500。

如何根据单元格中文本的值更改单元格的颜色。
红(0-500)黄(-5-0)绿(-350-5)

看看条件格式 。 你甚至可能不需要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 

假定值是存储在列中的数字,则:

 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是不可能的或您的脚本validation。 此外,你的范围重叠了一下,应该是什么颜色? 红色还是黄色?

这是对原来的问题的回应,这是文森特回应的简单修改:

如果它是一个命名的范围(使用UI:插入,名称,定义):

 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范围内进行操作,而不是一次一个操作每个单元格。 (出于这个原因,你可能也想用Application.ScreenUpdating = False来包装它