我正在尝试在Excel VBA中总结一列,但是因为有空格,我得到0作为总和。
Dim rExternalTotal As Range , dExternalTotal as Double
Set rExternalTotal = Range(rReportData.Offset(0, 0), rReportData.Offset(261, 0).End(xlUp))
dExternalTotal = Application.WorksheetFunction.Sum(rExternalTotal)
dExternalTotal始终为零。我无法删除工作表上的空白区域。任何人都可以建议一种以编程方式进行总结的方法吗?
答案 0 :(得分:2)
我认为你误解了错误的根源; rExternalTotal似乎等于单个单元格。
rReportData.offset(0,0)等于rReportData
rReportData.offset(261,0).end(xlUp)也可能等于rReportData,因为您偏移了261行,然后使用.end(xlUp)函数选择连续数据范围的顶部。
如果您只对列的总和感兴趣,可以参考整个列:
dExternalTotal = Application.WorksheetFunction.Sum(columns("A:A"))
或
dExternalTotal = Application.WorksheetFunction.Sum(columns((rReportData.column))
工作表函数sum将正确地忽略空格。
请告诉我这是否有帮助!
答案 1 :(得分:2)
如果要在Excel中添加一列数字,可以执行以下操作。 (我使用的是Excel 2010,但不应该有所作为。)
实施例: 假设您要将B10中的单元格添加到B10到B100&希望答案在单元格X中或者是变量X(X可以是您创建的任何单元格或任何变量,例如Dim X作为整数等)。这是代码:
Range("B5") = "=SUM(B10:B100)"
或
X = "=SUM(B10:B100)
括号内的“= Sum(B10:B100)”中没有引号,但在Range(“B5”)的括号内有引号。等号和引号之间有一个空格。它的权利。
如果某些单元格为空,则无关紧要,只会将它们视为包含零!
这应该为你做到!
答案 2 :(得分:1)
我的表单上有一个标签,它接收Sheet1中D列的数字总和。我只对第2行到第50行感兴趣,如果你的行数是动态的,你可以使用行计数器。我在列D中也有一些空白条目,它们会被忽略。
Me.lblRangeTotal = Application.WorksheetFunction.Sum(ThisWorkbook.Sheets("Sheet1").Range("D2:D50"))