表多列Excel中最常见的值

时间:2018-12-12 01:10:56

标签: excel match formula mode

我有大约4,000行文本数据,跨21列。下面的公式将在单个列中返回最常用的值:

{= INDEX(E6:E3876,MODE(IF(E6:E3876 <>“”,MATCH(E6:E3876,E6:E3876,0)))))}

但是,我需要检查E6:Y4000范围内的所有单元格。在Excel中,有没有一种方法可以返回跨多列的表中最常见的非空白文本值?

1 个答案:

答案 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