Excel VBA - 条件突出显示 - 突出显示下一个最高值

时间:2017-05-31 12:17:34

标签: excel vba excel-vba

我的代码需要3对值,突出显示最高(或最低值),然后突出显示下一个最高(或最低值),以提供第二轮2对匹配。

虽然突出显示胜利者或前3对的代码可能会更清晰一些(我的平均值高于平均值,但也许有一种方法可以让它选择最高值而不是上面和下面的逻辑平均...),我无法让第二部分工作。我采用了制定前10名的逻辑,这将为我提供第4个值。我没有收到任何错误,当我调试并尝试打印一个值时,我什么也得不到。

'Highlight winners of first round
    Range("C4:C6").Select
    Selection.FormatConditions.AddAboveAverage
    Selection.FormatConditions(1).AboveBelow = xlAboveAverage
    Selection.FormatConditions(1).Interior.Color = 5296274
    Range("C9:C11").Select
    Selection.FormatConditions.AddAboveAverage
    Selection.FormatConditions(1).AboveBelow = xlAboveAverage
    Selection.FormatConditions(1).Interior.Color = 5296274
    Range("C14:C16").Select
    Selection.FormatConditions.AddAboveAverage
    Selection.FormatConditions(1).AboveBelow = xlAboveAverage
    Selection.FormatConditions(1).Interior.Color = 5296274

'Highlight highest losing analyst
    Range("C4:C16").Select
    If Selection.FormatConditions(1).Interior.Color <> 5296274 Then
        Selection.FormatConditions.AddTop10
        With Selection.FormatConditions
            .TopBottom = xlTop10Top
            .Rank = 10
        End With
        With Selection.FormatConditions.Interior
            .Color = 10092492
        End With
    End If

enter image description here

关于我的问题的任何想法?

编辑:添加了一个屏幕截图,显示脚本运行后文件的样子。然而,每场比赛的胜利者都会出现,因为下一轮比赛也是头对头的,我需要第四轮比赛。也要突出显示人,在这种情况下,人B

1 个答案:

答案 0 :(得分:1)

我不确定你是否能够只使用条件格式来严格执行。在这种情况下,我会避开它们,只使用常规的vba。将此子集中的“rng”设置为每组的第一个单元格。根据我们的讨论,最低值是每对的赢家。然后检查每个输家的值,看它是否低于迄今为止看到的最低值;如果是,则使用此值更新'minval'变量,并且还更新指向该单元格的指针'mincell'。

Sub OrgHighestAndNext1()

    Dim rng As Range: Set rng = [C4,C9,C14]

    Range("C" & rng.Row & ":C" & rng.Areas(3).Rows.Row + 2).Interior.ColorIndex = xlColorIndexNone

    Dim cell As Range, scell As Range, mincell As Range
    Dim minval As Double: minval = 9999.9

    For Each cell In rng
      If cell.Value2 < cell.Offset(2, 0).Value2 Then
         cell.Interior.Color = 5296274
         Set scell = cell.Offset(2, 0).Cells
      Else
         cell.Offset(2, 0).Interior.Color = 5296274
         Set scell = cell.Cells
      End If

      If scell.Value2 < minval Then
        Set mincell = scell
        minval = scell.Value2
      End If
    Next

    mincell.Interior.Color = 10092492
End Sub

获奖者(最低)值的背景为深绿色。失败者背景保持不变(如果工作表是开始的话,则为白色)。失败者中的最低者(所有对子被处理后的'mincell'指向)给出浅绿色。

根据时间从最低到最低排名 最高的种子排名如下:2,3,5,6,4,1所以种子6是 第四名纯粹按时排名。但如果你排名第一 获胜者时间然后是输家时代种子排名如下: 2,3,6(这些是赢家)和5,4,1(输家)。你所追求的是什么 第二种排名 - 你真的不在乎 获胜者但确实希望失败者按照最低时间排名 你可以找到最好(最低)时间的失败者。