Excel VBA从已排序的表中选择数据

时间:2016-06-28 11:13:54

标签: excel vba excel-vba sorting rowcount

我在excel的VBA中遇到了问题。 我正在尝试在excel中为体育比赛创建参与者注册计划。可以添加参与者的体重,年龄和姓名等数据。然后基于此,参与者被分为用字母A,B ......命名的poules直到Z.我有一个表可以用字母对这些poules进行排序然后例如只显示poule A中的参与者如以下

Example

现在我想用排序表显示的poule中参与者的VBA宏来计算数字。例如,当我对poule A进行排序时,它必须返回3,当我对B进行排序时,它必须返回2.

根据参与者人数确定,该程序将根据参与者的数量打印不同的poule方案。 (我在VBA中有这个部分)

问题是我有一个如下所示的排序表

Example 2

它统计所有参与者,而不仅仅是B中的参与者或任何其他已排序的信件。

我有这个:     子计数()

Dim nRows As Integer

nRows = Range(Range("A18"), Range("A18").End(xlDown)).Rows.Count
MsgBox (nRows)

End Sub

如果您对A进行排序,这种方法很有效,但是当您对任何其他字母进行排序时,它会计算所有表格,直到该字母为止。例如。排序B时,它显示5(A + B的数量)。

我已经在互联网上找了很长时间才找到解决方案但没有成功。

我希望我的问题很明确,有人可以帮助我。

3 个答案:

答案 0 :(得分:0)

我假设您正在使用工作表函数。使用过滤数据时使用小计。

这些参数评估所有可见或隐藏的单元格

  • 1 AVERAGE
  • 2 COUNT
  • 3 COUNTA
  • 4 MAX
  • 5分钟
  • 6 PRODUCT
  • 7 STDEV
  • 8 STDEVP
  • 9 SUM
  • 10 VAR
  • 11 VARP

这些参数仅评估可见细胞

  • 101 AVERAGE
  • 102 COUNT
  • 103 COUNTA
  • 104 MAX
  • 105分
  • 106 PRODUCT
  • 107 STDEV
  • 108 STDEVP
  • 109 SUM
  • 110 VAR
  • 111 VARP

答案 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,你是否也可以解决这个问题呢?

图片:

sorted tabel to E

Table