2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Excelでリストを動的に追加させたい

Posted at

Excelでリスト(データの入力規則など)使用時

項目が増えたり・減ったり・変わったりした時に、データの入力規則をいじって・・リストに反映して・・・ということや。

同じシートの欄外にリスト用のエリアを設けていたら、いつの間にか壊れていた・・・なんてことはないでしょうか。

或いは、それを回避するためにマスタシートを別に設けてみるも、項目の入れ替わりが多いと管理が面倒になったりなど。

ということで、関数のみで手っ取り早く、リストの管理から開放されましょう。

概要

  1. マスタシートを設けます。

  2. マスタシートに、それぞれマスタとなる項目を入力します。

  3. 項目は自由に増やしたり減らしたり変更することができます。

  4. 参照元(リストとなるセル)は何もしなくても選択肢が動的に反映されます!
    ※項目の変更については、既に入力済みのセルへの反映は行われません(あくまで選択肢のみ)

環境

手元にExcelがなかったので、GoogleSpredSheetで書いていますが、Excelで実現してください。
※GoogleSpredSheetでは同じことができません。

実装手順

mstシート

image.png

見た目はこのような感じで、マスタ用のシートを設けます。
器として、列は20列、行は50列用意しています。

初期設定

マスタシートの初期設定を説明します。

セル 項目 内容
B1 sheet mst シート名を入力します。
B2 開始行no. 5 マスタの値を入力し始める行番号です。例では天体観測が入力されている行のことです。

これらは、マスタシートのシート名や、開始行が変更された際に手で変更します。

関数セル

列 @2行目

image.png

=LEFT(ADDRESS(ROW(),COLUMN(),2), FIND("$",ADDRESS(ROW(),COLUMN(),2))-1)

関数のあるセルの行絶対参照(e.g. A$1)の値から、"$"までの文字列を抜き出す(つまり列名称)。

行数 @3行目

image.png

=COUNTA(D5:D54)

マスタの50項目までの行数をカウントします。

範囲 @4行目

image.png

=CONCATENATE($B$1,"!",D2,$B$2,":",D2,$B$2+D3)

初期設定値とマスタの入力情報を元に、マスタ項目の範囲を作成します。

運用

D列以降の1行目は、マスタの名称を入力します。これはただの見出しです。
そのマスタに対し、同列の5行目からリストの選択肢となる値を入力していきます。

マスタ参照元シート

  1. Excelで、マスタの項目を選択肢としたいセルを選択します。
  2. データの入力規則
  3. 入力値の種類:リスト
  4. 元の値:=INDIRECT(mst!D4)

これで、動的に反映されるリスト指定が完了です。
4.にて、INDIRECT関数を使用することで、対象セルの文字列をセル参照値として扱うので、結果マスタの項目を指定することになります。

例えば、mstシートの好きな歌列に、「カルマ」を追加します。
そうすると、入力規則を設定したセルの選択肢に、「カルマ」が追加されます。

以上、画像で例示できないのが残念ですが・・。
シートは置いておくので、xlsx形式でダウンロードして確認してみてください。

Excelリストのマスタ化(動的反映)

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?