Excel如何对含有A字符或含有B字符的单元格进行计数?
cancer, heart disease, heart attack, heart cancer, lung cancer
如果想对含有cancer或者含有heart的单元格进行计数,函数应该怎么写呢?
如果用{=SUM(COUNTIF(A:A,{"*cancer*","*heart*"})}来计数,那么heart cancer单元格就被计数了两次。
使用COUNTIFS计数则只有3个单元格被计数,也不可行。
这是个被简化的问题,实际上A列有两万多行数据,需要计数的字符有20来个。
请大家不吝赐教,感谢。 展开
heart cancer单元格就被计数了两次,所以再减去 一次 Countif(A:A, "heart cancer") 不就行了
如果只有两种组合,可以使用数组公式:
=SUM(IF(IF(ISERR(FIND("heart",A1:A10000)),0,1)+IF(ISERR(FIND("cancer",A1:A10000)),0,1),1,0))
多一种组合,就多一个:+IF(ISERR(FIND("新的种类",A1:A10000)),0,1)
三种示例:
=SUM(IF(IF(ISERR(FIND("heart",A1:A10000)),0,1)+IF(ISERR(FIND("disease",A1:A10000)),0,1)+IF(ISERR(FIND("cancer",A1:A10000)),0,1),1,0))
下面图中例子里搜的是 cancer 或 disease的两种组合
当然,VBA是不错的选择,只有在VBA使用不便时可以考虑公式方法。
增加的条件越多,公式优势越小。
增加该行H列等于2016判断:=IF(IF(ISERR(FIND("heart",A1:A10000)),0,1)+IF(ISERR(FIND("cancer",A1:A10000)),0,1),1,0))
改为:
=SUM(IF(IF(ISERR(FIND("heart",A1:A10000)),0,1)+IF(ISERR(FIND("cancer",A1:A10000)),0,1),1,0)*(H1:H10000=2016))
非常感谢你的回答,计数结果挺好。
请问怎样添加一个“且”条件呢,比如含这些字符且H列单元格的值等于2016
=COUNTIF(统计的数据区域,"*cancer*")+COUNTIF(统计的数据区域,"*heart*")-COUNTIF(统计的数据区域,"*cancer*heart*")-COUNTIF(统计的数据区域,"*heart*cancer*")
以下为使用VBA编写的自定义函数:
自定义函数的使用方式为
=单元格统计(A:A, "heart,cancer")
Public Function 单元格统计(Rng As Range, Str As String) As Long '第一个参数为统计区域,第二个参数值为任意个以逗号隔开的字符串
Dim N As Long, R As Range
aa = Split(Str, ",")
For Each R In Rng
For i = LBound(aa) To UBound(aa)
If InStr(1, R.Value, aa(i), vbTextCompare) > 0 Then
N = N + 1
Exit For
End If
Next
Next
单元格统计 = N
End Function
将要查找的字符(不论A,B,或C,D)替换成空,只要长度减小则计数。
这样无论如何不会重复计数(符合一个条件与符合多条件是一样的被计一次)?
广告 您可能关注的内容 |