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は、次のように記述する必要があります。Range

    x.Cells(1,i)
    

    また

    x.Cells(1,i).Value
    

    (私は 2 番目のオプションを好みます)

  2. 値を返したい場合は、関数名に割り当てを行う必要があります。

    BArange = BArangeTot
    
  3. また、範囲は列であると推測するので、y次のように変数を割り当てます。

    y = x.Rows.Count
    
  4. 最後に、を削除しReturnます。

これがお役に立てば幸いです

于 2013-01-23T23:32:27.643 に答える