- ベストアンサー
エクセルでの行列計算がうまくいきません
よろしくお願いします。 いまエクセルで行列計算をしています。 行列[108(行)×35(列)]とその転置行列[35×108]の積から行列[108×108]を出そうとしているのですがうまくいきません。 #valueエラーがでます。 関数mmultを使用しています。 転置行列は関数transposeを使いました。 [35×108]・[108×35]=[35×35]ではちゃんとでるのですが、108×108ではだめなので、元データには問題はないと思います。 一体何がエラーの原因として考えられるのでしょうか。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
行数、列数に矛盾が無いという仮定で... 配列の要素の数5458が限界だそうです。 ●Excel2002だと.. 正方行列の2乗で実験 73×73=5329 =MMULT(A1:BU73,A1:BU73)...○ 74×74=5476 =MMULT(A1:BV74,A1:BV74)...#VALUE! ●ただし、2007は上限が上がっているようです。 108×108でもエラーになりません。 =MMULT(A1:DD108,A1:DD108)...○
その他の回答 (1)
- n_na_tto
- ベストアンサー率70% (75/107)
●追記です。 Excel2003以前で A1:DD108の範囲の108×108の 正方行列の2乗を求めるときは、 SUMPRODUCT関数、TRANSPOSE関数、複合参照 の3つの組み合わせでできます。 結果を表示したい範囲の一番左上のセルに =SUMPRODUCT($A1:$DD1,TRANSPOSE(A$1:A$108)) としてCtrl+Shift+Enter同時押し。 そして左方向108列までフィルコピー、 下方向108行までフィルコピー。 ●一般には、一番左上のセルは =SUMPRODUCT(一方の行列の1行目範囲[アルファベットに$], TRANSPOSE(もう一方の行列の1列目範囲[数字に$]))
お礼
ありがとうございました。 2002を利用しているのでどうやらご回答のとおり、配列要素の限界をオーバーしていることが原因のようです。 助かりました。