Excel如何对含有A字符或含有B字符的单元格进行计数?

2025-02-28 00:08:28
推荐回答(5个)
回答1:

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))    

回答2:

不知道是不是我理解的这样:

条件多了,不知道运行速度会怎样,每增加一个条件,就要增加一段判断“红色框”的内容。

C1=SUMPRODUCT(1*((IFERROR(FIND(B1,$A$1:$A$5)>0,0)+IFERROR(FIND(B2,$A$1:$A$5)>0,0))>0))

数组公式,三键结束。

回答3:

试一下用下面图中的办法,主要是利用iferror和find函数,图中C是一个辅助列,D1单元格就是最终结果。

回答4:

=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

回答5:

我或许会这样处理:
将要查找的字符(不论A,B,或C,D)替换成空,只要长度减小则计数。
这样无论如何不会重复计数(符合一个条件与符合多条件是一样的被计一次)?