2016-06-28 2 views
-1

Я столкнулся с проблемой в VBA в excel. Я пытаюсь создать программу регистрации участников в excel для спортивного турнира. Можно добавить данные, такие как вес, возраст и имя участника. И тогда, основываясь на этом, участники делятся на пули, названные буквами A, B ... до Z. У меня есть таблица, которая может сортировать эти пули буквами, а затем, например, отображать только участников, которые находятся в poule A, такие как нижеExcel VBA выбор данных из отсортированной таблицы

Example

Теперь я хочу, чтобы подсчитать число с VBA макросов участников Poule, который отображается отсортированной таблице. Например, когда я сортирую на poule A, он должен возвращать 3, и когда я сортирую по B, он должен возвращаться. 2.

Определяется по количеству участников в пуле, программа будет печатать другую схему распределения полов, в зависимости от количество участников. (У меня есть эта часть в VBA)

Проблема заключается в том, когда у меня есть отсортированные таблицы, как показано ниже

Example 2

Он считает все участник, а не только те, в B или любое другое отсортированное письмо ,

У меня есть это: Sub Count()

Dim nRows As Integer 

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

End Sub 

Это хорошо работает, если вы сортировать, но при сортировке любого другого письма, оно считает все таблицы до этого письма. Например. когда вы сортируете B, он отображает 5 (Число A + B).

Я смотрю в Интернете очень долго, чтобы найти решение, но без успеха.

Надеюсь, мой вопрос ясен и кто-то может мне помочь.

ответ

0

Я предполагаю, что вы используете функции рабочего листа. Использовать субтитр при работе с отфильтрованными данными.

Эти параметры оценивают все ячейки видимыми или скрытыми

  • 1 СРЕДНЕЕ
  • 2 СЧЕТ
  • 3 СЧЕТЗ
  • 4 MAX
  • 5 МИН
  • 6 ПРОДУКТА
  • 7 СТАНДОТКЛОН
  • 8 СТАНДОТКЛОНП
  • 9 СУММА
  • 10 ВАР
  • 11 VARP

Эти параметры оценивают только видимые клетки

  • 101 СРЕДНЕЕ
  • 102 СЧЕТ
  • 103 СЧЕТЗ
  • 104 MAX
  • 105 мин
  • 106 ПРОДУКТА
  • 107 СТАНДОТКЛОН
  • 108 СТАНДОТКЛОНП
  • 109 СУММА
  • 110 ВАР
  • 111 VARP
+0

Нет, я использую функции VBA, для подсчета участников в Poule и в зависимости от того, что код VBA, печатает соответствующую схему Poule – Denn159

+0

благодарственное вы за свой ответ, хотя! ;) – Denn159

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 
+0

Спасибо за ваш ответ, – Denn159

+0

Код действительно работает, за исключением того, что он учитывает только первые буквы, с которыми он сталкивается. Итак, когда первый столбец для пулов - это, например, AAAEAABB E. И я сортирую по A и использую функцию count, она возвращает только значение 3, а не 5 (потому что есть 5 A). Когда я сортирую таблица А, это выглядит следующим образом (номер столбца, значение Poule): 14. 15 A 16 A 18. 19. И это возвращает только 3, у вас, возможно, есть какие-либо исправления этой проблемы, как Что ж? – Denn159

+0

Вы хотите отфильтровать список? Или вы хотите отфильтрованный массив? –

0

Код действительно работает, за исключением того, что он учитывает только первые буквы, с которыми он сталкивается. Таким образом, когда первый столбец для poules, например, AAAEAABB Е. И я вроде А и использовать функцию счетчика, это только возвращает значение 3, а не 5 (потому что есть 5 A-х)

When сортировать таблицу А, это выглядит следующим образом (номер столбца, значение Poule):

14.

15 А

16 А

18.

19 A

И он возвращает только количество 3, возможно, у вас есть какие-либо исправления для этой проблемы?

Фото:

sorted tabel to E

Table

Смежные вопросы