0

我正在尝试编写一个函数,该函数将通过对相邻单元格范围内不同数量的树木直径的各个计算求和来确定单元格中的总基底面积(以平方英尺为单位)。

我是 VBA 新手,我不断收到错误,我似乎无法在网上找到示例和答案。我的电子表格单元格使用它只是在单元格中返回一个#VALUE。

Function BArange(x As Range)
    Dim BArangeTot As Double
    BArangeTot = 0

    Dim y As Integer
    y = x.Count

    Dim BArangei As Integer
    BArangei = 0

    For i = 1 To y
        BArangei = 0.005454154 * x(1, i) ^ 2
        BArangeTot = BArangeTot + BArangei
    Next i

    Return

    MsgBox (BArangeTot)

End Function

Function BA(x As Double)
    BA = 0.005454154 * x ^ 2
End Function

为了描述一个站点的树冠占用率,我们通常在电子表格中计算 4.5 英尺高的树木的横截面积,我们还需要总结多棵树干的树木。每英亩基础面积的平方英尺数是衡量场地密度/占用率的非常标准的指标。我认为定义一个我们可以使用的函数会很方便。

我已经为此花费了几个小时并尝试使用 Set 命令来启动我的变量,但我认为只有当它们是对象时才需要这样做。我已经尝试注释掉行并将程序运行到程序中的光标点,但是我没有得到任何可以作为类似示例答案查找的内容。我最近遇到的问题是它需要子、函数或属性。

4

2 回答 2

3

您可以将其作为标准 Excel 公式执行。

如果您的数据在A1:A10

=SUMPRODUCT(A1:A10,A1:A10)*0.005454154

于 2013-01-24T03:12:22.433 回答
2

我建议进行一些更正:

  1. 如果x是 a Range,如果你想读取单元格的值,你需要这样写:

    x.Cells(1,i)
    

    或者

    x.Cells(1,i).Value
    

    (我更喜欢第二种选择)

  2. 如果要返回一个值,则需要对函数名进行赋值:

    BArange = BArangeTot
    
  3. 另外,我推断您的范围是一列,因此我将按y如下方式分配变量:

    y = x.Rows.Count
    
  4. 最后,删除Return.

希望这可以帮助你

于 2013-01-23T23:32:27.643 回答