いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)1列に並んだデータを斜めに並べ直す

 Googleスプレッドシートで、1列に並んでいる値を、関数を使って斜めに並べる方法についてです。ただし式が長く複雑なのでたいていの場合は手作業でやった方が早く、実用性は低いです。

  • 対角行列とVLOOKUP関数を中心とした式により、1列に並んでいるデータを斜めに並べることができます。

手順

 早速ですが結果です。
 B3:B7に並んでいる5つのデータを、D3セルに式を入力することで斜めに並べています。

f:id:accs2014:20200708010110p:plain:w750

 D3セルの式は次のとおりです。

=ARRAYFORMULA(IFERROR(VLOOKUP(SEQUENCE(5)*MUNIT(5),{SEQUENCE(5),B3:B7},2,FALSE),""))

 「SEQUENCE(5)*MUNIT(5)」により「成分が1,2,3…5の対角行列」を生成しています。あとはこの数値をインデックスとしてB3:B7から文字列を参照できればいいのですが、INDEX関数はARRAYFORMULA関数を併用しても効果がないためVLOOKUP関数で代用しています。つまり次の2つの記事で紹介している内容をくっつけただけの応用です。

www.officeisyours.com

www.officeisyours.com

 式が複雑なうえ、空白セル部分に他の値を上書きするとエラーが発生してしまうため値として貼り付け直さないとまともに活用できません。
 結局のところほとんど実用的と思えませんが、参考まで。