FILTER関数などで作成されるスピル範囲に応じた連続番号を生成する方法

Excelでスピル範囲に応じた連続番号を簡単に生成する方法

Excelのスピル機能は、条件に基づいたデータを動的に表示する際に非常に便利です。しかし、これらのデータに対して連続番号を割り当てる必要がある場合、どのようにすれば良いでしょうか?この記事では、スピル範囲の高さに応じて連続番号を生成する簡単な方法を紹介します。

スピル範囲とは

スピル範囲とは、ExcelのFILTER関数SORT関数などが生成する動的なデータ範囲のことです。これらの関数は、条件に基づいてデータを自動的にフィルタリングし、結果を隣接するセルに「スピル」し配列を作成します。

例えば下図のH2へ入力されている式を見てみましょう。これは左の「テーブル乙」の5列目が「有」であるレコードを抽出して表示するスピル式です。結果はH2以外へもこぼれています。

=FILTER(テーブル乙,テーブル乙[列5]="有")

連続番号の生成

スピル範囲の高さに応じた連続番号を生成するには、SEQUENCE関数を利用します。SEQUENCE関数は、指定した数の連続する数値を生成するための関数です。またROWS関数はスピル範囲の高さを調べています。

式の構造

連続番号を生成するための式は次のようになります。この式により、連続番号は1列分の幅で1ずつ増加します。

=SEQUENCE(ROWS(スピル式), 1, 初期値, 1)
  • ROWS(スピル式):スピル範囲の行数を計算します。
  • 初期値:連続番号の開始値を指定します。

式の使用例

たとえば、FILTER関数によって生成されたスピル範囲がある場合、その範囲に対応する連続番号を生成するためには、以下のような式を使用します:

=SEQUENCE(ROWS(FILTER(範囲, 条件)), 1, 1, 1)

この式は、FILTER関数によって抽出されたレコードの数に応じて、1から始まる連続番号を生成します。

具体的なイメージ

上図のH2へセットしたスピル式:FILTER(テーブル乙,テーブル乙[列5]="有") をROWS関数で囲めばスピル範囲の高さがわかります。

=ROWS(FILTER(テーブル乙,テーブル乙[列5]="有"))

さらにそれをSEQUENCE関数で囲み、1列・1から・1ずつとすれば以下の式になりますね。これで元のスピル式の範囲の高さに対応した連続番号となります。

=SEQUENCE(ROWS(FILTER(テーブル乙,テーブル乙[列5]="有")),1,1,1)

連続番号のとなりに最初の式:=FILTER(テーブル乙,テーブル乙[列5]="有") をセットすれば下図のようになります。

まとめ

SEQUENCE関数を使用することで、スピル範囲の行数に応じて連続番号を簡単に生成することができます。この方法は、データを整理し、管理する際に非常に役立ちます。

この方法は他のスピル関数でも利用可能です。

 

コメント