从Excel中的单元格计算Unqiue值

时间:2019-03-07 05:05:30

标签: excel

我在单元格A2中的值为India,China,India Australia。我希望单元格B2的结果为India,China,Australia

请注意,我希望公式能够从单个单元格(而不是单元格范围)中找到唯一值。由于使用countif进行了很多回复,因此可以减少计数。我不想要这样的事情,我只想让公式进行计算以仅从单个单元格中找到唯一值。
请清楚地看我的问题并提出答案。

1 个答案:

答案 0 :(得分:0)

VBA独特的UDF

这是用户定义的公式,用于在字符串中查找不同的单词。

  • 唯一的单词定界符是逗号和/或空格。

放入标准VBA模块

  • 不是类模块,也不是工作表模块。
  • 添加到现有模块或创建新模块。

使用该函数的方式与使用其他单元格公式函数的方式相同。

  • =Distinct("a,a,b,c, d e f f f")
    • 输出a, b, c, d, e, f
  • A1 = Apples, App Pear Apples Pear Bees, B1 =Distinct(A1)
    • 输出Apples, App, Pear, Bees

VBA代码

Public Function Distinct(ByVal s As String) As String
    Dim found As Boolean
    Dim f As Variant
    Dim w As Variant
    Dim a() As String
    a = Split("") 'empty array
    For Each w In Split(WorksheetFunction.Trim(Replace(s, ",", " ")), " ")
        found = False
        For Each f In a
            If f = w Then found = True
        Next f
        If Not found Then
            ReDim Preserve a(UBound(a) + 1)
            a(UBound(a)) = w
        End If
    Next w
    Distinct = Join(a, ", ") ' Change to "," to remove space in output.
End Function

不同的字数可以通过以下公式找到:
=IF( Distinct(A1)="", 0, LEN( Distinct(A1)) - LEN( SUBSTITUTE( Distinct(A1), ",", "")) + 1)
计算逗号(并忽略空格),因此即使将VBA代码修改为输出a,b,c,它也仍然有效。