《Excel 2010 函数与公式》疑难142:
如图所示为某图书馆的图书借阅记录表,要求剔除重复值提取书籍名称并按照书籍的借阅频率降序排序,填入右表。
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法思路更加清晰简洁。