Excelの散布図が動く!MMULT関数と行列計算で図形を回転させる数式

Excelの散布図が動く!MMULT関数と行列計算で図形を回転させる数式 数学・アルゴリズム実験室

はじめに:Excelを数学のキャンバスにしよう

はじめに、皆さんはExcelのグラフ機能を「データの可視化」に使っていますか。

今回は、Excelの散布図といくつかの数式を使って、画面上の図形をクルクルと回転させる遊びをご紹介します。

Excelの説明画像

図形を回転させる」と聞くと、なんだか難しそうに聞こえるかもしれません。

しかし、中身は高校数学の「三角関数」や「行列」といった初歩的な範囲の知識です。

理系出身の方には常識レベルかもしれませんが、数学に苦手意識がある方でも大丈夫です。
Excelの数式を使えば、難しい計算はすべてパソコンがやってくれます。

数学の知識が視覚的な動きに変わる面白さ。
それをぜひ体験してみてください。

本記事では、無料のWeb版Excelを使用して検証を行っています。
Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!


ステップ1:Web版Excelの制限をハックする

図形を回転させるには、まず「何度回転させるか(角度)」を入力する仕組みが必要です。
デスクトップ版のExcelなら「スピンボタン」という便利な機能があります。

Excelの説明画像

ポチポチ押すだけで数値を増減できる、おなじみのボタンですね。

しかし、無料のWeb版Excelにはスピンボタンも、Officeスクリプトもありません。
もちろん、VBA(マクロ)を使って自動化することも不可能です。

そこで、作業列に文字を入力することで角度を加算する、というハックを用います。

関数の詳細な仕様については、Microsoft公式のヘルプも参考にしてください。

A1セルにDEGREES(角度)と入力し、B1セルに以下の数式を入力してください。

=SUM(15 * ((J:J) <> ""))

【解説】

これは「J列に何かしらの文字が入力されているセルの数を数え、それに15を掛ける」という数式です。

つまり、J列に「1」でも「あ」でも何か入力するたびに、B1セルの値が15ずつ増えていきます。

もし10度ずつ回転させたければ、数式の15の部分を10に変更すればOKです。

Excelの説明画像

ステップ2:角度を「ラジアン」に変換する

次に、A3セルにRADIANSと入力し、B3セルに以下の数式を入力します。

=RADIANS(B1)

Excelの説明画像

【解説】

私たちが普段使う角度(360度で1周)は「度数法」と呼ばれます。

しかし、Excelに搭載されているSINCOSといった三角関数は、この度数法を直接計算してくれません。

三角関数に渡す数値は、必ず「弧度法(ラジアン)」という単位に変換する必要があります。

RADIANS関数は、度数をラジアンに変換してくれる専用の関数です。

これで三角関数を使うための下準備が整いました。


ステップ3:魔法の箱「回転行列」を作る

続いて、座標を回転させるための「魔法の箱」を作ります。
B5セルからC6セルの2×2の範囲に、以下の数式を入力してください。

B5セル:=COS(B3)
B6セル:=SIN(B3)
C5セル:=-SIN(B3)
C6セル:=COS(B3)

Excelの説明画像

【解説:回転行列とは?】

これは数学の世界で「2次元の回転行列」と呼ばれるものです。
ある点 (X,Y)(X, Y)の座標を、原点を中心に角度 θ\thetaだけ回転させたいとき、以下の行列を使います。

(cosθsinθsinθcosθ)\begin{pmatrix} \cos\theta & \quad -\sin\theta \\ \sin\theta & \quad \cos\theta \end{pmatrix}

この4つの数式で作られたブロックを、元の座標に掛け合わせます。

すると、計算結果が「回転した後の新しい座標」にすり替わる、まさに魔法のようなロジックなのです。


ステップ4:散布図で描く図形の座標を定義する

それでは、回転させるための図形を描いていきましょう。
A11:C16の範囲に、以下のように文字と数値を入力してください。

A11:C11 → 空白, X, Y
A12:C12 → A, 0.5, 1.5
A13:C13 → B, -0.5, -0.5
A14:C14 → C, 0.5, 1.3
A15:C15 → D, 1.5, -0.5
A16:C16 → E, 0.5, 1.5

Excelの説明画像

【解説】

散布図とは、X座標とY座標の交点に点を打ち、それらを線で結ぶグラフのことです。
今回は、回転がわかりやすいように「矢印の先っぽ」のような形にしてみました。

ポイントは、最後のE点の座標を最初のA点と全く同じにしていることです。
一筆書きの要領で元の位置に戻してあげないと、図形が閉じた線になりません。

Excelの説明画像

もっと複雑な図形で試したい人は、行をどんどん増やして座標を繋げてみてください。

散布図に関しては、以下の記事で詳しく解説しています。

Excelグラフは「お絵かきツール」だ!散布図で正多角形や螺旋を描く方法


ステップ5:MMULT関数で一気に座標を回転させる

いよいよ、一番の山場である「回転後の座標」の計算に入ります。

