gpt4 book ai didi

performance - excel vba worksheetfunction.sum

转载 作者:行者123 更新时间:2023-12-04 22:10:14 27 4
gpt4 key购买 nike

我有一个函数应该计算单元格数组中的总和。这个函数经常在另一个子程序中被调用,因此必须非常快。首先,我使用了一个 for 循环来获取数字,但它太慢了。然后我想使用一个工作表函数,但由于未知原因这不起作用。这是函数的代码:

Function CalcMD(rownumbers, colnumber)

Dim MMDRow As Integer
Dim SearchRange As String
Dim FirstAddress As Boolean

MMDRow = MMDRow()
FirstAddress = False
SearchRange = ""

'building the search range
For i = 0 To UBound(rownumbers)
If rownumbers(i) > 0 And rownumbers(i) < MMDRow Then
If FirstAddress = False Then
SearchRange = SearchRange & cells(rownumbers(i), colnumber).Address(False, False)
FirstAddress = True
Else
SearchRange = SearchRange & ";" & cells(rownumbers(i), colnumber).Address(False, False)
End If
End If
Next

CalcMD = WorksheetFunction.Sum(Range(SearchRange))

End Function

有没有更好/更快的方法来获得这个结果?

最佳答案

这是一个尝试。最棘手的部分是找到您要求和的最后一行,如果第一次尝试不能解决您的问题,我认为这就是我们应该工作的地方。

Function CalcMD(rownumbers, colnumber)

Dim MMDRow As Integer, iMaxRow As Integer
Dim SearchRange As String

MMDRow = MMDRow()

'Find the last row where you want to sum the data
iMaxRow = WorksheetFunction.Min(MMDRow - 1, WorksheetFunction.Max(rownumbers))

CalcMD = WorksheetFunction.Sum(Cells(iMaxRow, colnumber))

End Function

另请注意,这里没有太多错误检查(尤其是检查输入数据)

关于performance - excel vba worksheetfunction.sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8573597/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com