Excel VBA从排序表中选择数据

Excel VBA从排序表中选择数据,vba,excel,sorting,rowcount,Vba,Excel,Sorting,Rowcount,我在excel中遇到VBA问题。 我正在尝试在excel中为体育比赛创建一个参与者注册程序。可以添加参与者的体重、年龄和姓名等数据。在此基础上,将参与者分为以字母A、B、B命名的三组。。。直到Z。我有一个表格,可以按字母对这些poules进行排序,然后例如只显示poule a中的参与者,如下所示 现在,我想用VBA宏计算排序表显示的poule中参与者的数量。例如,当我在poule A上排序时,它必须返回3,当我在B上排序时,它必须返回2 由poule中的参与者数量决定,程序将根据参与者数量打印

我在excel中遇到VBA问题。 我正在尝试在excel中为体育比赛创建一个参与者注册程序。可以添加参与者的体重、年龄和姓名等数据。在此基础上,将参与者分为以字母A、B、B命名的三组。。。直到Z。我有一个表格,可以按字母对这些poules进行排序,然后例如只显示poule a中的参与者,如下所示

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

由poule中的参与者数量决定,程序将根据参与者数量打印不同的poule方案。(我在VBA中有此部分)

问题是当我有一个像下面这样的排序表时

它统计所有参与者,而不仅仅是B或任何其他排序字母中的参与者

我有这个: 子计数()

如果您对A进行排序,这很有效,但是当您对任何其他字母进行排序时,它会计算该字母之前的所有表格。对B排序时,它显示5(A+B的数目)

我在互联网上搜索了很长时间,想找到一个解决方案,但没有成功


我希望我的问题很清楚,有人能帮助我。

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

这些参数计算所有可见或隐藏的单元格

  • 1平均值
  • 2计数
  • 3 COUNTA
  • 最多4个
  • 5分钟
  • 6产品
  • 7科技发展署
  • 8 STDEVP
  • 9总计
  • 10 VAR
  • 11 VARP
这些参数仅评估可见单元格

  • 101平均
  • 102计数
  • 103 COUNTA
  • 最多104
  • 105分钟
  • 106产品
  • 107科技发展署
  • 108 STDEVP
  • 109总计
  • 110伏
  • 111 VARP

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

代码现在可以工作了,只是它只计算遇到的第一个字母。 因此,当浇口的第一列是例如A B E时。 我对A进行排序并使用count函数,它只返回值3,而不是5(因为有5个A)

当我将表排序为A时,它如下所示(列号,poule值):

14 A

15 A

16 A

18 A

19 A

它只返回了3个数字,你是否也有解决这个问题的方法

图片:


不,我正在使用VBA函数,以便计算一个poule中的参与者数量,并根据VBA代码打印相应的poule方案,不过请您回答!;)感谢您的回答,代码现在可以工作了,只是它只计算遇到的第一个字母。因此,当poules的第一列是例如A B B E,我排序到A并使用count函数时,它只返回值3而不是5(因为有5个A),当我将表排序到A时,它看起来像这样(列号,poule值):14 A 15 A 16 A 18 A 19 A,它只返回3,您是否也有解决该问题的方法?是否要筛选列表?或者你想要一个过滤过的数组?我想过滤列表,然后返回一个poules大小的计数,我在我的问题中添加了一个注释,带有问题的图片我不明白你的意思?
Dim rSource As Range
Dim rVisibleCells

Set rSource = Range(Range("A2"), Range("A2").End(xlDown))
Set rVisibleCells = rSource.SpecialCells(xlCellTypeVisible)

MsgBox rVisibleCells.Rows.Count