2016-06-28 44 views
-1

我在Excel中遇到了VBA中的一個問題。 我正在嘗試在excel中爲參加體育賽事創建一個參與者註冊計劃。可以添加參與者的體重,年齡和姓名等數據。然後在此基礎上,參與者被分成以字母A,B ...直到Z的名字命名的皮鞋。我有一張表格,可以用字母對這些皮鞋進行分類,然後例如僅顯示參與者在皮鞋A上的表格,例如下面Excel VBA從排序表中選擇數據

Example

現在我想指望參與者在POULE這是由該排序表中顯示的VBA宏的數字。例如,當我分類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 

此,如果你不大不小的效果很好,但是當你排序,任何其他字母,它計算所有的表,直到那封信。例如。當你排序B時,它顯示5(A + B的數量)。

我在網上搜索了很長時間才找到解決方案,但沒有成功。

我希望我的問題很清楚,有人可以幫助我。

回答

0

我假設您正在使用工作表函數。使用過濾數據時使用小計。

這些參數評估所有細胞可見或隱藏

  • 1 AVERAGE
  • 2 COUNT
  • 3 COUNTA
  • 4 MAX
  • 5 MIN
  • 6產品
  • 7 STDEV
  • 個8 STDEVP
  • 9 SUM
  • 10 VAR
  • 11 VARP

這些參數評估僅可見細胞

  • 101 AVERAGE
  • 102 COUNT
  • 103 COUNTA
  • 104 MAX
  • 105 MIN
  • 106 PRODUCT
  • 107 STDEV
  • 108 STDEVP
  • 109 SUM
  • 110 VAR
  • 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

該代碼現在可以工作,只是它只計算遇到的第一個字母。 因此,當第一列爲poules是例如AAAEAABB E. 而我排序到A和使用計數功能,它只返回一個值3而不是5(因爲有5個A) 當我排序表格A,它看起來像這樣(列數,POULE值): 14一 15一 16一 18一 19一 並返回剛剛3,你有可能得到了該問題的任何修補程序好? – Denn159

+0

是否要過濾列表?或者你想要一個過濾的數組? – 2016-06-28 16:42:38

0

該代碼現在可以工作,只是它只計算遇到的第一個字母。 所以當用於poules第一列是例如AAAEAABB E. 而我排序到A和使用計數函數,它只返回值3,而不是圖5(因爲有5 A的)

當我對錶進行排序,以A,它看起來像這樣(列號,POULE值):

14.一種

15.一種

16.一種

18甲

19 A

而且它只返回3的計數,您是否也可以針對該問題進行修復?

圖片:

sorted tabel to E

Table