我的代码具有可变范围,每列中有许多类别用于显示数据。我需要将最不常见的值突出显示为细胞总数的百分比。
如果列中有300个单元格,则需要找到最不频繁发生的值(在许多可能重复的值中)。如果代码可以预测总数,那么这是一个奖励,因此只给出整个列的5%或10%。
目前我的尝试是在顶部单元格中使用一个函数,该函数将找到最不常见的事件,并且代码将简单地突出显示重复的单元格中的任何值(并突出显示每个最不常见的值)。
我遇到的困难是双重的。
如果过于含糊,可以随意询问我的目标,我会及时回复。
这就是数据的样子。正如您所看到的,每个列都有合并的标题,其中包含各种空格以及与某些特定列匹配的精确放置的数据。
这是建议的代码,但仍然没有突出我想要的内容。它有两个问题。 1:如果行中没有不同的值,它将突出显示一个范围内的所有数据。 2:它将突出显示列的标题。
这是突出显示的数据,但仍然不够完整。
在某些情况下,列实际上与代码的目的不匹配,例如在一列中,数字12在列中突出显示(67次出现),其中出现的其他数字较少。 (8次出现29次,未突出显示)
答案 0 :(得分:1)
我只是把一个看似有效的例子一起砍掉了。试试这里:
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
它似乎正在做你正在寻找的东西。
修改:修复了地址获取。