• 締切済み

VBA(重回帰分析)

以下のプログラムが動かないのですがなぜでしょうか? Sub Macro2() Application.Run "ATPVBAEN.XLAM!Regress", _ Worksheets("aaa").Range("$A$1:$A$5"), _ Worksheets("aaa").Range("$B$1:$C$5"), True, False, , _ Worksheets("bbb").Range("$A$1"), False, False, False, False, , False End Sub 具体的には、シート「aaa」のA1~A5を説明変数、B1~C5を被説明変数として、重回帰分析の結果を「bbb」のA1に表示させようとしているのですが、うまくいきません。 ちなみにexcel2007を使っています。

みんなの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

こんにちは。 念の為確認ですが、"分析ツール - VBA"は[アクティブなアプリケーションアドイン]になっていますか? 確認は左上[Officeボタン]-[Excelのオプション]-[アドイン]です。 "分析ツール"がアクティブになっていれば手動操作は可能で、マクロ記録すると Application.Run "ATPVBAEN.XLAM!Regress",... と記録されます。 ですがこれを実行する時は"分析ツール - VBA"がアクティブでないとエラーになります。 (確か2003以前のバージョンも同様だったような?) アクティブにするには同ウィンドウの[設定]で。 VBAなら AddIns("分析ツール - VBA").Installed = True です。

kuma-tokyo
質問者

お礼

ありがとうございます。 すごい初歩的なミスでした。 アクティブにしていたつもりが、ソルバーの方をアクティブにしていたようです。

