使用的软件:Excel Mac 2011
我有一列包含字母数字字符串的单元格,我想要计算每个单元格中出现的唯一字符数。我希望它的功能如下图所示:
由于我正在使用的数据,我不需要在字符数中包含或排除空格,也不需要在大写或小写字符之间进行任何区分。
感谢您的帮助。
答案 0 :(得分:3)
试试这个:
=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))
如上所述它很长。这将计算英文字母数字字符的上限和下限,但正如海伦娜指出的那样,您需要在公式中向数组中添加任何其他符号,否则它们将不计算在内。
显然,将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)
这会计算一次,包括空格。
答案 1 :(得分:1)
对于 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 个字符。
如果这是我对社会的唯一贡献,我可以幸福地死去。
答案 2 :(得分:0)
这允许您计算在我称为数据的另一张工作表上的图表中出现的字符数。
=SUMPRODUCT(--ISNUMBER(SEARCH(Data!$a$1:$a$26,A1)))
最重要的是,只要保持范围正确,您就可以轻松添加或更改字符列表。