vba - 循环遍历一列

标签 vba excel

我正在尝试使用 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/

相关文章:

excel - 如果具有许多工作表的工作簿的 ActiveSheet 中的单元格值发生更改,则清除内容

vba - 在 Outlook 中发送电子邮件时,如何自动运行宏?

vba - 尝试获取日期过滤的 AutoFilter 条件时出现错误 1004

excel - 在 Excel 用户窗体中显示 "live"图表数据

Excel显示当月第n天

vba - 从 vba 模块创建并填充组合框

vba - "<Application-defined or object-defined error> Error 1004"

excel - 使用 DoCmd.TransferSpreadsheet 将 Excel 电子表格导入 Access 会创建重复项

excel - 在 Excel 中,是否有一种有效的方法来总结重叠的命名范围?

ms-access - MS Access VBA 在用户导航到不同记录时运行代码