Excel 多列表中最常见的值

问题描述 投票:0回答:1

我有大约 4,000 行文本数据,分布在 21 列中。以下公式将返回单列中最常见的值:

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

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

excel excel-formula match mode
1个回答
3
投票

快速而肮脏的自定义函数将比任何公式快得多:

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
© www.soinside.com 2019 - 2024. All rights reserved.