【保存版】スプレッドシートで配列や行列を作成する方法まとめ

array-matrix-creation

SPONSORED LINK

こんにちは、スプレッドシートが大好きなたぬ(@KAivlys)です!

配列や行列という言葉を聞くだけで、理系脳が燻られますね!笑

スプレッドシートで配列や行列について書かれている記事がなかったので、まとめました。

今回は、スプレッドシートで配列や行列を作成する方法を紹介します。

注意書き

「なぜ、スプレッドシートで配列や行列を使うのか?」という質問は、この記事の理解の範疇を超えているので割愛させてください。

スプレッドシートで配列や行列を使うメリットは多いにあります。ですが、その内容に関しては別記事にまとめるので、そちらをご覧ください。

この記事では、あくまでスプレッドシートで配列や行列の作成方法だけを紹介します。あしからず。

1次元配列

1次元配列とは、1行n列で表される行列のことを言います。

,(カンマ)を使う

array-matrix-creation1

={1,1,1,1}
1行3列の1次元配列
={a,b,c}
a,b,cは文字列でも可。ただし、行列の計算はできなくなる。

スプレッドシートでは、数式内に{}を使用して配列を作ることが出来ます。

,(カンマ)で値を区切ると、カンマごと値が新しい列に配置されるようになります。

関数を使う

スプレッドシートでは、{}以外にも関数を使用して、無理やり1次元配列を作成することも出来るんですよ!

今回は2種類の方法を紹介します。

①ARRAYFORMULA関数とCOLUMN関数を組み合わせる

array-matrix-creation2

=ARRAYFORMULA((COLUMN(A1:D1)))
使う関数のおさらい
  1. ARRAYFORMULA関数:配列数式を作成する関数
    スプレッドシートの『ARRAYFORMULA』関数を使って表示速度を高速化させよう!check
  2. COLUMN関数:対象の列番号を取得する関数

②REPT関数とSPLIT関数の合わせ技

array-matrix-creation3

=SPLIT(REPT("1,",4),",")
使う関数のおさらい
  1. REPT関数:テキストを任意の数繰り返す関数
  2. SPLIT関数:テキストを決められた文字列で分割する関数

2次元配列

2次元配列とは、配列の中に配列が入っている配列のことを言います。

;(セミコロン)を使う

array-matrix-creation4

={{1,1,1,1};{1,1,1,1};{1,1,1,1};{1,1,1,1}}

;(セミコロン)で1次元配列を区切ると、セミコロンごとに1次元配列が新しい行に配置されるようになります。

正方行列を作成する

正方行列とは、n×nで表される縦と横の要素数が等しい行列です。

ちなみに先程の例も4行4列の正方行列になっています。

={{1,1,1,1};{1,1,1,1};{1,1,1,1};{1,1,1,1}}

次は関数を使って、正方行列を作成する方法を紹介します。

関数で正方行列を作成する

array-matrix-creation5

=ARRAYFORMULA((ROW(A1:A4)*COLUMN(A1:D1)))

正方行列は2次元配列なので、横に加えて高さが追加されます。

1次元配列がARRAYFORMULA関数とCOLUMN関数を使って表現できたので、2次元配列ではそこにROW関数(縦成分)を追加すればいいです。

ROW関数のおさらい
  • ROW関数:対象の行番号を取得する関数
  • 要素が全て1の正方行列を作成する

    先程、関数で正方行列を作成する方法を紹介しました。

    ですがこのままだと、計算に使うのには少し不向きなので、要素がすべて1の正方行列を作ってみます。

    array-matrix-creation6

    =ARRAYFORMULA((ROW(A1:A4)*COLUMN(A1:D1))^0)

    すべての要素を0乗して、要素が全て1の正方行列を作成することが出来ました。

    [応用]特殊な2次元配列

    このセクションでは大学の線形代数で習う、少しマニアックな行列について紹介します。

    (今は高校数学で習うみたいですね!僕はゆとり真っ只中だったので、大学時代に習いました)

    逆行列を作成する

    array-matrix-creation7
    逆行列の定義
    与えられたn次正方行列Aに対して右から掛けても左から掛けても単位行列Eとなるような行列をAの逆行列といい,A-1で表す

    スプレッドシートで逆行列を表示させるためには、MINVERSE関数を使います。

    array-matrix-creation8

    =MINVERSE(A1:B2)
    MINVERSE関数
    =MINVERSE(正則行列)

    正則行列:det(A)≠0を満たす正方行列

    単位行列を作成する

    array-matrix-creation9
    単位行列の定義
    任意のn次正方行列Aに対して右から掛けても左から掛けてもAとなるような行列を単位行列という
    array-matrix-creation11

    単位行列の具体例

    しかし、スプレッドシートでは単位行列を出してくれる関数は存在しません(※2018年10月6日現在)

    なので先程求めた、逆行列を使って単位行列を導き出す必要があります。

    array-matrix-creation10

    つまり単位行列は、行列Aと逆行列Aの内積で求めることが出来ます。

    内積計算する関数
    =MMULT(行列1,行列2)
    =MMULT(行列A,逆行列A)
    =単位行列E
    array-matrix-creation12

    転置行列

    array-matrix-creation13
    転置行列の定義
    m行n列の行列Aに対して、Aの(i,j)要素と(j,i)要素を入れ替えたn行m列の行列、つまり対角線で成分を折り返した行列のことである

    スプレッドシートで転置行列(行と列の入れ替え)を求める関数は、TRANSPOSE関数です。

    TRANSPOSE関数
    =TRANSPOSE(行列)
    array-matrix-creation14

    =TRANSPOSE(A1:C2)

    さいごに

    今回は、スプレッドシートで配列や行列を作る方法を紹介しました。

    あえて配列や行列を使うメリットは紹介していませんが、その内容は後日、ということで…。

    それでは。

    SPONSORED LINK

    array-matrix-creation

    Time Ticketはじめました
    実務で即戦力になるためのスプレッドシート講座開講!

    記事を読んでも、よく分からなかった人やもっと深く知りたい人はこちらからご連絡ください。

    ブログ特典!!

    『クーポンコード:9876』とメッセージいただければ、どのレベルのコースでも初級コースと同じ価格で教えます!!

    スプレッドシートをより深く学んで、実務で即戦力になりませんか?

    ABOUTこの記事を書いてる人

    たぬ(谷口健太)

    25歳社会人。本職は福岡の通販会社でWebマーケッターやっとります。 プログラミング✕マーケティング=最強説を唱えており、非効率的な世の中に革命を起こそうと本ブログを設立。 ストレングスファインダー:戦略性・最上志向・目標志向・未来志向・個別化