统计Excel中多个列的唯一值

我试图通过查找可能的解决scheme后使用枢轴表和SUMPRODUCT&COUNTIF公式,但还没有find任何积极的东西。 以下是input数据:

Level 1 Level 2 Level 3 Level 4 Level 5 Tom Liz Tom Liz Mel Tom Liz Dan Tom Liz Dan Ian Tom Liz Dan Ken Tom Tim Tom Tim Fab Tom Tim Fab Ken Tom Tim Fab Ken Jan Eve 

预期的输出数据如下。 目的是不必提供预先加载的名称列表。 期望的是,程序可以单独根据input数据来确定计数:

 Counts ------- Tom: 9 Eve: 1 Liz: 5 Tim: 4 Mel: 1 Dan: 3 Fab: 3 Ian: 1 Ken: 3 Jan: 1 

任何对此的帮助表示赞赏….谢谢!

更新:带名单列表的预加载列表可用于生成计数。 以上描述已经相应更新。

首先在标准模块中input以下UDF

 Public Function ListUniques(rng As Range) As Variant Dim r As Range, ary(1 To 9999, 1 To 1) As Variant Dim i As Long, C As Collection Set C = New Collection On Error Resume Next For Each r In rng v = r.Value If v <> "" Then C.Add v, CStr(v) End If Next r On Error GoTo 0 For i = 1 To 9999 If i > C.Count Then ary(i, 1) = "" Else ary(i, 1) = C.Item(i) End If Next i ListUniques = ary End Function 

然后点亮一列,例如G1G50,然后input数组公式:

 =listuniques(A2:E11) 

数组公式必须使用Ctrl + Shift + Enterinput,而不仅仅是Enter键。

如果正确完成,你应该看到如下所示:

PIC

最后在H1里input:

 =COUNTIF($A$2:$E$11,G1) 

并抄下来

注意

用户定义的函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开一个新的模块
  3. 粘贴东西,closuresVBE窗口

如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除UDF:

  1. 如上所示调出VBE窗口
  2. 清除代码
  3. closuresVBE窗口

从Excel中使用UDF:

= myfunction的(A1)

要了解有关macros的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关UDF的具体信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

macros必须启用这个工作!