美文网首页
剔除重复值并按数据出现频率降序排序

剔除重复值并按数据出现频率降序排序

作者: 麦睿蔻 | 来源:发表于2019-11-08 10:22 被阅读0次

    《Excel 2010 函数与公式》疑难142:

    如图所示为某图书馆的图书借阅记录表,要求剔除重复值提取书籍名称并按照书籍的借阅频率降序排序,填入右表。

    Snap1.jpg
    1、函数法:
    在E3单元格输入下列数组公式,按【Ctrl+Shift+Enter】结束。
    {=INDEX(A:A,MOD(LARGE(IF(MATCH($A$3:$A$19,$A$3:$A$19,0)=ROW($3:$19)-2,COUNTIF($A$3:$A$19,$A$3:$A$19)*100+ROW($3:$19),99),ROW(1:1)),100))&""}
    

    选择F3:F19单元格区域,输入下列公式,按【Ctrl+Enter】结束。

    =IF(E3="","",COUNTIF($A$3:$A$19,E3))
    

    2、VBA法

    Sub 提取出现次数最多的用户名()
        Dim d As Object
        Set d = CreateObject("scripting.dictionary")
        Dim i As Integer
        Dim arr, arr1
        For i = 3 To Range("b65536").End(xlUp).Row
            If d.exists(Cells(i, 1).Value) Then
                d(Cells(i, 1).Value) = d(Cells(i, 1).Value) + 1
            Else
                d(Cells(i, 1).Value) = 1
            End If
        Next
        arr = d.keys
        arr1 = d.items
        Range("E3").Resize(d.Count, 1) = Application.Transpose(arr)
        Range("F3").Resize(d.Count, 1) = Application.Transpose(arr1)
        Range("E3").Resize(d.Count, 2).Sort key1:=Range("F3"), order1:=xlDescending, Header:=xlNo
    End Sub
    

    很明显可以看出,VBA法思路更加清晰简洁。

    相关文章

      网友评论

          本文标题:剔除重复值并按数据出现频率降序排序

          本文链接:https://www.haomeiwen.com/subject/ldribctx.html