是否可以计算单元格中唯一字符的数量?
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)))
最好的一点是您可以轻松添加或更改字符列表,只要您保持范围正确即可。
使用的软件: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)))
最好的一点是您可以轻松添加或更改字符列表,只要您保持范围正确即可。