鲍勃需要在宏中使用SUM函数,以查找列中所有值的总和。问题在于要求和的单元数会有所不同。

;对于宏的一次运行可能是100个单元,而在下一次可能是300个单元,而在第三次只有25个单元。

首先,很容易在宏中使用大多数工作表函数(例如SUM)。您需要做的就是在函数名的开头加上“ Application.WorksheetFunction”。或只是“ WorksheetFunction”。因此,如果您知道每次运行宏都需要求和A1:A100,然后求和A1:A300,最后求和A1:A25,则可以使用这样的宏:

Public Sub Sum_Demo()

Dim myRange     Dim Results     Dim Run As Long

For Run = 1 To 3         Select Case Run         Case 1             myRange = Worksheets("Sheet1").Range("A1", "A100")

Case 2             myRange = Worksheets("Sheet1").Range("A1", "A300")

Case 3             myRange = Worksheets("Sheet1").Range("A1", "A25")

End Select         Results = WorksheetFunction.Sum(myRange)

Range("B" & Run) = Results     Next Run End Sub

此宏使用For。 。 。下一个循环指定要求和的单元格的不同范围。然后,它使用SUM工作表函数将总和分配给“结果”变量,该变量(最终)填充到B列的单元格中。第一次运行的结果放入B1,第二次放入B2,第三次放入B3 。

尽管此特定宏可能没有那么有用,但它显示了几种有用的技术,例如如何定义命名范围,如何使用SUM函数以及如何将总和填充到单元格中。宏不做的是显示如何选择可变数量的要求和的单元格。为此,最好依靠Range对象的End方法。下面的代码行显示了如何填充从A1开始一直延伸到该列中第一个空白单元格之前的范围之和:

myRange = ActiveSheet.Range("A1", Range("A1").End(xlDown))

Range("B1") = WorksheetFunction.Sum(myRange)

请注意,范围(myRange)定义为从A1开始并扩展到End方法返回的所有内容。然后将其求和并填充到B1中。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(3217)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: