我有大约 4,000 行文本数据,分布在 21 列中。以下公式将返回单列中最常见的值:
{=INDEX(E6:E3876,MODE(IF(E6:E3876<>"",MATCH(E6:E3876,E6:E3876,0))))}
但是,我需要检查 E6:Y4000 范围内的所有单元格。 Excel 中有没有一种方法可以返回跨多列的表格中最常见的非空白文本值?
快速而肮脏的自定义函数将比任何公式快得多:
Function Freq(rng As Range) As String
Dim cll As Range
Dim lngCount As Long
Dim lngMax As Long
Dim str As String
Set dic = CreateObject("scripting.dictionary")
On Error Resume Next
For Each cll In rng
If cll.Value <> "" Then
dic(cll.Value) = dic(cll.Value) + 1
lngCount = dic(cll.Value)
If lngCount > lngMax Then
lngMax = lngCount
str = cll.Value
End If
End If
Next
On Error GoTo 0
Freq = str
End Function