B18セルにX、C18セルにYと入力します。

A19:A23の範囲には縦にAからEまでを入力しておきましょう。

そして、B19セルに以下の数式を入力し、B23セルまで下にフィルコピーします。

=TRANSPOSE(MMULT($B$5:$C$6, TRANSPOSE(B12:C12)))

Excelの説明画像

【解説:MMULT関数の真の姿】

当ブログでも何度か扱ってきたMMULT関数(行列の積)ですが、その多くは無駄な遊びでの使用でした。

例えば、以下の記事。
Excelで行列計算を学ぼう!掛け算と足し算だけで「順位」や「最大値」を導く数学パズル

しかし、今回の処理こそが、MMULT関数が最も威力を発揮する本来の舞台です。

解説:なぜ行列を掛けると回転するのか?(アフィン変換)

そもそも「アフィン変換」とは、図形に対して「回転」「拡大・縮小」「平行移動」などを施す、幾何学および線形代数における強力な数学的手法です。

今回はその中の「原点を中心とした回転」のみを抽出して行っています。

なぜ回転行列を掛けると座標が回るのでしょうか。

それは、元の座標(X,Y)(X, Y)に対して、三角関数(cos\cos, sin\sin)を用いた以下の連立方程式を解いているのと同じだからです。

  • 新しいX座標 = X×cosθY×sinθX \times \cos\theta – Y \times \sin\theta
  • 新しいY座標 = X×sinθ+Y×cosθX \times \sin\theta + Y \times \cos\theta

この方程式をすべての座標に対して個別に計算するのは非常に面倒ですよね。

そこで、この計算ルールをコンパクトなブロックに「パッケージ化」したものが「行列」なのです。

そして、その計算を一瞬で終わらせてくれるのがMMULT関数というわけです。

この数式で行っている具体的な処理を順を追って説明します。

具体的な処理

1. TRANSPOSE(B12:C12)

まず、元の座標(横並びの1行2列)を縦並び(2行1列)に変換します。

なぜなら、行列の掛け算には「2×2の行列には、2×1の行列(縦並び)しか掛けられない」という次元のルールがあるためです。

計算しやすい向きに直しているのですね。

2. MMULT($B$5:$C$6, ...)

ステップ3で作った魔法の箱「回転行列(2行2列)」と、縦になった座標を掛け合わせます。
これで、見事に回転後の新しい座標が計算されました。

3. 最初の TRANSPOSE(...)

最後に、計算結果(縦並び)を再び横並びに戻して、B列とC列の2つのセルに綺麗に収めています。

※下の画像ではDEGREES30にしています。

Excelの説明画像

ステップ6:グラフ化して、いざ回転!

計算結果が出揃いました。

回転前の座標(B12:C16)と、回転後の座標(B19:C23)は、現時点では全く同じ数値になっているはずです。(B1の角度が「0」だからですね)

Excelの説明画像

それでは、B19:C23の範囲を選択して、挿入タブから「散布図(直線)」を挿入してください。

Excelの説明画像

グラフの横軸縦軸の書式設定を開き、最小値を-2、最大値を2に固定します。

Excelの説明画像

こうすることで、図形が回転してもグラフの枠が動かず、綺麗に回って見えます。

では、J列のセル(例えばJ1)に1と入力して確定してみてください。

B1セルの値が「15」になり、グラフ上の矢印が原点を中心に反時計回りに15度回転しましたね!

Excelの説明画像

J2、J3、J4…と次々に入力していくと、図形が15度ずつアニメーションのように回転していきます。

ちなみに、時計回りに回転させたければ、B1セルの数式を=SUM(-15 * ((J:J) <> ""))のように、マイナスに変更するだけです。


最後に:これができると何がいいのか?

最後に、Excelで図形を回して遊ぶことにどんな実務的価値があるのかを考えてみましょう。

もちろん、明日の業務で図形を回す仕事は発生しないでしょう。

しかし、ここで使ったロジックは非常に強力です。

  1. 複雑な問題の分解能力
    「図形を回す」という視覚的で複雑な問題を、「角度の取得」「ラジアン変換」「行列計算」という細かなステップに分解して実装しました。

    この論理的思考は、複雑な業務要件をシステムに落とし込む際の考え方そのものです。
  2. 高度な配列操作の理解
    TRANSPOSEMMULTを使ってデータの次元(縦横の形)を合わせる技術は、大量のデータ分析に直結します。

    複数条件が絡み合うクロス集計や、多次元配列を扱う高度な計算において、この経験が必ず生きてきます。
  3. 制限された環境でのハック力
    「スピンボタンがないから諦める」のではなく、「文字の入力数で代用する」という発想の転換。

    これこそが、与えられた環境で最大の成果を出すためのITリテラシーの真髄です。

Excelはただの表計算ソフトではなく、アイデア次第でどんなものでも表現できるキャンバスです。

ぜひ、あなただけの複雑な図形を作って、自在に回転させてみてください!

タイトルとURLをコピーしました