dan*_*z46 2 search array microsoft-excel microsoft-excel-2010
图片栏 充满评论,如调查问题的反馈。现在用一个公式对 B 列进行图片,该公式计算每个评论中特定关键词的出现次数。我目前在 B 列中使用这个公式: SUM(COUNTIF(A27,{" LBNL "," Lawrence Berkeley "," LBL ","Lawrence Lab*"}))
由于列表将在此过程中增长和缩小,并且因为我最终会得到多个类似的公式(针对不同的类别),我想改为在命名范围内控制列表并从那里引用它。
所以现在假设我的列表如下所示,名称范围为 search_items1
我的公式看起来像 SUM(COUNTIF(A27,search_items1))。
请注意使用 * 作为通配符,这引入了另一个挑战,但即使没有 *,我也无法使上述公式工作。有没有办法使这项工作?带有通配符 * 的解决方案将是理想的。
或者,我可以引用一个从名称范围连接在一起的单元格,如下所示:{" LBNL "," Lawrence Berkeley "," LBL ","Lawrence Lab*"}。我尝试了这一点,但公式将其解释为一个文本块。
我尝试了多种语法变体以及无数的 Google 和超级用户搜索。请帮忙。
你的公式有什么作用:
=SUM(COUNTIF(A27,{"LBNL","Lawrence Berkeley","LBL","Lawrence Lab*"}))
Run Code Online (Sandbox Code Playgroud)
如果单元格 A27 是LBNL
, or Lawrence Berkeley
or LBL
or Lawrence Lab*
(*
此处用作通配符),则计数为 1 。
所以,如果你有一个单元格LBNL
,你会得到 1 作为结果。有Dr. LBNL
将导致 0。
如果要计算1
单元格是否至少包含 1 LBNL
,则需要在文本的两侧使用通配符,即:
=SUM(COUNTIF(A27,{"*LBNL*","*Lawrence Berkeley*","*LBL*","*Lawrence Lab*"}))
Run Code Online (Sandbox Code Playgroud)
你可以做一个命名范围,并把它放在那里,而不是,但这将成为一个数组公式,其将只与工作Ctrl+ Shift+ Enter:
=SUM(COUNTIF(A27,search_items1))
Run Code Online (Sandbox Code Playgroud)
现在,您SUMPRODUCT
可以避免使用 CSE 来使用此公式:
=SUMPRODUCT(COUNTIF(A27,search_items1))
Run Code Online (Sandbox Code Playgroud)
但是,如果您有一个包含LBNL LBNL
并且希望结果为的单元格2
,那又是另一回事,因为COUNTIF
一旦它在单元格中找到了它要查找的内容,它的工作就完成了,并且会返回1
。
在这种情况下,我建议对要检查的每个单元格进行计数(因为上述函数可用于查看整列):
=SUMPRODUCT((LEN(A2)-LEN(SUBSTITUTE(A2,search_items1,"")))/LEN(search_items1))
Run Code Online (Sandbox Code Playgroud)
[现在请注意,由于SUBSTITUTE
工作原理,您需要删除星号。]