我有一个字符串列表 A,我想看看每个字符串在范围 B 中是否存在,如果是,则有多少行表示。我的数据如下所示:
列表A:
AAA
bbb
加拿大合作委员会
Range B:
1 aaa --- ---
2 bbb ccc bbb
3 aaa --- ---
我想要的结果是,在列表 A 中,对于“aaa”它会显示 2,对于“bbb”它会显示 1,对于“ccc”它会显示 1。一直尝试使用下面的数组公式来做到这一点,但似乎不起作用:
=SUM(IF(COUNTIF(Range B,List A($A1)>0,1,0))
答案1
假设您的字符串列表每行 1 个单元格 - 您可以使用数组公式。
假设列表 A 在 中A1:A3
,范围 B 在 中B1:B3
。要对列表 A 中的每个值进行计数,您可以使用 -
=COUNT(IF(FIND(A1,$B$1:$B$3)>0,1,0))
但这是一个数组公式,因此当您输入它时,通过按Ctrl+ Shft+来完成Entr,然后您会看到花括号{}
。
如果范围 B 位于多个单元格中,则您可以使用类似以下内容的方法 -
=COUNTIF($B$6:$D$8,A1)
可能还有其他使用公式的方法,但我想不出来。您可以使用以下方法为要查找的内容创建一个辅助列
=IF(ISERROR(MATCH($A$1,$B6:$D6)),0,1)
将其拖到行下方,然后对该列求和。但是,如果您想对每个值进行计数,则需要很多辅助列。
如果你对 VBA 持开放态度,那么与此类似的 UDF 就可以工作 -
Public Function countrow(rng As Range, str As String) As Integer
Dim a As Integer
a = 0
For Each Row In rng
For Each c In Row
If InStr(1, str, c) Then
a = a + 1
Exit For
End If
Next
Next
countrow = a
End Function
喜欢 -
=countrow(A6:C9,A1)