我有大约4,000行文本数据,跨21列。下面的公式将在单个列中返回最常用的值:
{= INDEX(E6:E3876,MODE(IF(E6:E3876 <>“”,MATCH(E6:E3876,E6:E3876,0)))))}
但是,我需要检查E6:Y4000范围内的所有单元格。在Excel中,有没有一种方法可以返回跨多列的表中最常见的非空白文本值?
答案 0 :(得分:1)
快速而肮脏的custom function将比任何公式都快得多:
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