2014-10-10 2 views
0

Мне нужно подсчитать количество уникальных строк в одной ячейке в Excel.Подсчитайте количество уникальных строк, разделенных пробелами, в одной ячейке

Например,
«яблоко груша груша винограда» будет подсчетом 3
«яблочный грушевого винограда» будет подсчетом 3
«оранжевый банан» будет подсчетом 2

Любые формулы или код VBA, которые могли бы дать этот результат?

редактировать: Я преобразовал к югу COUNTUNIQUE к функции, которая также работает

Function CountUnique(s As String) 
    Dim c As Collection 
    Set c = New Collection 
    ary = Split(s, " ") 
    On Error Resume Next 
    For Each a In ary 
    c.Add a, CStr(a) 
    Next a 
    On Error GoTo 0 
    CountUnique = c.Count 
End Function 
+0

Я выполнил некоторые поисковые запросы в Google, но до сих пор не нашел формул, соответствующих этому сценарию. – Whitebeard

+0

Я нашел формулу для подсчета слов, но не уникальные слова = IF (LEN (TRIM (LV2)) = 0,0, LEN (TRIM (LV2)) - LEN (SUBTITUTE (LV2, "", "")) +1) – Whitebeard

ответ

1

Вы можете добиться результата с использованием словаря:

Sub test() 
    c = CountDistinct("apple pear pear grape") 
End Sub 

Public Function CountDistinct(s As String) 
    On Error Resume Next 

    Dim hash As New Dictionary 
    For Each x In Split(s, " ") 
     hash.Add x, False 
    Next 

    CountDistinct = hash.Count 
End Function 

Просто добавьте ссылку на Microsoft время выполнения сценариев библиотека

1

Выбрать ячейку и запустить:

Sub CountUnique() 
    Dim c As Collection 
    Set c = New Collection 
    ary = Split(ActiveCell.Value, " ") 
    On Error Resume Next 
    For Each a In ary 
     c.Add a, CStr(a) 
    Next a 
    On Error GoTo 0 
    MsgBox c.Count 
End Sub 
Смежные вопросы