0

我有一个 Excel 2010 工作簿,其中一行用于姓氏,一行用于名字。大约有 1800 个条目。

同一个人(名字和姓氏)可以出现多次——jim simith 出现 5 次。我想计算 jim simth 在列表中出现的次数。

我用过=COUNTIF($B$2:$B$1800,B2)B姓氏在哪里。问题是列表中还有其他史密斯被计算在内,因为名字在单独的列中。有谁知道我如何对每个姓氏相同的人进行频率计数?

4

3 回答 3

2

=COUNTIFS($B$2:$B$1800,B2,$A$2:$A$1800,A2)

于 2013-08-30T03:49:56.770 回答
0

我没有测试过这个,我假设你的COUNTIF公式有效。

在新列中,您可以列中CONCATENATE的字符串并在其COUNTIF上运行。

假设这A是名字和B姓氏,C你会有类似的东西:

=CONCATENATE(A2, " ", B2)

然后你会这样做COUNTIF

=COUNTIF($C2:$C1800,$C2)

C或者,如果您不想显示列,可以隐藏它。

于 2013-08-30T03:50:46.127 回答
0

可能有点矫枉过正,但您可以创建与工作表的 ADODB 连接:

Dim conn As New Connection
With conn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=""" & ActiveWorkbook.FullName & """;" & _
        "Extended Properties=""Excel 12.0;HDR=No;"""
    'If you're running a version of Excel earlier than 2007, the connection string should look like this:
    '.ConnectionString = "Data Source=""" & ActiveWorkbook.FullName & """;" & _
    '    "Extended Properties=""Excel 8.0;HDR=No;"""
    .Open
End With

然后您可以针对工作表发出 SQL 语句:

Dim rs As Recordset
Set rs = conn.Execute( _
    "SELECT F2 AS LastName, F1 AS FirstName, Count(*) AS C " & _
    "FROM [Sheet1$A$2:$B$1800] " & _
    "GROUP BY F2, F1" _
)
于 2013-08-30T05:35:53.233 回答