Можно ли посчитать количество уникальных символов в ячейке?
Используемое программное обеспечение: Excel Mac 2011
У меня есть столбец ячеек, содержащий буквенно-цифровые строки, и я рассчитываю подсчитать количество уникальных символов, которые появляются в каждой ячейке. Я хотел бы, чтобы это функционировало, как показано ниже:
Из-за данных, с которыми я работаю, мне не нужно, чтобы пробелы были включены или исключены из числа символов или каких-либо различий между прописными или строчными буквами.
Спасибо за вашу помощь.
4 ответа
Попробуй это:
=SUM(IF((LEN(G13)-LEN(SUBSTITUTE(UPPER(G13),{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0"},""))),1,0))
Как говорится, это довольно долго. Это будет считать английские буквенно-цифровые символы как верхние, так и нижние, но, как указал helena4, вам нужно будет добавить любой другой символ в массив в формуле, иначе они не будут учитываться.
Очевидно, измените ссылку G13 на ячейку с желаемым текстом для подсчета.
Если вы хотите UDF, используйте это:
Function Uniquecount(Rng As Range) As Integer
Dim cUnique As Collection
Dim i As Integer
Set cUnique = New Collection
On Error Resume Next
For i = 1 To Len(Rng)
cUnique.Add CStr(Mid(Rng, i, 1)), CStr(Mid(Rng, i, 1))
Next i
On Error GoTo 0
Uniquecount = cUnique.Count
End Function
Поместите его в модуль, прикрепленный к книге. Затем назовите это как любую другую формулу: =Uniquecount(G13)
Это будет считать все один раз, включая пробелы.
Я придумал новую, гораздо более чистую версию формулы, впервые предложенную Скоттом.
=SUM(IF(LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),CHAR(ROW(INDIRECT("1:255"))),"")),1,0))
Это найдет все уникальные символы ASCII. ROW(INDIRECT("1:255")) создает массив чисел от 1 до 255, который я использую CHAR для преобразования в полный набор символов без необходимости вручную вводить все 255 символов.
Если это мой единственный вклад в общество, я могу умереть счастливым.
=ROWS(UNIQUE(MID(A1,SEQUENCE(LEN(A1)),1)))
должно работать, если у вас есть доступ к этим новым функциям (т.е. UNIQUE и SEQUENCE)
= СУММПРОИЗВ (- ЕЧИСЛО (ПОИСК (Данные! $ A$1:$a$26; A1)))
Это позволяет вам подсчитать, сколько символов отображается в диаграмме на другом листе, который я назвал данными. Лучшее из этого - вы можете легко добавлять или изменять список символов, если вы сохраняете правильный диапазон.