我正在尝试使用 VBA 遍历 excel 中的一列,我遇到了一个问题,因为在函数中硬编码了“W2”,所以当我遍历电子表格时,W2 需要更改为 W3、W4 W5 等。
下面是我的代码。
Function GetTopDrTS(L_NumCellsFromEdge As Integer, L_NumOfCells As Integer) As Double
'Get Top Drive Side Triple Spot calculation
Dim val As Double
val = 0
'Select Cell W2 to set starting position
Range("W2").Select
'Read in the cells we need to average
Dim i As Integer
For i = 0 To L_NumOfCells - 1
val = val + Selection.Worksheet.Cells(Selection.Row, _
Selection.Column + EdgePos + L_NumCellsFromEdge + i).Value
Next i
GetTopDrTS = val / L_NumOfCells
end function
最佳答案
我不确定你为什么需要循环。您的函数只是计算平均值,因此请改用 Average 函数。这将您的功能减少到一行:
Function GetTopDrTS(L_NumCellsFromEdge As Integer, L_NumOfCells As Integer) As Double
GetTopDrTS = WorksheetFunction.Average(Range("W2:W" & L_NumOfCells + 1))
End Function
现在它正好是一行,我将完全摆脱该函数,只需在您通常调用
GetTopDrTS
的任何地方使用 WorksheetFunction .请注意,从问题或代码中不清楚
EdgePos
是什么和 L_NumCellsFromEdge
应该是 - 如果它们打算替换硬编码列“W”,那么用偏移量替换它会相当容易。
关于vba - 循环遍历一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29974069/