Excel - 如何检查范围内是否存在某个值/字符串以及在多少行中存在

Excel - 如何检查范围内是否存在某个值/字符串以及在多少行中存在

我有一个字符串列表 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)

相关内容