Excel術

【Excel】リストの項目を後から自動で増やす方法

Excelでリストを作成したのはいいけど、後から項目を追加したいときってありますよね。

そうなると、またリストを追加する設定をしないといけなくなり、とても面倒くさいです。

そこで今回は、後から簡単に自動でリストの項目を増やす方法を紹介します。

OFFSET関数とCOUNTA関数を組み合わせた設定にする

結論だけ先に言うと、リストの値に「OFFSET関数とCOUNTA関数を組み合わせた数式」を入れることで、自動的にリストの項目を追加出来るようになります。

それぞれの関数について詳しく説明しますが、まずは以下の手順通りに追加してみて下さい。

手順1. リストを作成する

まずは、新しいシートを作成して、以下のようにリストの項目を作成しましょう。

ここでは「リスト」というシート名で、以下のように項目を記載しました。

また、項目を書く位置も重要です。

ここではB2セルから下に、「未着手」「進行中」「完了」と、書いていますので、記載する位置も画像と同じように書いてほしいです。

手順2. データの入力規則で数式を入力する

「リスト」シートに項目を記入したら、リストにしたいセルにカーソルを当てましょう。

そしてExcelの上の方にある、[データ]タブ → [データの入力規則] の順でクリックすると、以下のような画面になります。

そして、[入力値の種類]を「リスト」に変更した後、キャプチャ画像の赤枠のように、OFFSET関数とCOUNTA関数を組み合わせた数式を入力します。

手順1と同じように「リスト」シートに値を記入した場合は、数式は以下そのままでOKです。

=OFFSET(リスト!$B$2,0,0,COUNTA(リスト!$B:$B),1)

これで以下画像のように、リスト化されたと思います。

 

さて、では「リスト」シートに「保留中」という言葉を追加してみましょう。

すると、ちゃんと自動的に「保留中」という言葉が項目として追加されていると思います。

これでリストに自動的に反映されるようになりました!

【解説】OFFSET関数とCOUNTA関数について

ではここからは、先ほど使用したOFFSET関数とCOUNTA関数について詳しく解説していきます。理解を深めるためにも、ぜひ読んでみてほしいです!

OFFSET関数について解説

OFFSET関数ってあんまり使わないですよね。OFFSET関数は、以下のような意味合いになっています。

=OFFSET(基準のセル、基準からずらす行数、基準からずらす列数、範囲の行数、範囲の列数)

う~ん、ちょっと分かりにくいですよね。もう少し噛み砕いて説明していきます!

 

OFFSET関数は、セルの範囲を指定したいときに使用します。セルの範囲とは、A1からC3まで(A1:C3)といった範囲のことです。

そして「offset」という用語ですが、これは元々「基準からズレの値を示す」という意味があります。

なので、OFFSET関数というのは、「基準のセルから○○だけずらした範囲」を指定することができます。

 

実際に、OFFSET関数に値を入れながら説明していきますね!

例えば、以下のOFFSET関数の式があったとします。

=OFFSET(B2,2,3,5,2)

まず、=OFFSET(B2,2,3,5,2) より、基準のセルがB2なので、以下のオレンジ色のセルを指定しています。

=OFFSET(B2,2,3,5,2) より、基準のセルB2から、下に2行右に3列にずらします。すると、オレンジ色のセルから、緑色セルの場所にズラすことになります。

セルの基準をズラせば、後はセルの範囲を指定するだけです。

=OFFSET(B2,2,3,5,2) より、行数が5行列数が2列になっているので、最終的にOFFSET関数は以下の緑色セルの範囲を指定することになります。

これでOFFSET関数で範囲を指定できました。

つまり、今回のOFFSET関数の答えは、[E4:F8]となるわけですね。

ちなみに、OFFSET関数のみをセルに入力しても、#VALUE!と出力されてエラーになると思います。

これはOFFSET関数がExcelの範囲を指定する関数で、OFFSET関数の答えがセルの表示には適さないものだからです。

なのでOFFSET関数は単体では使用せず、他の関数と組み合わせて使用します。

COUNTA関数について解説

COUNTA関数は、指定したセルの範囲内で、空白以外のセルの数を数える関数です。

=COUNTA(セルの範囲)

例えば、以下画像のようにB列を指定した場合、空白以外のセルは、[未着手]・[進行中]・[完了]の3つ存在するので、COUNTA関数の答えは”3″になります。

OFFSET関数とCOUNTA関数を組み合わせるとどうなるのか?

OFFSET関数とCOUNTA関数は理解出来ましたか?

では、改めてOFFSET関数とCOUNTA関数を組み合わせた数式を見ていきましょう。

=OFFSET(リスト!$B$2,0,0,COUNTA(リスト!$B:$B),1)

まず、=OFFSET(リスト!$B$2,0,0,COUNTA(リスト!$B:$B),1)より、基準となるセルは、「リスト」シートのB2セルになります。

そのため、「リスト」シートの、以下オレンジ色のセルの場所が基準になります。

そこから、=OFFSET(リスト!$B$2,0,0,COUNTA(リスト!$B:$B),1) より、下に0行右に0列ずらします。両方0になっているので、今回はB2セルからずらさないということになりますね。

 

さて、ここからです。

=OFFSET(リスト!$B$2,0,0,COUNTA(リスト!$B:$B),1) より、行数がCOUNTA関数行列数が1列になっています。

行数について、今の状態だと[未着手]・[進行中]・[完了]の3つ存在するので、COUNTA関数の答えは”3″になります。

つまり、セルの範囲の行数 = COUNTA関数 = 3行になるので、以下の緑色セルの範囲を指定することになります。

リストの範囲が[B2:B4]になり、そこには[未着手]・[進行中]・[完了]の3つが存在するため、リストの項目が3つ出てくるというわけですね。

 

では、もし[保留中]という項目を増やしたら、どう変わるのでしょうか?

[未着手]・[進行中]・[完了]・[保留中]の4つ存在するので、COUNTA関数の答えは”4″になります。

すると、セルの範囲の行数 = COUNTA関数 = 4行といった感じで、行数が4行に変わるので、以下の緑色セルの範囲を指定することになります。

リストの範囲が、[B2:B5]に拡張されるので、[保留中]という項目も自動的に追加されたというわけです。

 

これが、リストの項目を増やしても自動的に項目が追加される仕組みです。一つ一つ見ていけば、意外と簡単に理解出来たのではないでしょうか?

最後に

OFFSET関数とCOUNTA関数を組み合わせた、リストの項目を自動的に追加する方法でした。

結構、色んな場面で活用できると思いますので、ぜひ仕組みも理解して今後も使ってもらえればと思います!