【问题标题】:Is it possible to count the number of unique characters within a cell?是否可以计算单元格中唯一字符的数量?
【发布时间】:2015-11-19 21:21:53
【问题描述】:

使用的软件:Excel Mac 2011

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

由于我正在使用的数据,我不需要在字符计数中包含或排除空格,也不需要区分大小写字符。

感谢您的帮助。

【问题讨论】:

  • 是的,但是它的公式太麻烦和太大了。最好转向VBA。明智的公式如果您的左列没有很长的条目,您可以将一些列用于保存第一列的 1 个符号,然后清除包含展开符号的行中的重复项,并计算一行中有多少个单元格不为空。或者您可以匹配您可能拥有的每个符号与每个单元格的内容。如果它只是英文字母和数字,则每个单元格有 35 个匹配项。

标签: excel-formula excel-2011


【解决方案1】:

试试这个:

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

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

【讨论】:

  • 如果你必须包含打破你概念的小写字母,那就更久了,那就是希望他不使用任何其他符号或语言。如果你真的坚持要有一个公式,我可以让它为你工作......
  • @helena4 随意发布你自己的,如果它更好更简洁,我会鼓励 OP 选择你的。我不贪心,很想学点新东西。
  • @helena4 所以我修复了小写问题,但如果您有其他建议,请随时提出建议或发布。
  • 这就是重点——只有在他的样本库非常狭窄的情况下,才应该对这样的事情使用公式。让我们拭目以待,看看是否甚至需要使用公式,或者您的解决方案是否可以适合需要处理的实际数据。
  • @helena4 因此我也给出了 UDF。计算所有内容并减去不需要的计数字符(如空格)可能更容易。
【解决方案2】:

我提出了一个新的、更简洁的公式,该公式由 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 个字符。

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

【讨论】:

    【解决方案3】:

    这使您可以计算在我称为数据的另一张表上的图表中出现了多少字符。

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

    这样做的好处是您可以轻松添加或更改字符列表,只要您保持范围正确。

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      相关资源
      最近更新 更多