いきなり答える備忘録

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

(Gスプレッドシート)2行ずつ上下を入れ替える

 Googleスプレッドシートで、2つの行の上下を入れ替え、その下の2つの行の上下を入れ替え…という作業を関数で行う例についてです。

  • SORT関数とSEQUENCE関数を使って2行ずつ上下の行を入れ替えることができます。

手順

 言葉で表すのが難しいですのでまずは結果を示します。
 画像ではE3セルに式を入力することで、B3:C10に並んでいるデータの最初の2行(3行目と4行目)の上下を入れ替え、次の2行の上下を入れ替え…ということを行っています。

f:id:accs2014:20200706235904p:plain:w750

 E3セルの式は次の通りです。

=SORT(B3:C10,ARRAYFORMULA(SEQUENCE(8)+IF(ISODD(SEQUENCE(8)),1,-1)),TRUE)

 ちょっと長いですが「SEQUENCE(8)+IF(ISODD(SEQUENCE(8)),1,-1)」の部分により「2,1,4,3,6,5…」という数列を生成しています。「SEQUENCE(8)」は1,2,3,4,5,6…となりますし「IF(ISODD(SEQUENCE(8)),1,-1)」は1,-1,1,-1,1,-1…となるのでこれらを足すと2,1,4,3,6,5…となります。
 あとはこれを並べ替えのキーにして表を並べ替えている、というわけです。
 「SEQUENCE(8)」は本来「SEQUENCE(ROWS(B3:B10))」などとするところですが、省略して即値にしています。