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

Excel formula 是否可以计算单元格中的唯一字符数?,excel-formula,excel-2011,Excel Formula,Excel 2011,使用的软件: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

使用的软件: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引用更改为包含要计数的所需文本的单元格

如果需要自定义项,请使用以下选项:

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(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引用更改为包含要计数的所需文本的单元格

如果需要自定义项,请使用以下选项:

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字符。行(间接(“1:255”)创建一个从1到255的数字数组,我使用CHAR将其转换为完整字符集,而无需手动键入所有255个字符


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

我想出了一个新的、更干净的公式,这个公式是斯科特首先提出的

=SUM(IF(LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),CHAR(ROW(INDIRECT("1:255"))),"")),1,0))
这将查找所有唯一的ASCII字符。行(间接(“1:255”)创建一个从1到255的数字数组,我使用CHAR将其转换为完整字符集,而无需手动键入所有255个字符


如果这是我对社会的唯一贡献,我会死得很开心。

这可以让你数一数我称之为数据的另一张表上的图表中出现了多少个字符

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

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

这允许您计算图表中另一张我称为“数据”的工作表中出现的字符数

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

最好的方法是,只要保持范围正确,就可以轻松地添加或更改字符列表。

确实如此,但公式过于繁琐和庞大。最好求助于VBA。公式方面如果您的左列没有很长的条目,您可以指定一些列来容纳第一列的1个符号,然后清除包含展开符号的行中的重复项,并计算一行中有多少单元格不是空的。或者,您可以将每个符号与每个单元格的内容进行匹配。如果只是英文字母和数字,那么每个单元格就有35个匹配项。是的,但公式太繁琐太大了。最好求助于VBA。公式方面如果您的左列没有很长的条目,您可以指定一些列来容纳第一列的1个符号,然后清除包含展开符号的行中的重复项,并计算一行中有多少单元格不是空的。或者,您可以将每个符号与每个单元格的内容进行匹配。如果每个单元格只有35个匹配的英文字母和数字,甚至更长,因为你必须包含小写字母,这打破了你的概念,那就是希望他不要使用任何其他符号或语言。如果你真的坚持要有一个公式,我可以让它为你工作…@helena4请随意发布你自己的,如果它更好更简洁,我会鼓励OP选择你的。我不贪心,也很想学点新东西。@helena4所以我修正了小写字母的问题,但如果你有其他建议,请随时提出建议或发布。这就是问题所在——只有在他的样本库非常狭窄的情况下才应该使用公式。让我们拭目以待,看看是否有必要对公式进行修改,或者您的解决方案是否能够适合需要处理的实际数据。@helena4因此,我也给出了一个UDF。数一数和减去不需要的字符(如空格)可能会更容易。如果你必须包含小写字母,这打破了你的概念,那就更久了,因为你希望他不要使用任何其他符号或语言。如果你真的坚持要有一个公式,我可以让它为你工作…@helena4请随意发布你自己的,如果它更好更简洁,我会鼓励OP选择你的。我不贪心,也很想学点新东西。@helena4所以我修正了小写字母的问题,但如果你有其他建议,请随时提出建议或发布。这就是问题所在——只有在他的样本库非常狭窄的情况下才应该使用公式。让我们拭目以待,看看是否有必要对公式进行修改,或者您的解决方案是否能够适合需要处理的实际数据。@helena4因此,我也给出了一个UDF。计算所有内容并减去不需要的已计数字符(如空格)可能更容易。