首页 > 解决方案 > 如何计算字符串出现在单元格区域中的次数

问题描述

 <br>1<br>text <br>2<br>text <br>3<br>
 <br>4<br>
 <br>5<br>text <br>6<br>text <br>7<br>text <br>8<br>

<br>*<br> 计算此表 A1:A3 中出现次数的公式是什么?请记住,每个单元格的前面都有一个空间。

总数应该是 8。=COUNTIF(A1:A3," <br>*<br>")但是只返回 3。

编辑:使数据更简单,因此更易于阅读

标签: excelexcel-formula

解决方案


这看起来像 XML/HTML,所以为什么不FILTERXML使用XPATH构造来解析它以计算包含空格且不为空的值。例如,您的数据位于A1

=COUNTA(FILTERXML("<t><br>"&SUBSTITUTE(CONCAT(A1:A3),"<br>","</br><br>")&"</br></t>","//br[not(contains(., ' '))][node()]"))

或者当您的有效数据可能包含空格时,我们需要过滤掉以空格结尾的那些(以及再次为空的):

=COUNTA(FILTERXML("<t><br>"&SUBSTITUTE(CONCAT(A1:A3),"<br>","</br><br>")&"</br></t>","//br[not(substring(., string-length(.), 1)=' ')][node()]"))

但是,如果您所追求的是仅用于计数的数字节点,则使用:

=COUNT(FILTERXML("<t><br>"&SUBSTITUTE(CONCAT(A1:A3),"<br>","</br><br>")&"</br></t>","//br[.*0=0]"))

很酷的是FILTERXML实际上会返回一个数组以供进一步分析,在您的情况下,您可以计算数组中的元素。


推荐阅读