【问题标题】:Excel VBA selecting data from a sorted TableExcel VBA 从排序表中选择数据
【发布时间】:2016-06-28 11:13:54
【问题描述】:

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

Example

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

根据 poule 中的参与者数量,该程序将根据参与者的数量打印不同的 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 的数量)。

我在互联网上找了很长时间的解决方案,但没有成功。

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

【问题讨论】:

    标签: vba excel sorting rowcount


    【解决方案1】:

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

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

    • 1 平均
    • 2 计数
    • 3 COUNTA
    • 4 最大
    • 5 分钟
    • 6 产品
    • 7 STDEV
    • 8 STDEVP
    • 9 总和
    • 10 VAR
    • 11 VARP

    这些参数只评估可见单元格

    • 101 平均
    • 102 个
    • 103 计数
    • 104 最大
    • 105 分钟
    • 106 产品
    • 107 STDEV
    • 108 STDEVP
    • 109 总和
    • 110 VAR
    • 111 VARP

    【讨论】:

    • 不,我正在使用 VBA 函数,以便计算 poule 中的参与者,并根据 VBA 代码打印相应的 poule 方案
    • 感谢您的回答! ;)
    【解决方案2】:

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

    当我将表格排序为A时,它看起来像这样(列号,poule值):

    14 岁

    15 岁

    16 岁

    18 岁

    19 岁

    它只返回 3 个计数,您是否也有解决该问题的方法?

    图片:

    sorted tabel to E

    Table

    【讨论】:

      【解决方案3】:

      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
      

      【讨论】:

      • 感谢您的回答,
      • 代码现在可以工作了,只是它只计算遇到的第一个字母。因此,当 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,您是否也有解决该问题的方法?
      • 您要过滤列表吗?或者你想要一个过滤数组?
      • 我想过滤列表,然后返回袋子大小的计数,我用问题的图片对我的问题添加了评论
      • 我听不懂?
      猜你喜欢
      • 2011-05-30
      • 2013-10-10
      • 2012-11-18
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      相关资源
      最近更新 更多