3

我正在使用 1000 行和 15 列的数据表在 excel 中工作。目前,在其中一列中,我有很多数据与人名混合在一起(参见下面的示例)。我想看看每个人的名字在数据表中出现了多少次,所以我可以在数据透视表中使用它。名称出现的方式没有特定的格式或顺序。这是随机的。有没有办法在 excel 中编写代码来搜索整个列并计算每个人的名字出现的次数?

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

经过反复试验,我可以生成一个名称列表,每行一个,并将它们放在不同的列中以进行比较,如果这样更容易的话。

4

2 回答 2

5

我知道你有你的答案,但为什么不使用COUNTIF通配符?你不需要 VBA :)

看这个例子

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

快照

在此处输入图像描述

于 2012-06-20T03:32:35.420 回答
2

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

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 中输入以下公式

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

4) 沿 F 列运行公式以获取每个所需名称的计数。

于 2012-06-19T20:30:47.357 回答