オーロラさんの勉強帳

IT企業勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。少しでもお役に立てたら幸いです。

【Excel】入力規則のリストをOFFSET関数・COUNTA関数を組み合わせて可変式にする

Twitterで流れてきたExcelの『OFFSET関数とCOUNTA関数を使って、入力規則のリストを可変式にする方法』を紹介します。

 

目次 

 

入力規則のリストとは?

セルに入力できるデータを制限する機能が入力規則です。
セルを選択すると、プルダウンであらかじめ設定しておいた値を選択できるようにする機能です。とても便利な機能でいろいろな場面でよく使います。

f:id:auroralights:20200526001052p:plain

 

入力規則のリストの基本的な設定方法は?

以下の画像のように
「データ」タブ→「データの入力規則」→『入力値の種類』で「リスト」を設定→『元の値』欄にリストに指定したい値が入っているセル範囲を指定→「OK」を選択します。

f:id:auroralights:20200526001230p:plain

※セル範囲は、カーソルを『元の値』のボックス内に入れた状態でドラッグすると
 絶対参照でセル範囲を自動で入力できるので便利です。
※元の値に〇,△,といったカンマ区切りで指定した値を設定することもできます。

 

今回したい事

A列の会社コードの欄に入力規則を設定し、プルダウンでD列のD2以降データから選択できるようにする。

ただし、D列の項目数は変更になることがあるが、数の変更にも対応したい。

f:id:auroralights:20200526001836p:plain

 

例えば、セルD7にA12345というデータが増えた場合は、A列のリストにA12345が自動的に反映されるようにしたい。(都度リストに設定するセル範囲を変更するのではなく、自動でセル範囲を拡張、縮小させてデータの増減に対応したい)

f:id:auroralights:20200526002515p:plain

 

OFFSET関数とCOUNTA関数をつかって入力規則の可変リストを設定する

結論から言うと、A列で以下のように入力規則を設定することで可能です。

f:id:auroralights:20200526003007p:plain

 

「元の値」欄に=OFFSET($D$2,0,0,COUNTA($D:$D)-1,1)を入力する。

 

以上です。