VBAについて調べても原因がわからなかったため質問です。
エクセルで統計処理をする先人が書いたコードが動かないため、デバッグしています。
OSはWindowsXP、エクセルは2007です。
先人が作成していた環境はわかりませんが、5年前に書いたようです。
この時点であきらめろよという話ですが、そうもいかない状況なので一つお付き合いください。
下記の関数の挙動がおかしいです。
Sub 標本入力()
・・・・省略・・・
If ActiveSheet.Name = "連鎖独立グラフ" Then
連鎖独立シート初期化 3
Else
・・・・省略・・・
Range("C301").Select
Selection.PasteSpecial Paste:=xlValues
独立シート初期化 3
End If
Application.CutCopyMode = False
Cells(11, 3).Select
End
Sub 独立シート初期化(n) 'nは相関行列の変数の個数
ActiveWorkbook.Names.Add Name:="母相関", RefersTo:=Range(Cells(51, 4), Cells(50 + n, 3 + n))
ActiveWorkbook.Names.Add Name:="偏相関", RefersTo:=Range(Cells(101, 4), Cells(100 + n, 3 + n))
ActiveWorkbook.Names.Add Name:="相関残差", RefersTo:=Range(Cells(151, 4), Cells(150 + n, 3 + n)
・・・・省略・・・
Range("母相関").FormulaArray = "=標本相関-相関残差-TRANSPOSE(相関残差)"
Range("偏相関").FormulaArray = "=-逆行列/SQRT(対角*TRANSPOSE(対角))" '★この行を処理していない!!
Range("逆行列").FormulaArray = "=MINVERSE(母相関)"
・・・・省略・・・
End
★のついたコメントの前の行にさしかかると、それ以降の処理が無視されて標本入力()の処理に戻り、Ifを抜けて「Application.CutCopyMode = False」以降の処理にかかってしまいます。
デバッグしたところ、どうもFormulaArrayがあると処理を無視してしまうようです。しかしエラーは出てこないので、どう改善していいかがわかりません…他の関数で利用されているFormulaArrayはどうも正常に動いているようなのです。
参照設定はデフォルトの状態からSOLVERのみ追加しており、シートの保護はかけていません。
ど素人なので、不明な情報がありましたら追記致します。どうか、御教示頂けると幸いです。
No.1ベストアンサー
- 回答日時:
>どう改善していいかがわかりません
再現性が取れないので、質問内容では、正確な原因は分かりません。
あくまでも想像の範囲は越えません。
まず、「逆行列」の名前の定義のコードは、たぶん、省略してしまったのでしょうね。
ご質問上のコードでは、唐突に出てきているように見えます。
いずれにしても、逆行列のマトリックス(=計算表)がシート上に置いてあるのでしょうから、私は、そのコードの再現性を試すことは出来ませんが、ExcelのMinversの逆行列は、サイズが非常に小さかったと思います。その逆行列の計算は、手動で値が出るのでしょうか?(数式のセルにカーソルを乗せ、F2で開けて、再度、Shift+Ctrl - Enterで、配列確定をすれば出るはずです)
一度、手動で試してみたほうがよいです。
正直なところ、Excelの関数を使ってでは、大したことは出来ないはずです。コードとして、FormulaArray は問題ありません。
それと、私の悪い想像だけであってほしいのですが、サブ・プロシージャ上で、ActiveWorkbook.Names.Add という使い方をしていますが、VBAでは、Namesのプロパティが二重の登録になりかねません。本来は、二重登録などありえないことです。なぜ、トラブルが起こるのか正確な理由は分かりません。
私の推測では、Namesの親オブジェクトが、シート、ブック、アプリと何種類もあるということが問題点です。コードとしては、論理的には正しいのですが、実務的には、そのVBAのコードは、トラブルが出やすいのではないかと思います。できれば、名前の定義登録のように、ひとつのブックで1回限りのようなメソッドは、手動でやったほうがよいのです。
もし、範囲指定が、その都度変わるなら、名前の定義登録だけのマクロを置いたほうがよいです。
そうでなかったら、単に、Rangeプロパティに、パラメータとして範囲を入れてあげたほうが、簡単だと思います。
コンピュータ用語が多いので、文章が分かりにくかったらすみません。
情報少ないのにご回答頂いてありがとうございます。あまりに長いコードでして、省略せざるを得えませんでした。ご指摘頂いたところをもう少し考えてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
相関係数と有意差
-
相関分析で困ってます;統計初...
-
SQLの副問い合わせと相関副問い...
-
相関係数Rの2乗について
-
相依相関の読みと意味を教えて...
-
共分散行列の逆行列について
-
有意差をだすための統計処理に...
-
質的データと量的データの相関...
-
相関係数の計算について質問で...
-
質的・量的データの相関分析に...
-
統計問題
-
相関の表現について(高い、強い?)
-
二つのデータの波形が似てるか...
-
決定係数がマイナスになる例っ...
-
切片あり回帰と切片なし回帰
-
ある1点で傾きが急激に変化する...
-
回帰式と近似式について
-
サンプル数の違うものの比較
-
原点強制通過させたときの相関係数
-
2つのDataTableをJoin
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
統計問題
-
相関の表現について(高い、強い?)
-
相関係数Rの2乗について
-
SQLの副問い合わせと相関副問い...
-
相依相関の読みと意味を教えて...
-
相関係数と有意差
-
ダミー変数での相関係数の算出...
-
質的データと量的データの相関...
-
一次独立の問題
-
散布図の近似曲線の傾きがマイ...
-
信号長が2の累乗以外のFFTがや...
-
変数AとBは相関あり、BとCも相...
-
バイスペクトル解析って何ですか?
-
【統計】「相関係数の有意性の...
-
相関係数って
-
主成分分析における出発行列の...
-
次の1次従属と1次独立の説明を...
-
相関を求める時の、はずれ値の...
-
フィボナッチ数列と369の相関関...
-
影響の大きさを統計学的に計算...
おすすめ情報