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

《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法思路更加清晰简洁。

你可能感兴趣的:(剔除重复值并按数据出现频率降序排序)