【问题标题】:Counting Unique Values for Multiple Columns in Excel在 Excel 中计算多列的唯一值
【发布时间】:2014-10-22 16:09:54
【问题描述】:

在查看了可能的解决方案后,我尝试使用数据透视表和 SUMPRODUCT 和 COUNTIF 公式,但还没有发现任何积极的结果。以下是输入数据:

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             

预期的输出数据如下。目的是不必输入预加载的名称列表。期望程序可以仅根据输入数据确定计数:

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

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

更新:带有名称列表的预加载列表可用于生成计数。上述说明已作相应更新。

【问题讨论】:

  • 刚刚看到有人在下面发布了答案。它就这样消失了。你看到了吗?
  • 您可以使用 VBA 轻松完成此操作。我可能会使用集合对象和类对象来跟踪事物;但也有其他方法。

标签: arrays excel recursion count unique


【解决方案1】:

首先在标准模块中输入以下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

然后高亮列的一部分,例如 G1 到 G50 并输入 数组公式:

=listuniques(A2:E11)

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

如果操作正确,您应该会看到如下内容:



终于在H1输入:

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

复制下来

注意

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

  1. ALT-F11 调出 VBE 窗口
  2. ALT-I ALT-M 打开一个新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将与它一起保存。 如果您使用的是 2003 年以后的 Excel 版本,则必须保存 文件为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 如上所示打开 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要使用 Excel 中的 UDF:

=myfunction(A1)

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

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

必须启用宏才能正常工作!

【讨论】:

  • 惊人的解决方案!谢谢!!
猜你喜欢
  • 1970-01-01
  • 2010-12-13
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多