関連するQ&A

  • 回帰のVBA

    今、1つのブックに複数のシートがあります。 それぞれのシートに対して、Q列を従属変数に、 T列を独立変数にした回帰モデルを推定しよう としています。 しかし、各々のシートのサンプル数が必ずしも 同じ数ではないため、うまくできません。 今は、以下のようなプログラムで、同じサンプル数の シートだけ実行している状態です。 Sub reg() Dim mySht As Worksheet For Each mySht In Worksheets Application.Run "ATPVBAEN.XLA!Regress", mySht.Range("$Q$1:$Q$10"), _ mySht.Range("$T$1:$T$10"), False, True, , mySht.Range("$AB$2") _ , False, False, False, False, , False Next End Sub どのように改良すれば良いのでしょうか? Q列とT列のデータの入っている行(必ず等しくなっています)までをサンプルとしてVBAを実行したいです。 ご存知の方、ご教示頂ければと思います。

  • エクセルで色付けのVBAを作成してるのですが・・。

    エクセルでレンジ値の大きさにより色付けをする(下の条件)VBAを作りたいのですが うまく走りません。お手数とは思いますがご教授お願いします。 シート "aaa" のレンジ "A3<A2<A1" とだんだん大きくなれば、 シート "bbb" のレンジ "B1" の文字を黄色にして、シート "bbb" のレンジ "C1" の文字を赤色へ シート "aaa" のレンジ "A3<A2<A1" とだんだん大きくなれば、 シート "bbb" のレンジ "B1" の文字を緑色にして、シート "bbb" のレンジ "C1" の文字を赤色へ シート "aaa" のレンジ "A3,A1" が空白の場合、シート "bbb" のレンジ "C1" の文字を赤色へ シート "aaa" のレンジ "A3,A2,A1" が上の条件に合わなければ、 シート "bbb" のレンジ "B1" の文字を黒色にし、シート "bbb" のレンジ "C1" の文字を赤色にして終わる。 というようなプログラムで下記のように作りました。 ("A1,A2,A3"に入る値は50~100まで) ----------------------------------------------- Sub 注意() Dim v506Hi, v506Lo, v506a, v506b As Single v506a = Worksheets("aaa").Range("A3") v506b = Worksheets("aaa").Range("A1") If Worksheets("aaa").Range("A3") <> "" Then GoTo Sub1 ElseIf Worksheets("aaa").Range("A1") <> "" Then GoTo Sub1 Else Worksheets("bbb").Range("B1").Font.Color = RGB(0, 0, 0) GoTo sub2 Sub1: Select Case v506a Case Is < Worksheets("aaa").Range("A2") v506Hi = Worksheets("aaa").Range("A2") v506Lo = 0 Case Is > Worksheets("aaa").Range("A2") v506Lo = Worksheets("aaa").Range("A2") v506Hi = 500 Case Is = Worksheets("aaa").Range("A2") v506Hi = 500 v506Lo = 0 End Select Select Case v506b Case Is > v506Hi Worksheets("bbb").Range("b1").Font.Color = RGB(255, 255, 0)黄色 Case Is < v506Lo Worksheets("bbb").Range("b1").Font.Color = RGB(0, 255, 0)緑 Case Else Worksheets("bbb").Range("b1").Font.Color = RGB(0, 0, 0) End Select sub2: Worksheets("bbb").Range("c1").Font.Color = RGB(255, 0, 0)赤 End If End Sub ----------------------------------------------------------- プログラム初心者で間違いだらけとは思いますが、よろしくお願いいたします。

  • おしえて!重回帰分析の独立変数(説明変数)

    重回帰分析の目的変数が、(A+B+C+D)というものとします。 A~Dは、数量データです。 説明変数にAやBなどが入っていたら、それはダメですか? 説明変数X(Aとか)が目的変数Y(A+B+C+D)の一部の構成要素だったら、Xを使って重回帰分析はやったらダメなのですか?

  • 重回帰分析について(緊急)

    重回帰分析について.(緊急) 大学で近赤外スペクトル法を用いた研究をやっています. 解析方法にはPLS回帰分析を使用しており,目的変数を熱電対の温度T,説明変数を各波長の吸光度差スペクトルΔAでとっています. 現在,上記の研究を分光器ではなく近赤外線カメラで行おうと考えています. しかしながら,近赤外線カメラは分光器のように各波長の吸光度差スペクトルΔAを出すことができません(1920nmのΔAのみ). 単回帰分析に変更しようと思っていますが,参考書などを読む限り精度は,単回帰分析<重回帰分析<PLS回帰分析のような気がしてなりません. そこで質問です. ・説明変数は波長1920nmのΔA(以下ΔA(1920))しかありませんが,ΔA(1920)の関数である光強度Iを無理やり説目変数に入れ,重回帰分析を行うことはできるのか?(説明変数に使われている変数の関数をしようすることはできるのか?) ・上記のように説明変数の因子が一つしかない場合でもPLS回帰分析を行うことはできるのか? 以上です.今年から上記の研究を始めたので勉強不足な点もあるかとは思いますがどなたか教えてください. よろしくお願いします.

  • 原点を通る重回帰式の偏回帰係数

    はじめまして。 目的変数に対し、3つの説明変数を持つ資料があり、原点を通る重回帰式をたてたいところです。Excelなど、計算機の機能によって答えはわかっているのですが、式を作る計算過程を説明する資料を作らなければならなくなりました。 Y = aX+ bW + cZ Y: 目的変数 X:説明変数1 W:説明変数2 Z:説明変数3 a,b,c : 偏回帰係数 について、残差平方和 {Σ(Yi - ( aXi + bWi + cZi ))}^2を最小にするa,b,cを求めたいのです。残差平方和に対し、a,b,cで偏微分するといいのだ・・・などという理論は概ねわかりますが、私の数学力では、実際に計算過程を書き表すことができません。 説明変数が2つで、原点を通らない重回帰式の偏回帰係数の計算方法については、たとえば、以下のURLに書き表した例があります。 http://aoki2.si.gunma-u.ac.jp/lecture/Regression/mreg/mreg1.html このような書き表しの例で、説明変数が3つで、原点を通る重回帰式の偏回帰係数の計算方法をご紹介、またはご提示いただけないでしょうか。 どうかよろしくお願いいたします。

  • EXCEL VBA を教えて下さい。

    EXCEL VBA で 業務毎に(A業務、B業務、C業務)、 担当者のメールアドレスを抽出するツールを 作りたいです。 <Sheet1>    A列   B列   C列   D列   E列    氏名  メアド  A業務  B業務  C業務    111   111@aaa   to   cc   bcc    222   222@bbb   cc   bcc  to    333   333@ccc   bcc  to   cc    444   444@ddd   to   cc   bcc もしも、A業務のセルををクリックしたら、、、 Sheet2に下記のように表示するものを作りたいです。 <Sheet2> to:    111@aaa,444@ddd cc:    222@bbb bcc:   333@ccc なんとか下記まで書いてまましたが、知識が未熟な為、行き詰っています。 Sub Macro03() With Worksheets("Sheet1").Range("A1") .AutoFilter Field:=3, Criteria1:="to"   ( B列の対象メアドをカンマで連ねてコピーしたいのですがわからないです) .CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("Sheet2").Range("B2").PasteSpecial Paste:=xlValues, Transpose:=True .AutoFilter End With Worksheets("Sheet2").Activate End Sub VBAの優秀な方、 どうか教えて下さいますよう、宜しくお願い致します。

  • 重回帰分析?

    二つの変数があり、各々従属変数に対して単回帰分析を行うと決定係数が0.5と0.4ぐらいの感じになります。この二つの変数をくっつけてもう少し精度を上げたいのですが、一方は線形なんですが、もう片方が非線形(指数関数)なのです。 たしか、重回帰分析は線形どうしでしかくっつけることができなかったような気がするのですが、どのようにしたらできるでしょうか? 混合モデルとかを使ったらよいのでしょうか??? 理論的に考えると Y=aX1 + bexp(cX2) かY=aX1 + bX1exp(cX2)と思うのです Yが従属変数X1,X2が変数、a,b,cがそれぞれ係数です。 使用できるソフトはSPSS,SAS,mintab,S-plus,R,excelです。Rでのが使い慣れているのでRでできるとよいのですが、できるならどのソフトでもかまいません。

  • VBAについてです。

    VBAについてです。 当方VBA初心者です。初歩的な質問があり投稿しました。 Workbooks("aaaa.xlsx").Worksheets("aaa").Range("A3:A50").Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") というコピーはできるのに Workbooks("aaaa.xlsx").Worksheets("aaa").Range(cells(3, 1), cells(50, 1)).Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") というコピーはどうしてできないのでしょうか? また、最下行を判別して Workbooks("aaaa.xlsx").Worksheets("aaa").Range(cells(3, 1), cells(最下行, 1)).Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") という様に簡単に処理したいのですが、やはり無理なのでしょうか? ブックが違うのですが、これをなんとかこのような処理にしたいと思っています。

  • VBAを実行しても結果が反映されない??

    下記のVBAを作成しましたが結果が反映されません ※実際は反映されているのかもしれませんが思うような結果ではありません やりたいこととしてはボタンを選択すると 特定のシート[BBB]の[B2:D2]を シート[AAA]の最終行と同じ行番号までコピーすることです おかしい個所をご指摘いただきたいです ※同様の質問を他の形でさせていただきましたがうまくいかなかったため新しく組み直したものです --- Private Sub CommandButton_Click() Dim ws As Worksheet Set ws = Worksheets("BBB") Range("B2:D2").Select Selection.AutoFill Destination:=Range("B2:D" & Sheets("AAA").Range("A1").End(xlUp).Row) Range("B2:D" & Sheets("AAA").Range("A1").End(xlUp).Row).Select End Sub

  • Excelでマクロを使いセルの内容をコピー貼り付け

    A1セルに111と入力してあるとします。 この時B1にaaa111aaaと入力するマクロを作りたいです。 A1に222があるとB1はaaa222aaaと入力したいです。 これをマクロで作ったのですが、次のようになり、A1の内容にかかわらず常にaaa111aaaとなってしまいます。 Sub Macro1() Range("A1").Select ActiveCell.FormulaR1C1 = "111" Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Range("B2").Select Application.Goto Reference:="Macro2" End Sub これのいらない行を削除し、コピーはA1の内容となるように修正して次のようにしました。 Sub Macro1() ActiveCell.FormulaR1C1 = Range("A1") Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Application.Goto Reference:="Macro2" End Sub まだペーストするときにA1の内容とならず直接入力となっています。 これをどう変更すればいいでしょうか?