条件格式 - 突出显示“前 3 个” - 重复问题

问题描述 投票:0回答:2

我在一列中有一组数据(数字)。我想要实现的是突出显示(直接在本栏中)前 3 个值。如果没有重复项,它工作正常,但如果有重复项,我会得到错误的结果(重复项被视为唯一值)。

我写了一个简单的函数(请参见下面),但是它不起作用。

Function isTop(cellTop As Range, rngTop As Range, noTop As Integer) As Boolean

'cellTop - cell to be checked
'rngTop - range to be considered
'noTop - nth top value

Dim iStartTop As Integer, noOccurTop As Integer, noTopUpdate As Integer

    For iStartTop = 1 To noTop

        If cellTop.Value = Application.WorksheetFunction.Large(rngTop, iStartTop) Then
            isTop = True
            Exit Function
        End If

    Next iStartTop

End Function

假设 A 列中有以下一组数据(12 个元素):

1
2
3
4
1
2
3
4
1
2
3
4

并且我想突出显示前 3 个元素(通过使用条件格式和标准前 3 个条件或函数 =isTop(A1,A:A,3))。应用任何提供的方法后,只有包含“4”的单元格才会突出显示。

但是,我希望突出显示“4”、“3”和“2”。如果给定列中存在重复项,是否有办法解决此问题?

提前感谢您的帮助。 此致, 卡米尔

excel vba excel-formula conditional-formatting
2个回答
1
投票

所以这是一种做你想做的事情的方法:

创建三个新的条件格式规则:

  1. 适用于范围

    $A:$A

    =$A1=MAX($A$1:$A$12)
    
  2. 适用于范围

    $A:$A

    =$A1=LARGE(($A$1:$A$12<MAX($A$1:$A$12))*($A$1:$A$12),1)
    
  3. 适用于范围

    $A:$A

    =$A1=LARGE(($A$1:$A$12<LARGE(($A$1:$A$12<MAX($A$1:$A$12))*($A$1:$A$12),1))*($A$1:$A$12),1)
    

enter image description here

您也可以选择 VBA 路线,但这取决于您。


0
投票

VBA 代码中的此 mod 实现了比实际排名更高的排名值的重复项计数。第 k 大的数也将是重复项的数量。

Function isTop(tcell As Range, lookrng As Range, cnttop As Integer) As Boolean

For i = 1 To cnttop
  If i <> 1 Then
     dup = WorksheetFunction.CountIf(lookrng, WorksheetFunction.Large(lookrng, i - 1)) + dup - 1
  Else
     dup = 0
  End If
  If tcell = WorksheetFunction.Large(lookrng, dup + i) Then
     ggg = True
     Exit Function
  End If
Next i
End Function

© www.soinside.com 2019 - 2024. All rights reserved.