是否可以计算单元格中唯一字符的数量?

Is it possible to count the number of unique characters within a cell?

使用的软件:Excel Mac 2011

我有一列包含字母数字字符串的单元格,我想计算每个单元格中出现的唯一字符的数量。我想让它的功能如下图所示:

由于我正在处理的数据,我不需要在字符数中包含或排除空格,也不需要在大写或小写字符之间进行任何区分。

感谢您的帮助。

试试这个:

=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)

这将计算一次所有内容,包括空格。

我想出了一个新的、更清晰的公式版本,该公式由 Scott 首次提出。

=SUM(IF(LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),CHAR(ROW(INDIRECT("1:255"))),"")),1,0))

这将找到 所有 个唯一的 ASCII 字符。 ROW(INDIRECT("1:255")) 创建一个从 1 到 255 的数字数组,我使用 CHAR 将其转换为完整的字符集,而无需手动键入所有 255 个字符。

如果这是我对社会的唯一贡献,我可以幸福地死去。

这可以让你计算在另一个 sheet 我调用数据的图表中出现了多少个字符。

=SUMPRODUCT(--ISNUMBER(SEARCH(Data!$a:$a,A1)))

最好的一点是您可以轻松添加或更改字符列表,只要您保持范围正确即可。