【问题标题】:Trying to combine ARRAYFORMULA() with COUNTIF() and SPLIT()尝试将 ARRAYFORMULA() 与 COUNTIF() 和 SPLIT() 结合使用
【发布时间】:2018-02-07 14:05:31
【问题描述】:

我正在尝试找出我的每个同事正在处理的客户数量,然后将其用于其他计算。我的电子表格有一列包含每个同事的姓名缩写,用逗号分隔(我无法控制),目前我可以单击并拖动公式

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

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

我附上了spreadsheet,在单元格 O2 中尝试了数组公式。

(顺便说一句,一个更简单的解决方案似乎是在首字母列中搜索同事的首字母,因为它们被设置为唯一的,但一位同事的首字母为“J”,因此会出现在“LJ”中",而且我无法用通配符解决这个问题。)

【问题讨论】:

  • Split 不是 Excel 中的工作表功能,因此这个问题仅适用于谷歌工作表。我已经删除了 excel 标签。

标签: google-sheets array-formulas


【解决方案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范围内

注意事项:

【讨论】:

  • 不幸的是,您第二个注释中的假设不起作用 - 我有同事叫“J”和“LJ”以及“S”和“SN”。不过感谢您的帮助!
  • @Fluorspar29,请查看编辑,我添加了另一个解决方案。
猜你喜欢
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 2021-10-29
  • 2014-02-20
相关资源
最近更新 更多