2014-03-27 49 views
0

我有一個帶有10個工作表的Excel工作簿。計算多個Excel工作表中的行數並將值返回到「摘要」工作表

在「摘要」工作表上,我想彙總每張其他工作表上使用的行數。

我在想一個多次調用的函數是最有效的。

如果是這樣,那麼我認爲它開始像是;

Function CountMyRows(SName) # where SName is the name of a sheet 
    Dim rowCount As Integer 
    rowCount = Worksheets("SName").Rows.Count 

我開始正確的方向?

回答

0

將以下兩個函數到工作簿中的一個模塊要在全體工作表中使用的行。我使用函數'Test_it'來抓取工作簿中的每個工作表,然後通過傳遞工作表名稱來調用'CountMyRows'。要測試它,將光標放在'Test_It'功能內,然後按F5鍵。您會在即時窗口中看到結果。

請注意,您的代碼必須更改,因爲(1)它計算表中的總行數 - 未使用的行;和(2)的整數可能太小......

Function Test_It() 
    For Each Sheet In ThisWorkbook.Sheets 
     Debug.Print Sheet.Name & vbTab & CountMyRows(Sheet.Name) 
    Next Sheet 
End Function 


Function CountMyRows(SName) As Long   '# where SName is the name of a sheet 
    Dim rowCount As Long 
    rowCount = Worksheets(SName).UsedRange.Rows.Count 
    CountMyRows = rowCount 
End Function 
+0

感謝魯尼,沒想到它會算:-(當我插入的總行「= Test_It()」沒有引號,我得到# NAME - 該公式包含無法識別的文本,我意識到它最有可能只是我的新手方法... – thisisme

+0

所以現在我已經在一個正確的工作簿模塊中...我得到一個「0」返回如果我插入名稱在第二個函數中,我得到了正確的值(在爲Header減去1之後),所以看起來標籤的名字沒有被傳遞給第二個函數,是否正確? – thisisme

+0

我更新了答案,但是如果你想在現有的代碼中使用它,你只需要調用'CountMyRows'傳遞一個表名並接收#行即MsgBox「Rows in Sheet1 =」&CountMyRows(「Sheet1」)。 –

1

我想總結多少行每個其它紙張

你正在尋找UsedRange財產的使用:

Function CountMyRows(SName As String) As Long 
    CountMyRows = ThisWorkbook.Worksheets(SName).UsedRange.Rows.Count 
End Function 

紙條,我使用Worksheets(SName)沒有引號,並且使用Long類型存儲行數更可靠,因爲Integer的最大值僅爲32767

enter image description here

相關問題