Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-条件高亮显示-高亮显示下一个最高值_Vba_Excel - Fatal编程技术网

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

Excel VBA-条件高亮显示-高亮显示下一个最高值,vba,excel,Vba,Excel,我有一个代码,它取3对值,突出显示最高值(或最低值),然后突出显示下一个最高值(或最低值),以提供第二轮2对匹配 虽然突出显示赢家或前3对的代码可能会更干净一些(我选择了高于平均值,但也许有一种方法可以让它选择最高值,而不是高于平均值和低于平均值的逻辑…),但我无法让第二部分工作。我按照逻辑制定了前十名,这将为我提供第四个值。我没有得到任何错误,当我调试并试图打印一个值时,我什么也没有得到 'Highlight winners of first round Range("C4:C6").

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

虽然突出显示赢家或前3对的代码可能会更干净一些(我选择了高于平均值,但也许有一种方法可以让它选择最高值,而不是高于平均值和低于平均值的逻辑…),但我无法让第二部分工作。我按照逻辑制定了前十名,这将为我提供第四个值。我没有得到任何错误,当我调试并试图打印一个值时,我什么也没有得到

'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
“突出第一轮的获胜者
范围(“C4:C6”)。选择
Selection.FormatConditions.addOveraverage
选择。格式条件(1)。高于低于=xl高于平均值
Selection.FormatConditions(1).Interior.Color=5296274
范围(“C9:C11”)。选择
Selection.FormatConditions.addOveraverage
选择。格式条件(1)。高于低于=xl高于平均值
Selection.FormatConditions(1).Interior.Color=5296274
范围(“C14:C16”)。选择
Selection.FormatConditions.addOveraverage
选择。格式条件(1)。高于低于=xl高于平均值
Selection.FormatConditions(1).Interior.Color=5296274
突出损失最高的分析师
范围(“C4:C16”)。选择
如果选择.FormatConditions(1).Interior.Color 5296274,则
Selection.FormatConditions.AddTop10
使用Selection.FormatConditions
.TopBottom=xlTop10Top
.Rank=10
以
使用Selection.FormatConditions.Interior
.Color=10092492
以
如果结束

对我的问题有什么想法吗


编辑:添加了一个屏幕截图,显示脚本运行后文件的外观。然而,每场比赛的获胜者都会出现,因为下一轮比赛也将是正面对决,我需要突出显示“第四”位的人,在这种情况下,B人,我不确定你是否能够严格使用条件格式来完成你正在尝试的任务。在这个例子中,我会避开它们,只使用常规的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
子组织HighestandNext1()
尺寸rng作为范围:设置rng=[C4、C9、C14]
范围(“C”&rng.Row&“:C”&rng.AREA(3)。Rows.Row+2)。Interior.ColorIndex=xlColorIndexNone
Dim cell作为范围,scell作为范围,mincell作为范围
双精度最小值:最小值=9999.9
对于rng中的每个单元
如果cell.Value2
获奖者(最低)值以深绿色为背景。输家背景保持不变(如果工作表是这样开始的,则为白色)。输家中最低的一个(处理完所有对后的“mincell”所指的)被赋予浅绿色

就排名而言,只根据从最低到最低的时间 最高的种子是这样排列的:2,3,5,6,4,1所以种子6是最高的 仅在时间上排名第四。但是如果你根据 赢家次数,然后输家次数种子的排名如下: 2,3,6(这些是赢家)和5,4,1(输家)。你要的是 这是第二种类型的排名——你真的不在乎 胜利者希望失败者按照最低时间排名,所以
你可以用最好(最短)的时间找到失败者。

是的,我很抱歉,我应该进一步澄清。有两个值由空白单元格分隔,因此范围为3个单元格。因此,为了正确理解您的观点,我的目标是突出显示每场比赛的“赢家”,然后用单独的颜色突出显示“最佳输家”(即第四种子),我如何切换它,以便代码也可以在“赢家”值最小的情况下工作?如果将第一个“大于”更改为“小于”,则会得到3个最低值,但如果将第二个“大于”更改为“小于”,则会在maxcell.interior.color行上出现“对象变量未设置”错误。如果我将maxcell更改为mincell(并声明它),它将不起作用。我错过了什么?不完全确定你在找什么。如果您切换第一个大于号,您将突出显示每轮的所有输家。有了这个变化,并且要以最短的时间获得赢家,您首先必须将maxval设置为999.9,然后将第二个大于改为小于号。在本例中,较低的数字实际上是赢家,而不是较高的数字。因此,1、2和3将战胜4、5和6,4将是“最好的输家”。切换第一个标志给了我较低的赢家,但第四个赢家我无法获得。好的,较低的是赢家——这是有道理的。因此,你在图片中显示的是,每轮比赛的获胜者有一个白色背景(失败者有一个深绿色背景)。您希望根据从最低到最高的排序,以浅绿色背景突出显示排名第四的人吗?如果你能确认的话,我可以修改代码让你知道。所以,根据您最初的问题陈述,您希望0:05:15以浅绿色突出显示?