0

我在网上搜索过,但找不到任何具体的内容。

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

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

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

4

2 回答 2

1

...我不知道是否有一种简单的方法可以使用单个工作表函数来执行此操作,但我可以想到 2 种方法来完成此操作(并且很想看看是否有人能弄清楚该怎么做这在我想不到的一个简单的工作表函数中)。

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

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

请注意,对于此解决方案,您必须在最后将其作为数组公式(Hit ctrl++ shift)enter输入,但是当您向下拖动 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),您将得到正确的答案。

希望这可以帮助!

于 2012-11-26T15:12:24.020 回答
0

该函数COUNTIF采用通配符。

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

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

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

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

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

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

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

于 2012-11-26T15:29:12.903 回答