「excel 行飛ばし 抽出」
「エクセル 等間隔 抽出」
「エクセル 数個飛ばし データを抜き取る」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが割とあります。
大量のデータがあるときに、n行ごと・n行おきにデータを抽出するには、どうすればいいのかを調べていた方による検索です。
INDEX関数とROW関数を使った式をオートフィルするのが定番の方法でしたが、最近のExcelで使えるFILTER(フィルター)関数を使うと、
こういった処理も簡単です。
FILTER関数でn行おきにデータを抽出するサンプル
A1:A26セルに大文字のアルファベットが入力されているときに、FILTER関数でデータを抽出する例をご紹介します。
※A1:A26セルに入力されているデータから5行おきにデータを抽出し、C1セルから下方向に出力する例
C1セルに
=FILTER(A1:A26, MOD(ROW(A1:A26), 5)=1)
と入力する
A1:A26セルにAからZが入力されているときに、上記の式を入力するだけで下図のように抽出されます。
入力する式を、
=FILTER(A1:A26, MOD(ROW(A1:A26), 5)=2)
とした場合には、下図のように抽出されます。
FILTER関数の第2引数には論理値の配列を指定
FILTER関数の第1引数には、元データを指定すればいいので特に難しくはありません。
第2引数がポイントです。
FILTER関数の第2引数には、論理値の配列を指定し、第1引数に指定された元データからTRUEの部分だけをフィルタリングしてくれます。
上記サンプルの「MOD(ROW(A1:A26), 5)=1」の部分を精読しましょう。
ROW(A1:A26)
まず、「ROW(A1:A26)」は、A1:A26セルの行番号を取得するための式です。
D1セルに「=ROW(A1:A26)」を入力すれば、下図のように1から26の整数が出力されます。
MOD(ROW(A1:A26), 5)
次に、「MOD(ROW(A1:A26), 5)」は、行番号を5で割り算した余りを計算する式です。
E1セルに「=MOD(ROW(A1:A26), 5)」を入力すれば、下図のように5で割り算をした余りの0から4の整数が繰り返し出力されます。
MOD(ROW(A1:A26), 5)=1
「MOD(ROW(A1:A26), 5)=1」は、5で割り算した結果を1と比較しています。
F1セルに「=MOD(ROW(A1:A26), 5)=1」を入力すれば、下図のように5で割り算した余りと1とを比較した結果の論理値が出力されます。
このTRUEに該当するデータを、FILTER関数の第1引数に指定されたデータから抽出しているというわけです。
Home » Excel(エクセル)の関数・数式の使い方 » 検索・行列 » FILTER関数でn行ごとにデータを抽出する