在一个循环内部,如何在多列的平均值(Visual Basic)时指示“所有行”

我有一个循环,其中我采取数列的数字相同的行数。

循环的重点是捕捉这些手段在一个新的载体。

所以对于每个循环,我需要指出“所有行”。 在matlab中,这将是容易的,只是使用“:”但我无法弄清楚在VB中是什么类比。 请帮忙! 谢谢。

(请告诉我,我在下面的代码中,我已经ALLROWS )。

我到目前为止的尝试:

For i = 1 To CA mrCA11(i) = Application.WorksheetFunction.Average(revCA11(**ALLROWS**,i)) Next i 

在matlab中,这将是:

  For i = 1:CA mrCA11(i) = mean(revCA11(:,i)); Next i 

编辑:我也试过这个技巧无济于事:

  For j = 1 To CA For i = 1 To s11 temp11(i) = revCA11(i, j) Next i mrCA11(j) = Application.WorksheetFunction.Average(temp11) Next j 

我收到错误消息:“无法获取Worksheet函数类的平均属性”

至less每个人(Tim和shahkalpesh至less)指出,我们需要了解什么是revCall或更具体的,我们需要了解如何给他们ALL ROWS在争论。

查找最后一行(或列或单元格)

一个常见的Excel问题是find最后使用的行/列/单元格。
这会给你的vector结束。

Excel给你几个方法来处理这个问题:

xlTypeLastCell

整个工作表中使用的最后一个单元格(无论是否在列A中使用)

 lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row 

完(xlUp)

列A中使用的最后一个单元(包括中间的空白)就像这样简单:

 lastRow = Range("A" & Rows.Count).End(xlUp).Row 

完(xlToLeft)

第一行最后使用的单元格(包括中间的空格)就像这样简单:

 lastRow = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Row 

UsedRange

工作表中使用的最后一个单元格(根据Excel解释):

 Set rangeLastCell = ActiveSheet.UsedRange 

使用数组作为参数

上面的方法告诉你如何find最后一行(如果这是你所需要的)。 然后,您可以轻松创build您的vector并在程序revCA11使用它。

你可以用一个arrays作为参数,就像Tim在他的回答中指出的那样:

 myArray = ActiveSheet.Range("A1", Cells(lastRow, lastColumn).Value 

或者你可以使用整数(或长整数)在你的过程中构build你的向量,就像声明一个范围一样简单:

 Range("A1:A" & lastRow) 

您可能会明确说明revCA11是如何声明/创build的,但是也许可以沿着这些方向revCA11

 Sub Tester() Dim arr, x arr = ActiveSheet.Range("A1:D5").Value '2-D array 'average each column Debug.Print "Columns:" For x = 1 To UBound(arr, 2) Debug.Print x, Application.Average(Application.Index(arr, 0, x)) Next x 'average each row Debug.Print "Rows:" For x = 1 To UBound(arr, 1) Debug.Print x, Application.Average(Application.Index(arr, x, 0)) Next x End Sub