
こんばんは。
回帰分析をやってくれるワークシート関数にLinestとうのがありますが、
それの引数に、配列を渡したいのですが、うまくいきません。
データ自体はRangeではなく、Variant型の配列となっているのですが、Linestを
使うときは、一旦、シートに貼り付けて、配列→Range型に変換するなどするしか
対応できませんでしょうか。
もしくは、Linestと同等な自作関数を作っても良いのですが、もともと機能として
あるなら、Linestを使用したいと思ってます。
うまくいかない例^^;
Sub test()
Dim a(1 To 3) as Variant
Dim b(1 To 3, 1 To 2) as Variant
a(1) = 1
a(2) = 3
a(3) = 2
b(1, 1) = 4
b(2, 1) = 5
b(3, 1) = 6
b(1, 2) = 12
b(2, 2) = 15
b(3, 2) = 19
MsgBox WorksheetFunction.LinEst(a, b, True, True)
End Sub
--
エクセル2003
No.1ベストアンサー
- 回答日時:
それぞれの配列をセル範囲に例えると
a(1 To 3) は A1:C1...1行3列
b(1 To 3, 1 To 2) は A1:B3...3行2列
これを以下のように修正してxとyを対応させてあげればいいですね。
Sub test1()
Dim a(1 To 3, 1 To 1) As Variant
Dim b(1 To 3, 1 To 2) As Variant
Dim c
a(1, 1) = 1
a(2, 1) = 3
a(3, 1) = 2
b(1, 1) = 4
b(2, 1) = 5
b(3, 1) = 6
b(1, 2) = 12
b(2, 2) = 15
b(3, 2) = 19
c = WorksheetFunction.LinEst(a, b, True, True)
MsgBox "y= " & c(1, 2) & " *x1+ " & c(1, 1) & " *x2 " & c(1, 3)
End Sub
もしくは
Sub test2()
Dim a(1 To 3) As Variant
Dim b(1 To 2, 1 To 3) As Variant
Dim c
a(1) = 1
a(2) = 3
a(3) = 2
b(1, 1) = 4
b(1, 2) = 5
b(1, 3) = 6
b(2, 1) = 12
b(2, 2) = 15
b(2, 3) = 19
c = WorksheetFunction.LinEst(a, b, True, True)
MsgBox "y= " & c(1, 2) & " *x1+ " & c(1, 1) & " *x2 " & c(1, 3)
End Sub
LINESTの結果は配列を返しますから、
MsgBox WorksheetFunction.LinEst...とはできないです。
以下も参考になると思います。
『Excel 2003 およびそれ以降のバージョンの Excel の LINEST 関数について』
http://support.microsoft.com/kb/828533/ja
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) VBA 配列を使ったコードに直していただけますか 4 2023/05/06 15:18
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
配列変数の添字が範囲外ですと...
-
配列を任意の数値で埋める方法
-
VB6 配列を初期化したい
-
配列に同じ値を入れる方法
-
OutlookVBAでサブフォルダ一括作成
-
VBA 1次元配列を2次元に追加する
-
subの配列引数をoptionalで使う...
-
モンテカルロ法を用いた積分計...
-
2次元動的配列の第一引数のみを...
-
Dim は何の略ですか?
-
特定のセル範囲で4文字以上入力...
-
ListViewで、非表示列って作れ...
-
Array配列の末尾に追加したい。
-
エクセルマクロで配列の値から...
-
VBAで近似曲線の係数取得
-
エクセルで特定の列が0表示の場...
-
教えて下さい
-
特定のPCだけ動作しないVBAマク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
特定のセル範囲で4文字以上入力...
-
subの配列引数をoptionalで使う...
-
VB6 配列を初期化したい
-
配列変数の添字が範囲外ですと...
-
2次元動的配列の第一引数のみを...
-
ListViewで、非表示列って作れ...
-
Excel-VBAの配列「Public Const...
-
for each の現在の配列ポインタ...
-
AES暗号にて、AES_set_encrypt_...
-
Dim は何の略ですか?
-
VBのFunctionで、配列を引数...
-
配列を任意の数値で埋める方法
-
verilogで配列の任意の8bitを取...
-
エクセルで最小値から0を除く方法
-
《エクセル2000》A列・B列の商...
-
配列内の内容を全て表示する方法
-
配列に同じ値を入れる方法
おすすめ情報