2016-03-15 74 views
2

我有這樣的一個表的計數:得到一個列的多個部分

A1   B1 Team 1 C1 Team 2 D1 Team 3 
A2 Name  B2 A  C2 B  D2 C 
A3   B3 D  C3 E  D3 F 
A4   B4 G  C4   D4 H 
A5 School B5 AB  C5 CD  D5 
A6   B6 GH  C6 EF  D6 
A7   B7   C7 IJ  D7 

我想編寫一個宏,以獲得一個非空行數如下:

A1   B1 Team 1 C1 Team 2 D1 Team 3 
A2 Name  B2 A  C2 B  D2 C 
A3   B3 D  C3 E  D3 F 
A4   B4 G  C4   D4 H 
A5   B5 3  C5 2  D5 3 
A6 School B6 AB  C6 CD  D6 
A7   B7 GH  C7 EF  D7 
A8   B8   C8 IJ  D8 
A9   B9 2  C9 3  D9 0 

其中第5行和第9行給出非空白行的計數。 我需要使用宏來做到這一點。

回答

1

您可以使用VBA中的COUNTA函數來實現此目的。對於動態輸出行,我強烈建議標記這些行,以便代碼可以輕鬆找到它們。在這種情況下,我通過在單元格A5中放入了「名稱計數」,並在單元格A9中放入了「學校計數」(在您發佈的第二個表格中)。這些可以在任何你想要的行中。代碼只要在列A中就可以找到它們。

爲了將來的參考,使用命名範圍將是一個更乾淨和更有效的方法。

Sub der() 

'Declare and set worksheet object 
Dim ws As Worksheet 
Set ws = ThisWorkbook.Worksheets("Sheet1") 'Worksheet name here 

Dim nameOutRow As Integer, schoolOutRow As Integer 
Dim ns As Integer, ne As Integer, ss As Integer, se As Integer 

'Find the Output rows 
nameOutRow = Application.Match("Name Count", ws.Columns(1), 0) 
schoolOutRow = Application.Match("School Count", ws.Columns(1), 0) 

'Determine Name count range 
ns = Application.Match("Name", ws.Columns(1), 0) 'name start row 
ne = nameOutRow - 1 'name end row 

'School count range 
ss = Application.Match("School", ws.Columns(1), 0) 'school start row 
se = schoolOutRow - 1 'school end row 

'Names 
ws.Range("B" & nameOutRow) = Application.CountA(ws.Range("B" & ns & ":B" & ne)) 
ws.Range("C" & nameOutRow) = Application.CountA(ws.Range("C" & ns & ":C" & ne)) 
ws.Range("D" & nameOutRow) = Application.CountA(ws.Range("D" & ns & ":D" & ne)) 

'Schools 
ws.Range("B" & schoolOutRow) = Application.CountA(ws.Range("B" & ss & ":B" & se)) 
ws.Range("C" & schoolOutRow) = Application.CountA(ws.Range("C" & ss & ":C" & se)) 
ws.Range("D" & schoolOutRow) = Application.CountA(ws.Range("D" & ss & ":D" & se)) 


End Sub 
+0

實際上,列B,C,D中的條目是動態的。因此,我無法將範圍硬編碼爲B5,C5等。@oortCloud您可以幫我解決嗎? – TanviP

+0

@TanviP,看編輯 – oortCloud

+0

謝謝@oortCloud!只有一個問題。我在'nameOutRow = Application.Match(「Name Count」,ws.Columns(1),0)上遇到類型不匹配錯誤''你能幫忙嗎? – TanviP