Excelで〇行おき、n行おきにデータを抽出する計算式
Excelでは、大量のデータから特定のパターンに基づいてデータを抽出することがよくあります。ここでは〇行おき、n行おきにデータを抽出する方法を解説します。2行おき、3行おき、4行おき……、といった取り出しができるようになります。この方法は、ROWS関数、FILTER関数、SEQUENCE関数、MOD関数を組み合わせて実現します。
この計算式では「範囲(配列)」と「n(ステップ数)」のみの指定で抽出が完了します。
数式の構造
n行おき抽出の基本式
基本式は以下の通りとなります。
=FILTER(配列,MOD(SEQUENCE(ROWS(配列)),ステップ数)=1)
引数「配列」の出現を1度にする場合は以下の式となります。
=LET(_Range,配列,_Step,ステップ数,FILTER(_Range,MOD(SEQUENCE(ROWS(_Range)),_Step)=1))
具体例をみましょう。範囲・配列を「A2:B25」、4ステップごとに行を抽出する場合は以下のいずれかの式となります。
=FILTER(A2:B25, MOD(SEQUENCE(ROWS(A2:B25)), 4) = 1)
=LET(_Range,A2:B25,_Step,4,FILTER(_Range,MOD(SEQUENCE(ROWS(_Range)),_Step)=1))
練習用サンプル表
年度 | 四半期売上 |
---|---|
2008 | 36600 |
31100 | |
22100 | |
34800 | |
2009 | 29000 |
45600 | |
14500 | |
27200 | |
2010 | 39100 |
23500 | |
37000 | |
27500 | |
2011 | 27800 |
14400 | |
37600 | |
9100 | |
2012 | 21200 |
15000 | |
36800 | |
29800 | |
2013 | 44700 |
48000 | |
11300 | |
39600 |
具体例からの数式解説・4行おきに抽出する
=FILTER(A2:B25, MOD(SEQUENCE(ROWS(A2:B25)), 4) = 1)
この数式の構造を順に解説していきます。
データ範囲の指定
A2:B25
は、抽出対象のデータ範囲です。この範囲内のレコードから抽出を行います。
抽出ステップ数の指定
数式内の4
は、抽出する行のステップ数を指定しています。この例では4行おきにデータを抽出します。
ROWS関数
ROWS(A2:B25)
データ範囲の高さをROWS関数で調べます。この範囲は24行の高さです。
SEQUENCE関数
SEQUENCE(ROWS(A2:B25))
SEQUENCE関数は、データ範囲の行数に基づいて連続した数値の配列を生成します。例えば、範囲が24行の場合、{1, 2, 3, ..., 24}
という配列を生成します。
MOD関数
MOD(SEQUENCE(ROWS(A2:B25)), 4)
MOD関数は、SEQUENCE関数で生成された配列の各要素を4で割った余りを計算します。これにより、4行ごとの行番号を特定できます。結果として{1, 2, 3, 0, 1, 2, 3, 0, ...}
という配列が生成されます。
FILTER関数(完成)
=FILTER(A2:B25, MOD(SEQUENCE(ROWS(A2:B25)), 4) = 1)
FILTER関数は、指定された条件に一致するデータを抽出します。どのような条件とするかは、引数「含む」へセットします。上記の例では引数「含む」へMOD(SEQUENCE(ROWS(A2:B25)), 4) = 1
という条件をセットし、一致する行を抽出します。これは、余りが1の行(各ステップの先頭)を意味します。
この方法により、指定された範囲から任意のステップ数おきにレコードを抽出できます。簡潔で読みやすい数式を使用することで、データの抽出を効率的に行うことができます。
コメント