• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA TREND関数について)

Excel VBA TREND関数について

このQ&Aのポイント
  • Excel VBA TREND関数とは、ExcelのVBAプログラミング言語で使用される関数の一つです。
  • この関数は、既知のxとyの値を使用して、新しいxの値に対応するyの値を予測することができます。
  • しかし、関数の引数に配列を直接指定する際には注意が必要であり、正しい形式で配列を作成する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

>Range("A1") には"119.085714285714"が出力されます しょっぱなの Dim y(6) As Double Dim x(6) As Double により,配列がゼロから宣言されているため, x:{0,1,2,3,4,5,6} y:{0, 92.87, 92.55, …, 92.59} の7要素の配列からTREND関数を計算しています。 Option Base 1 を宣言して配列を1から開始するようにするか,若しくは Dim y(1 To 6) As Double Dim x(1 To 6) As Double に直して実行します。 #参考 Excel2002以前のバージョンのエクセルでは,TREND関数の内部的な計算の元になっているLINEST関数にバグがあるため,可能な限りExcel2003以降をご利用ください。

soul_surfer
質問者

お礼

soul_surferです 早速のアドバイス、ありがとうございます 教えて頂いた通りに変更し、実行しましたら希望の演算結果が得られました。 また、Excel2003以降に変更したいと思います ありがとうございました

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

この質問は長いが、質問の要点を箇条書きにでもして表現を工夫してほしい。 すでにわかる人がいて、回答も出ているが、それに甘えないで。 2つろんてんが書いてあるようだ (1)2つのプログラムの結果が合わない (2)その他 >取り出した配列(値は固定ではないのです)をどうのようにArray(1, 2, 3, 4, 5, 6)またはArray(x(1), x(2), x(3), x(4), x(5), x(6))等の形にしたら良いか分かりません プログラムの実行中の結果はあえてArray(・・・) にしなくてもよいのではないかな。普通の配列にためて行けばよい。 そういう方法(Arrayにする形)があれば、私も教わりたい。 エクセルの場合には Sub test01() Range("a1:D1") = Array(1, 2, 3, 4) End Sub のようなのができて、1行ですむ。 しかし Sub test02() Dim h(4) h(0) = 0: h(1) = 1: h(2) = 2: h(3) = 3 Range("a1:D1") = h() End Sub のようなのもできるようだ。 ーー Sub test03() a = "0,1,2,3" Range("a1:D1") = Array(a) End Sub は結果が違う。 Sub test04() Range("a1:D1") = 1 End Sub と同じタイプになる。 ーー これらを認識してコードを考えてみたら。 また配列の加減が0であることを注意すべにです。 Option Base 1を宣言しないと0どぇす。 ーー Application.Trendはうまくいきましたか。 Application.Worksheetfunction.Trend .Worksheetfunction.Trend 式でやってきたが。

soul_surfer
質問者

お礼

soul surferです ご回答ありがとうございます ご連絡が遅くなりました >この質問は長いが、質問の要点を箇条書きにでもして表現を工夫してほしい。 >すでにわかる人がいて、回答も出ているが、それに甘えないで。 たしかにそうでした、どこまで記述すれば、アドバイスして頂く方に理解してもらえるのか 分からず長いコードを記入してしまいました。 すみません。以後、気を付けます。 >Range("a1:D1") = Array(1, 2, 3, 4) 上記のArray等にこだわったのは一度エクセルで演算結果を分析してみて、その後、 サーブレット+SQL等に考え方を反映させたかったのでRange("a1:D1")等のエクセル固有のコード はなるべく避けたかったのです。とは言え、そもそもtrend関数なるものが現時点のSQLに用意せれているかどうかは、まだ不明ですが。。。 今回の演算結果の差異は私の配列の宣言方法のミスであることが、 皆様のご指摘により判明しましたのでArrayにこだわらずにすみました。ありがとうございます また、ご指摘のtest01()からtest04()の記述は今後の考え方に大変参考になりました。 ありがとうございます 今後とも、ご指導の程、宜しくお願いします

関連するQ&A