循环通过一列

我试图通过使用VBA的Excel中的列循环,我有一个问题,因为有“W2”硬编码的function,所以我重复通过电子表格,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 

我不确定你为什么需要循环。 你的函数只是计算一个平均值,所以用平均值函数来代替。 这将您的function减less到一行:

 Function GetTopDrTS(L_NumCellsFromEdge As Integer, L_NumOfCells As Integer) As Double GetTopDrTS = WorksheetFunction.Average(Range("W2:W" & L_NumOfCells + 1)) End Function 

现在,这只是一行,我完全摆脱了这个function,只要使用WorksheetFunction任何地方,你通常会调用GetTopDrTS

请注意,从问题或代码中不清楚EdgePosL_NumCellsFromEdge应该是什么 – 如果它们旨在replace硬编码的列“W”,则将其replace为偏移量将是相当容易的。

尝试这个:

  'Read in the cells we need to average Dim i As Integer For i = 0 To L_NumOfCells - 1 range("W" & i).select val = val + Selection.Worksheet.Cells(Selection.Row, _ Selection.Column + EdgePos + L_NumCellsFromEdge + i).Value Next i