2017-02-22 191 views
0

美好的一天,Excel(条件格式)

我有一个数据集,看起来如下(示例)。我需要突出显示A1和A2之间的最高数字,然后是A3和A4之间的最高值,A5和A6之间的最高值,等等。 B列和C列相同。 我想以绿色突出显示最高,红色显示最低?有任何想法吗。这是一个很大的数据集,手动将花费太长时间。

Example

+0

您是否尝试过使用条件格式?您可能需要一个或两个公式来检查A1是否大于A2且A2小于A1 –

+0

我同意这样做,但是,如何将公式添加到每两个块?因为如果我拖动公式,它会检查A2和A3之间,而我希望它检查A1和A2,然后A3和A4,所以基本上它应该跳过一条线。有没有一个宏可以帮助我呢? – Celeste

回答

0

答案下面链接的问题是怎么样开始回答你的问题的。你需要用VBA做这件事,做这样的事情:

Do While i <= cols 
    Do While j <= rows 
     //set conditional formatting for range ij:i(j+1) 
     j = j + 2 
    Loop 
Loop 

我会看看我是否可以为你创建一个特定的脚本。

Format Top 3 and Bottom 3 Values for each row

编辑: 我测试过这只是有点上的一个小数据集,我创建。它似乎按要求工作。您需要调整的是“cols”和“rows”,以准确表示您的数据集。

编辑2:代码已稍作修改,以解决我发现的一个轻微问题。

Sub Conditions() 
Dim i As Integer, j As Integer, cols As Integer, rows As Integer 
cols = 2 
rows = 10 
i = 1 
j = 1 

Do While i <= cols 
    Do While j <= rows 
     With Range(Cells(j, i), Cells(j + 1, i)).FormatConditions.Add(xlTop10) 
       .SetFirstPriority 
       .TopBottom = xlTop10Top 
       .Rank = 1 
       .Percent = False 
       With .Interior 
        .PatternColorIndex = xlAutomatic 
        .Color = RGB(0, 255, 0) 
        .TintAndShade = 0 
       End With 
      End With 
     j = j + 2 
    Loop 
    i = i + 1 
    j = 1 
Loop 
i = 1 
j = 1 


Do While i <= cols 
    Do While j <= rows 
     With Range(Cells(j, i), Cells(j + 1, i)).FormatConditions.Add(xlTop10) 
       .SetFirstPriority 
       .TopBottom = xlTop10Bottom 
       .Rank = 1 
       .Percent = False 
       With .Interior 
        .PatternColorIndex = xlAutomatic 
        .Color = RGB(255, 0, 0) 
        .TintAndShade = 0 
       End With 
      End With 
     j = j + 2 
    Loop 
    i = i + 1 
    j = 1 
Loop 

End Sub 
+0

谢谢你,那太棒了。 – Celeste

+0

我用一个VBA脚本编辑了我的答案,我通过其他帖子将它们拼凑在一起。希望这对你有用。 –

+0

发现一个创建了许多过量条件格式规则的小错误已经修复。 –