使用頻度は高くないが、Excelで行列をいじる機会がある。何に使っているかは内緒。
これまでExcel2019を主に使っていたので、行列演算には配列数式 (CSE数式) を用いていた。
それが10月29日付拙過去記事に書いた通り、こちらの意図でなく2024にアップデートされてしまった。なんでそうなったのか、回避方法はなかったのかは未解決である。
それで、やむなくExcel2024をメイン使いに変更した。別に2024を使わない理由はなかったのだが。
そうしたら、Excel2021からの新機能である「スピル」と行列演算の相性がよく、これまでのCSE数式よりちょっとだけ楽であることに、遅まきながら気づいた。私はなんでもやることが遅い。
以下、そのメモである。
いても少数だと思うが、これを読んで「試してみよう」と思ってくださった人のため、久しぶりにサンプルデータをテキストでアップする。
A,,,B,,,A*B
1,1,*,1,2,=,
1,2,,3,4,,
,,,,,,
B,,,A,,,B*A
1,2,*,1,1,=,
3,4,,1,2,,
,,,,,,
A,,,E,,,A*E=A
1,1,*,1,0,=,
1,2,,0,1,,
,,,,,,
E,,,A,,,E*A=A
1,0,*,1,1,=,
0,1,,1,2,,
,,,,,,
A,,,1/A,,,A*(1/A)=E
1,1,*,,,,
1,2,,,,,
,,,,,,
1/A,,,1/(1/A)=A,,,(1/A)*A=E
,,*,,,=,
メモ帳にコピペしてなんらかのファイル名をつけ、拡張子を.csvに変えて開くと、こんなふうに見えるはず。

もし開けなかったりレイアウトが崩れていたりしたらごめんなさい。たいしたデータは入ってないので、手入力してもらっても手間はそんなに変わらないはずです。
追記:
すみません、「・」と「≠」が文字化けしました。前者は「*」に置き換え、後者は削除しました。
本稿で示すスクリーンショットは、文字化けを置き換える前に撮ったものです。
追記おわり
行列の積の計算 (スピル)
Excel に行列の積の計算をさせるには、関数=MMULT() を使用する。
開いたcsvファイルのセルH2に「=mmult(」と入力し、A2:B3を範囲選択する。

続いて「,」(コンマ) を入力し、D2:E3を範囲選択する。

あとは[Enter]キーを押すだけで、G2:H3に行列積が計算される。

実はこのときに、Excelの「スピル機能」が用いられている。
スピル機能において、直接数式を入力したセル以外の範囲に設定された数式は「ゴースト」と呼ばれ、通常の数式と異なり編集できない。また削除するときは、数式を入力したセルを削除するか、スピルにより数式が設定されたセルを範囲選択して一括削除する必要がある。
また数式をコピー&ペーストするときは、数式を入力したセルをコピーすればスピル範囲が一括してペーストされる。
セルG2をコピーしてG6に貼りつけると、G6:H7に行列積が計算される。これは、行列の積には、一般的に交換法則が成り立たないことの確認でもある。

あらずもがなだが、G10、G14にも貼り付けた。行列と単位行列の積が、元の行列になることの確認でもある。

行列の積の計算 (CSV)
ここまでを、配列書式 (CSV書式) でもやってみる。スピルはExcel2019以前のバージョンでは使えないが、CSV書式はExcel2021以降でも使用可能である。
まず初めに、計算結果が出力されるG2:H3を範囲指定しておく必要がある。ここがスピルとの1つ目の違いである。
次に「=mmult(」と入力し、A2:B3を範囲選択する。

次にagain「,」(コンマ) を入力し、D2:E3を範囲選択する。

最後に[Ctrl]キーと[Shift]キーを押しっぱなしにしながら[Enter]キーを押すと、D2:E3に行列積が計算される。これが[Enter]キーを押すだけのスピルとの2つ目の違いで、「CSV」という名前の由来でもある。

なお数式バーには、数式が{}〔中カッコ〕で囲まれて表示される。
CSVで設定した個々のセルは編集できない。またコピペや移動、削除は選択した範囲の一括のみ可能である。
G6:H7に行列積を計算するには、G2:H3を範囲選択してコピーしG6に貼り付ける。行列の積には、一般的に交換法則が成り立たないことの確認でもある。

G10:H11とG14:H15の、行列と単位行列の積は省略する。
ちょっと長くなったので、前後編に分割しここまでを前編とする。後編は「逆行列編」の予定である。
追記:
csvファイルを上書き保存すると、数式は値に変換され保存されません。
数式を保存したい場合はExcel形式 (拡張子.xlsx) に変換してください。ご存知の方多いと思いますが、念のため。
追記の追記:
後編、書きました。
