在excel中search特定的string,其中string在每个单元格中是随机的

我在excel中使用1000行和15列的数据表。 目前,在其中的一个专栏中,我有很多与人名混合的数据(见下面的例子)。 我想看看每个人的姓名出现在数据表中的次数,所以我可以在数据透视表中使用它。 名称出现的方式没有特定的格式或顺序。 这是随机的。 有没有办法在Excel中编码来search整个列,并给我一个每个人的名字出现的次数?

Column D 21421Adam14234 2323xxx Bob 66 23 asjdxx Jacob 665 43 Tim 5935539 2394Bob 88 

经过一些试验和错误,我可以生成一个名称列表,每行一个,并将它们放在不同的列中作比较,如果这样做更容易。

你没有VBA标签,但我不知道是否有办法做到这一点没有它。 我在下面构build了一个自定义函数。 要实现它,请执行以下步骤。

1)列出从E1列开始的所需名称。

2)将此函数插入​​VBA编辑器A)按Alt + F11 B)单击菜单栏中的插入>模块C)将此代码复制到模块

 Option Explicit Function findString(rngString As Range, rngSearch As Range) As Long Dim cel As Range Dim i As Integer i = 0 For Each cel In rngSearch If InStr(1, cel.Text, rngString.Value) > 0 Then cel.offset(,-1) = rngString.Value 'places the name in cell to right of search range i = i + 1 End If Next findString = i End Function 

3)在F1中input下面的公式

 =findstring(E1,$D$1:$D$5) 

4)运行公式下面的列F来获得每个所需的名字的数量。

我知道你已经得到了答案,但为什么不使用通配符的COUNTIF ? 你不需要这个:)的VBA

看到这个例子

 =COUNTIF($A$1:$A$5,"*"&C1&"*") 

快照

在这里输入图像描述