自动化总计

时间:2015-04-07 14:37:32

标签: excel vba excel-vba

我有一个内部计划,在Excel中发出“报告”。它出现在图像左侧的表格中。我正在尝试为用户编写宏,自动将所有行项目汇总到标题行中(如右图所示,公式显示)

Current and Desired Tables (注意:'0'的值只是空白单元格)

我的实际问题是确定Excel文件中最后一行的简便方法。 Cell.End(xlDown)和Count函数到目前为止只得到了我。但是我发布了我的整个问题,以防有人有任何聪明的想法。

2 个答案:

答案 0 :(得分:1)

P上。

您可以创建自己的功能来解决此问题。例如:

Public Function SumNew() As Long

Dim Col_ As Long
Dim Row_ As Long
Dim LastRow As Long

Col_ = Application.ThisCell.Column
Row_ = Application.ThisCell.Row

LastRow = Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row

SumNew = 0

For i = Row_ + 1 To LastRow
    If Cells(i, 1) <> vbNullString Then Exit Function 'if you find next filled 'Line Group#' end sums
    SumNew = SumNew + Cells(i, Col_).Value
Next i

End Function

对于样本数据,它看起来像是有效的:

enter image description here

答案 1 :(得分:0)

这不是很优雅,但应该有效。如果您知道导入Excel的报表永远不会超过一定数量的行(例如,不超过10000行),那么选择甚至更大的数字(比如50000),转到该行然后Selection.End(xlUp)。像这样:

Range("B50000").Select
Selection.End(xlUp).Select
LastRow = ActiveCell.Row

这假设您的报告的最后一行将包含B列中的内容,这在您显示的示例中就是这种情况。