【发布时间】:2015-07-01 22:14:57
【问题描述】:
在之前的帖子中,用户:LocEngineer 设法帮助我编写了一个查找函数,该函数将在特定类别的列中查找最不频繁的值。
VBA 代码在大多数情况下都能很好地解决一些特定问题,并且之前的问题已经得到了足够好的答案,所以我认为这需要一个新帖子。
LocEngineer:“天哪,蝙蝠侠!如果那真的是你的床单……我会说:忘记“UsedRange”。这不会很好地传播……我已经编辑了上面的代码使用了更多硬编码的值。请根据您的需要调整值并尝试。哇,真是一团糟。”
代码如下:
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("A6:FS126")
totalRows = 120
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
代码的格式如下:(注意标题每列标题的合并单元格。标题向下到第 5 行,数据从第 5 行开始)(另请注意,这些行充满了空列,有时比数据更重要。)
最后,我想不出的一个重要变化是如何让它忽略空白单元格。 请指教。谢谢。
【问题讨论】:
-
set ran = range("A6:FS126")- 使用 set -
'set ran = range("A6:FS126")' 似乎确实可以解决问题,但由于某种原因,代码似乎并未突出显示最低频率
-
它仍然会突出显示空白,有没有办法让它忽略空白单元格?