试图将ARRAYFORMULA()与COUNTIF()和SPLIT()结合起来

时间:2018-02-07 14:05:31

标签: google-sheets array-formulas

我试图找出每位同事正在处理的客户数量,然后将其用于其他计算。我的电子表格有一个列,其中每个同事的首字母以逗号分隔(我无法控制),目前我可以点击并拖动公式

=COUNTIF(SPLIT($B2, ", "), "NameHere")

效果很好。但是,我需要将其转换为数组形式,并且这样做会导致一切中断。似乎正在发生的事情是COUNTIF正在计算由SPLIT(ARRAY,",")创建的整个2D数组,并给出一个总和,但我希望它计算每一行,一次一个,每行的总和。

我已经在单元格O2中附加了spreadsheet,并尝试了阵列公式。

(顺便说一句,一个更简单的解决方案似乎是搜索姓名首字母的首字母列,因为它们被设置为独特的,但是一位同事拥有最初的" J"因此会出现在" LJ"中,我无法用通配符看到这种方法。)

1 个答案:

答案 0 :(得分:1)

Sample File

文字解决方案

请尝试这个公式,粘贴到C2:

=ArrayFormula((LEN(B2:B24)-LEN(SUBSTITUTE(B2:B24,C1:M1,"")))/LEN(C1:M1))

注意:

  • 它替换文本,计算替换前后文本的长度,并将差异除以搜索文本的长度。
  • 我认为字符串不包含另一个字符串:没有像" bo"和" boo"

阵列解决方案

alternative way是使用公式:

=arrayformula(mmult( --(IFERROR(SPLIT($B$2:$B$24,",")=C1, false)), ARRAYFORMULA(SIGN(ROW(INDIRECT("a1:a"&MAX(LEN($B$2:$B$24)-len(SUBSTITUTE($B$2:$B$24,",","")))+1)))) ))

C2中的

并将其复制到范围C2:M2

注意: