プロが教える店舗&オフィスのセキュリティ対策術

よろしくお願いします。

いまエクセルで行列計算をしています。
行列[108(行)×35(列)]とその転置行列[35×108]の積から行列[108×108]を出そうとしているのですがうまくいきません。
#valueエラーがでます。

関数mmultを使用しています。
転置行列は関数transposeを使いました。

[35×108]・[108×35]=[35×35]ではちゃんとでるのですが、108×108ではだめなので、元データには問題はないと思います。

一体何がエラーの原因として考えられるのでしょうか。
よろしくお願いします。

A 回答 (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)...○
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/30 19:56

●追記です。


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列目範囲[数字に$]))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!