Excel:按范围内的单元格计算多个字符

Excel: Counting multiple characters by cell in range

我的范围是 A:A,因为记录数量发生了变化。此范围在每个单元格中包含 "x",对应于当时完成的项目数。因此,单个单元格可以输入为 "x"、"xxx" 或 "x x x"。为此,我需要 "x" 或 "X" 的出现次数。

我当前的公式是 =COUNTIFS(A:A,"x*",I:I,"Weekly*")我曾尝试更改此公式,但无法获得正确的结果,因为某些单元格包含多个 "x"。谢谢。

=SUM(LEN(A:A)-LEN(SUBSTITUTE(SUBSTITUTE(A:A,"x",""),"X","")))

用空白值替换 x & X,然后计算差值并求和。根据您的 excel 版本,您可能需要使用 CTRL + SHIFT + ENTER[= 确认公式26=]


编辑

处理小写和大写值的一种更简洁的方法是将整个字符串转换为大写,然后仅替换大写值 (X)

=SUM(LEN(A:A)-LEN(SUBSTITUTE(UPPER(A1),"X","")))

假设A列包含"X",没有其他数据,那么最简单的方法-如果你有Office-365或Office-2019就是用Concat将列变成1个巨型字符串,然后统计长度:

=LEN(CONCAT(A:A))

如果您没有 Office-365 或 Office-2019,则无法使用 Concat 功能——因此,您需要使用数组公式添加长度:

=SUMPRODUCT(LEN(A:A))

(使用SUMPRODUCT而不是SUM意味着我们可以按输入作为一个普通的公式,SUMPRODUCT里面的所有内容都是被视为数组公式,而不必按 Ctrl+Shift+Enter)

正如 BigBen 所指出的,您说过那里有时会有空格。你有 2 种方法来处理这个问题:要么 SUBSTUTUTE 空格,要么 SUBSTITUTE X 并取差值

=LEN(SUBSTITUTE(CONCAT(A:A)," ",""))
=SUMPRODUCT(LEN(SUBSTITUTE(A:A," ","")))
'OR
=LEN(CONCAT(A:A)) - LEN(SUBSTITUTE(LOWER(CONCAT(A:A)),"x",""))
=SUMPRODUCT(LEN(A1:A4))-SUMPRODUCT(LEN(SUBSTITUTE(LOWER(A1:A4),"x","")))

(需要 LOWER,因为 SUBSTITUTE 区分大小写:=SUBSTITUTE("|XxX|","x") 给出 |XX|,而不是 ||

我使用了辅助列。修改并尝试以下操作:

辅助列中的公式:

=LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),"X",""))

计算总数的公式:

=SUMIF($B:$B,"Weekly*",$C:$C)