Home » Excel(エクセル)の関数・数式の使い方 » 検索・行列 » FILTER関数でn行ごとにデータを抽出する

FILTER関数でn行ごとにデータを抽出する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2207 ビルド15427.20210 Microsoft Store)

「excel 行飛ばし 抽出」
「エクセル 等間隔 抽出」
「エクセル 数個飛ばし データを抜き取る」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが割とあります。

大量のデータがあるときに、n行ごと・n行おきにデータを抽出するには、どうすればいいのかを調べていた方による検索です。

INDEX関数とROW関数を使った式をオートフィルするのが定番の方法でしたが、最近のExcelで使えるFILTER(フィルター)関数を使うと、

こういった処理も簡単です。

[スポンサードリンク]

FILTER関数でn行おきにデータを抽出するサンプル

A1:A26セルに大文字のアルファベットが入力されているときに、FILTER関数でデータを抽出する例をご紹介します。

▼操作概要:5行おきにデータを抽出する
※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行ごとにデータを抽出する

「検索・行列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.