单元格/范围作为函数的参数,并在VBA中计算平均值

我试图重新创build一个范围内的值的总和函数,我也希望它计算的平均值,我会在稍后添加更多的计算,但到目前为止,我只testing出平均值之前的总和部分。 但我不知道如何将细胞作为parameter passing给函数,也不知道如何取平均值,因为我不知道如何计算两个给定单元格之间的单元格数量参数。

Function ASDF(x As Range, y As Range) As Double 

是我所尝试过的,当我尝试类似的东西时,它不起作用

 ASDF = "=sum(x:y)" 

它给了我一个单元格错误,我尝试使用“#VALUE!”来执行函数= ASDF(A1:A30)。

基本上我如何将这些细胞传递到我的function,并使用它们?

什么是正确的方法来做到这一点? 如果给出范围的两个边界,还有一种方法可以找出它们之间有多less个单元格? 所以例如,如果我给a1和a30作为参数有办法得到有30个单元?

我可以看到你在做什么 – 我有点惊讶它不只是返回string“= sum(X:Y)”在所有的单元格中 – 可能的错误可能是由于你用两个范围(x和y)定义了你的函数,你只用一个来调用它(A1:A30)

如果你想设置你的function来一次看一个特定的范围,那么最好把它设置为

 Function ASDF(x As Range) As Double 

否则,您可以像以前一样使用X和Y,但是这意味着在调用函数时需要input“= ASDF(A1,A30)”,这实际上并没有为您的function添加任何东西。

通过上面的设置,要实际获得总和,您需要执行以下操作:

 ASDF = worksheetfunction.sum(x) 

并获得你需要引用的单元格的数量

 ASDFCount (example variable name) = x.Count 

我得到它的工作,似乎我不明白如何在VBA的范围工作,我的代码得到的平均像我想要的,我只需要遍历一个接一个的范围,我错误地假设有一些一行命令可以为我计算一个范围内的单元格数量。

 Function ASDF(r As Range) Dim cell As Range, total As Double, count As Integer For Each cell In r total = total + cell.Value count = count + 1 Next cell ASDF = total / count End Function 

调整你的代码与以下

 ASDF=application.worksheetfunction.sum( range(x, y))