excel / vba:计算列表中唯一的男女学生人数

时间:2013-09-12 16:50:04

标签: excel list vba excel-vba

我有一个包含姓名和性别的学生数据库,但该列表包含不同日期的学生重复数据。我如何计算我名单上独特的男学生和独特女学生的数量?

以下是一个示例数据库:

Name Date Gender
A   8/1/2013    M
B   8/2/2013    F
C   8/2/2013    F
A   9/2/2013    M
A   9/3/2013    M
C   8/31/2013   F
B   8/15/2013   F
D   10/5/2013   M

独特男性的总数应为2,独特的女性应为2。

我试着玩总和(如果(频率))变化公式,但没有运气。我不确定如何将其与使用名称联系起来。

我也不介意使用VBA代码。

任何建议都将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

假设每个名称在重复(!)时总是具有相同的性别,您可以使用这样的公式来计算列表中的不同男性:

=SUMPRODUCT((C2:C100="M")/COUNTIF(A2:A100,A2:A100&""))

显然将女性数量的M改为F

答案 1 :(得分:0)

首先按名称A到Z对表进行排序,然后运行此宏。请注意,我很难编码范围A2:A9。

这仅在您首先对列表进行排序时才有效。选择所有列和行,然后右键单击并按名称列对A到Z排序。

Sub LoopRange()
  Dim rCell As Range
  Dim rRng As Range
  Set rRng = Sheet1.Range("A2:A9")
  Dim countM As Integer
  Dim countF As Integer
  Dim name As String

  For Each rCell In rRng.Cells
    If rCell.Value > name Then
        If rCell.Offset(0, 2).Value = "M" Then
            countM = countM + 1
        End If
        If rCell.Offset(0, 2).Value = "F" Then
            countF = countF + 1
        End If
    End If
    name = rCell.Value

  Next rCell

  MsgBox ("Males = " & countM & ", Females = " & countF)
  'Range("E3").Value = countF
  'Range("E4").Value = countM
End Sub