计算多个Excel工作表中的行数,并将值返回到“摘要”工作表

时间:2014-03-27 17:06:21

标签: excel vba excel-vba

我有一张包含10张以上的Excel工作簿。

关于"摘要"表格我想总结每个其他表格上使用了多少行。

我认为多次调用的函数效率最高。

如果是这样,那么我认为它的开头就像;

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

我是从正确的方向开始的吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

将以下两个函数放入工作簿中要在所有工作表中计算已用行数的模块中。我使用了Function' 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

答案 2 :(得分:0)

A1-Axx的B列(例如单元格B1)中列出您的工作表(名称),输入公式:

=COUNTA(INDIRECT(A1&"!A:A"))

在下面的示例中,我添加了“ -1”,以不计算工作表中的标题行。


1