【问题标题】:How can I find all of the combinations appear in excel?如何找到所有出现在 excel 中的组合?
【发布时间】:2017-08-13 01:31:15
【问题描述】:

我有 5 个列,每个列都包含很多不同的数据。这是一个例子:

A B C D E F  
1 0 1 1 0 1  
2 1 0 0 1 2  
1 2 0 1 2 1  
1 0 1 1 0 1  
...  

我必须找到所有这些独特的组合。在示例中,答案必须为 3,因为第一行与最后一行相同。
我可以做一栏,但是当栏多了,我不知道该怎么做?

【问题讨论】:

  • Excel 可以使用排序工具为您完成。 support.office.com/en-gb/article/…
  • 您使用的是哪个版本的 Excel?
  • @CallumDA Excel 2013
  • 是否有最大列数或始终为 5,内容数是否在 0-2 范围内,或者这只是一个示例?
  • @TomSharpe 还有更多文件,我想在其中执行此操作,并且文件有不同的列数,从 3 到 12。内容不只是数字,我有字段,其中包含文字也是。

标签: vba excel excel-formula combinations


【解决方案1】:

您可以使用 VBA 实现此目的。打开 VBA 编辑器并创建一个新模块。将此代码添加到模块中

Public Function CountUniqueRows(rng As Range) As Long
    Dim r As Range
    Dim s As String
    Dim dict As Object

    Set dict = CreateObject("scripting.Dictionary")

    With dict
        For Each r In rng.Rows
            s = Join(Application.Transpose(Application.Transpose(r.Value)), "")
            If Not .exists(s) Then
                .Add s, s
            End If
        Next r
    End With

    CountUniqueRows = dict.Count
End Function

然后您可以像这样在工作表上使用该函数,根据您的示例返回 3

=CountUniqueRows(A1:F5)

【讨论】:

    【解决方案2】:

    选择您的数据范围。
    在“数据”功能区的“数据工具”部分中选择“删除重复项”。
    按照说明进行操作。
    瞧!

    如果您想保留原始数据,您可能需要复制并粘贴到新工作表中,然后删除那里的重复数据。

    【讨论】:

    • 问题是,我忘了说,该文件将被编辑,如果该函数可以立即计算新结果,而无需我做任何事情,我会喜欢它。
    • 我的 VBA 时代已经过去了。为了快速修复,我会考虑录制一个宏并将其连接到一个按钮以手动触发它。我相信其他人可以提供更巧妙的解决方案。
    猜你喜欢
    • 2018-07-31
    • 2019-06-04
    • 1970-01-01
    • 2011-05-31
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    相关资源
    最近更新 更多