いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)成分が0と1だけの三角行列を生成する

 Googleスプレッドシートで、0か1の成分だけからなる上三角行列と下三角行列を作る方法についてです。

  • SEQUENCE関数と大小比較を利用して三角行列を生成できます。

手順

f:id:accs2014:20200112153631p:plain:right:w500

 B2を左上端とする上三角行列と、B8を左上端とする下三角行列を生成するものとします(いずれも5行5列)。

 B2とB8にそれぞれ次のような式を入力します。

 B2セル(上三角行列)

=ARRAYFORMULA(IF(SEQUENCE(5)<=SEQUENCE(1,5),1,0))

 5行1列の連番(1~5)と1行5列の連番(1~5)を比較して1と0を出力します。
 この記し方で5行5列にわたって値が展開されます。

 B8セル(下三角行列)

=ARRAYFORMULA(IF(SEQUENCE(5)>=SEQUENCE(1,5),1,0))

 上記の式の不等号の向きを逆にしただけで、あとは同じです。
 

f:id:accs2014:20200112153635p:plain:right:w500

 結果はこうなります。
 なお、対角成分を0にする場合はそれぞれの式の等号を削ります。

 また、SEQUENCE関数の部分は{1,2,3,4,5}のように1から始まる配列だけでなく{2,3,4,5,6}でも{2,3,5,7,9}でも、一方的に増加していく配列になっていれば問題ありません。よって、ある行列のサイズに合わせた三角行列を作成する場合はSEQUENCE関数の部分をROW関数(例えば「ROW(B2:B6)」など)やCOLUMN関数に入れ替えればOKです。

 この行列の応用例としては「累計を求める」というものがあります。
 詳しくは次の記事で紹介しています。

www.officeisyours.com