我在excel的VBA中遇到了问题。 我正在尝试在excel中为体育比赛创建参与者注册计划。可以添加参与者的体重,年龄和姓名等数据。然后基于此,参与者被分为用字母A,B ......命名的poules直到Z.我有一个表可以用字母对这些poules进行排序然后例如只显示poule A中的参与者如以下
现在我想用排序表显示的poule中参与者的VBA宏来计算数字。例如,当我对poule A进行排序时,它必须返回3,当我对B进行排序时,它必须返回2.
根据参与者人数确定,该程序将根据参与者的数量打印不同的poule方案。 (我在VBA中有这个部分)
问题是我有一个如下所示的排序表
它统计所有参与者,而不仅仅是B中的参与者或任何其他已排序的信件。
我有这个: 子计数()
Dim nRows As Integer
nRows = Range(Range("A18"), Range("A18").End(xlDown)).Rows.Count
MsgBox (nRows)
End Sub
如果您对A进行排序,这种方法很有效,但是当您对任何其他字母进行排序时,它会计算所有表格,直到该字母为止。例如。排序B时,它显示5(A + B的数量)。
我已经在互联网上找了很长时间才找到解决方案但没有成功。
我希望我的问题很明确,有人可以帮助我。
答案 0 :(得分:0)
我假设您正在使用工作表函数。使用过滤数据时使用小计。
这些参数评估所有可见或隐藏的单元格
这些参数仅评估可见细胞
答案 1 :(得分:0)
Range.SpecialCells将返回一系列仅可见的单元格。
Dim rSource As Range
Dim rVisibleCells
Set rSource = Range(Range("A2"), Range("A2").End(xlDown))
Set rVisibleCells = rSource.SpecialCells(xlCellTypeVisible)
MsgBox rVisibleCells.Rows.Count
答案 2 :(得分:0)
代码现在可以正常工作,除了它只计算它遇到的第一个字母。 因此,当poules的第一列是例如A A A E A A B B E. 我排序为A并使用count函数,它只返回值3而不是5(因为有5个A)
当我将表格排序为A时,它看起来像这样(列号,poule值):
14 A
15 A
16 A
18 A
19 A
它只返回3,你是否也可以解决这个问题呢?
图片: