【问题标题】:excel/vba: count number of unique male and female students in listexcel/vba:计算列表中唯一男女学生的数量
【发布时间】:2022-04-18 17:36:09
【问题描述】:

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

这是一个示例数据库:

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。

我尝试使用 sum(if(frequency)) 变化公式,但没有运气。我不确定如何将其与使用名称联系起来。

我也不介意使用 VBA 代码。

任何建议将不胜感激。

谢谢!

【问题讨论】:

  • 要求代码的问题必须表明对所解决问题的最低理解。包括尝试的解决方案、为什么它们不起作用以及预期的结果。另见:Stack Overflow question checklist
  • 如果您不想使用 VBA,那么请考虑使用数据透视表?在这种情况下,您将不得不在 SuperUser.com 中提出这个问题

标签: list vba excel


【解决方案1】:

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

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

对于女性计数,显然将 M 更改为 F

【讨论】:

  • 非常感谢巴里!这正是我所需要的。
【解决方案2】:

首先按名称从 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

【讨论】:

    猜你喜欢
    • 2021-03-19
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多