查找并突出显示variables范围内的最less发生次数

我有一个代码,每个列中显示数据的variables范围与许多类别。 我需要突出显示最不常见的值作为单元格总数的百分比。

如果列中有300个单元格,则需要查找出现频率最低的值(可能有许多重复值)。 如果代码可以预测总数,那么这是一个奖励,因此只给出整个列的5%或10%。

目前我的尝试是在最上面的单元格中使用一个函数,这个函数将会find最不常见的情况,代码将简单地突出显示单元格重复的任何值,并突出显示每个最不常见的单元格。

我遇到的困难是双重的。

  1. 可能有多于一个的最小公共值仍然低于总值的10%
  2. 能够自动执行此search,以便可以对每个列中具有不同类别和不同值的超过100列的所有列执行和突出显示

如果太模糊,可以随时提出问题,我会尽快回复。

这是数据的样子。 正如你所看到的,每一列都有合并的标题,各种空白的空间以及与某些特定列相匹配的精确放置的数据。 在这里输入图像说明

这是build议的代码,仍然没有突出我想要的。 它有两个问题。 1:如果行中没有不同的值,将突出显示一个范围内的所有数据。 2:它将突出显示列的标题。 在这里输入图像说明

这是突出的数据,仍然不够完整。 在这里输入图像说明

在某些情况下,列真正不符合代码的目的,例如在一列中,数字12突出显示在列(67个发生)的下方,其他数字的发生较less。 (8次出现29次,未突出显示)

我只是一个看似有效的例子。 试试这里:

Sub frequenz() Dim col As Range, cel As Range Dim letter As String Dim lookFor As String Dim frequency As Long, totalRows As Long Dim relFrequency As Double Dim ran As Range ran = ActiveSheet.Range("A1:ZZ65535") totalRows = 65535 For Each col In ran.Columns '***get column letter*** letter = Split(ActiveSheet.Cells(1, col.Column).Address, "$")(1) '******* For Each cel In col.Cells lookFor = cel.Text frequency = Application.WorksheetFunction.CountIf(Range(letter & "2:" & letter & totalRows), lookFor) relFrequency = frequency / totalRows If relFrequency <= 0.001 Then cel.Interior.Color = ColorConstants.vbYellow End If Next cel Next col End Sub 

它似乎只是在做你正在寻找的东西。

编辑:修复地址越来越。