搜索列以匹配另一列中的数据并计算出现次数

时间:2012-11-26 14:32:33

标签: excel formula

我已在网上搜索过但我找不到任何特定内容。

我的列A如下所示,我需要搜索此列并找出B列中数据的出现次数,在下面的示例中有4(70011x3 + 70014x1)。

A                        B
h323:70011               70011
70007                    70012
70011                    70013
h323:70014               70014
sip:70011@domain.com     70015

我需要在Excel中使用什么公式? 提前致谢

2 个答案:

答案 0 :(得分:1)

...我不知道是否有一种简单的方法可以使用单个工作表函数来完成此操作,但我可以想到我将用两种方法来实现这一目标(并且很想知道是否有人能够弄明白如何在一个我想不到的单一,简单的工作表函数中执行此操作。

无论哪种方式,我的解决方案都是:

1)使用数组公式:

这看起来如下:

A                        B               C
h323:70011               70011          {=SUM(--ISNUMBER(FIND(B1,$A$1:$A$5,1)))}
70007                    70012          {=SUM(--ISNUMBER(FIND(B2,$A$1:$A$5,1)))}
...etc

请注意,对于此解决方案,您必须以数组公式键入(点击 ctrl + shift + 输入)最后,但是当你向下拖动C列并总结时,你将获得正确的总数。 这个问题的挑战在于它并没有真正在一个单元格中给出答案。

2)使用自定义VBA功能(我的首选方法):

您可以编写自己的VBA函数来非常轻松地执行此操作。 我创建的是:

  Function MyFunc(CriteriaRng As Range, SearchRange As Range) As Double

  Dim CriteriaCl As Range
  Dim SearchCl As Range

  Dim RunningTotal As Double: RunningTotal = 0

     For Each CriteriaCl In CriteriaRng
        For Each SearchCl In SearchRange
        If InStr(1, SearchCl.Value, CriteriaCl.Value) > 0 Then RunningTotal = RunningTotal + 1
        Next SearchCl
     Next CriteriaCl

  MyFunc = RunningTotal

  End Function

然后您可以在=myfunc(B1:B5,A1:A5)中的任何单元格类型中进行操作,您将获得正确的答案。

希望这有帮助!

答案 1 :(得分:0)

函数COUNTIF采用通配符。

使用excel 2007,您可以简单地引用整个列:

=COUNTIF(A:A,"*"&B1&"*")

2003或更低版本,您必须将范围作为单元格引用

=COUNTIF(A1:A2000,"*"&B1&"*")

请注意,数字必须格式化为文字,或者您可以添加 countif 来覆盖数字

=COUNTIF(A:A,"*"&B1&"*")+COUNTIF(A:A,B1)

然后,您可以使用列上的SUM来获取总数。