我在一列中有一组数据(数字)。我想要实现的是突出显示(直接在本栏中)前 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”。如果给定列中存在重复项,是否有办法解决此问题?
提前感谢您的帮助。 此致, 卡米尔
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