• ベストアンサー

エクセルでの行列計算がうまくいきません

よろしくお願いします。 いまエクセルで行列計算をしています。 行列[108(行)×35(列)]とその転置行列[35×108]の積から行列[108×108]を出そうとしているのですがうまくいきません。 #valueエラーがでます。 関数mmultを使用しています。 転置行列は関数transposeを使いました。 [35×108]・[108×35]=[35×35]ではちゃんとでるのですが、108×108ではだめなので、元データには問題はないと思います。 一体何がエラーの原因として考えられるのでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.1

行数、列数に矛盾が無いという仮定で... 配列の要素の数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)...○

bernouilli
質問者

お礼

ありがとうございました。 2002を利用しているのでどうやらご回答のとおり、配列要素の限界をオーバーしていることが原因のようです。 助かりました。

その他の回答 (1)

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.2

●追記です。 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列目範囲[数字に$]))

関連するQ&A

専門家に質問してみよう