いきなり答える備忘録

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

(Gスプレッドシート)データを1行おきに抽出する

 Googoleスプレッドシートで関数を使い、表から1行おきにデータを抽出した結果を得る方法についてです。

  • FILTER関数とSEQUENCE関数などを使って、表からデータを1行おきに抽出することができます。
  • FILTER関数を用いているので複数の列を抽出することも容易です。

手順

f:id:accs2014:20191231173236p:plain:right:w600

 B2:B8に対象となるデータが並んでいます。
 このうち最初の行と、あとは1行おきにデータを抽出するものとします。

 D2セルに次のように入力します。

=FILTER(B2:B8,ISODD(SEQUENCE(ROWS(B2:B8))))

 SEQUENCE関数により1~7の連番(データの行数と同じ)を生成し、奇数の番号に対応した行を抽出しています。ただし抽出しているのはあくまでB列です。
 この例ではSEQUENCE関数を使わずに「=FILTER(B2:B8,ISEVEN(ROW(B2:B8)))」としても同じ結果になりますが、このようにROW関数を用いるとデータの位置によって奇数番目の行が抽出されるか偶数番目の行が抽出されるかが変わってしまい、ISODD関数とISEVEN関数を切り替える必要が生じるので、SEQUENCE関数とROWS関数を用いることで位置の影響を受けないようにしています。
 

f:id:accs2014:20191231173241p:plain:right:w600

 結果はこのようになります。
 

f:id:accs2014:20191231173247p:plain:right:w600

 FILTER関数を用いているので、複数の列を抽出するのも容易です。
 この例では上記の式のうち「B2:B8」の部分をいずれも「B2:C8」とすることで2つの列を抽出しています。
 式は次のようになります。

=FILTER(B2:C8,ISODD(SEQUENCE(ROWS(B2:C8))))