Excelの入力規則のプルダウンに表示されるリストを、他のセルの値に応じて限定する(章や項目などの場合)

 Excelの「入力規則」の中には「リスト」というのがあり、このリストにある項目しかセルに入力できなくすることができます。このリストを、他のセルの値に応じて限定する方法を紹介いたします。ここでいう「限定する」というのは、単に「変更する」とは意味合いが異なりますので、まずはそこから説明します。
 この方法は、リストの内容が書籍や論文の章や項目の名前であったり、法規の条項の名前であったりするときに有効です。例えば、ある論文の目次において、章を指定すると、その章の下位にある節や項目をリストから選択する仕組みを作る場合などです。リストの内容を絞り込むというイメージですね。

 具体例を次に示します。以下のデータは、木下是雄「理科系の作文技術」中公新書の目次及び項目名と、それに対応するページ番号のデータの一部です。

1 序章 2
1.1 チャーチルのメモ 2
1.2 この書物の目標 3
1.2 1)内容の精選 6
1.2 2)事実と意見の区別 7
1.2 3)記述の順序 8
1.2 4)明快・簡潔な文章 8
1.3 <作文>について 9
2 準備作業(立案) 13
2.1 準備作業の必要 13
2.2 文書の役割の確認 14
2.3 主題の選定 17
2.3.1 与えられた課題 17
2.3.2 一文書一主題 18
2.3.3 長さの制限 18
2.3.4 読者 21
2.3.5 なまの情報 21
2.4 目標規定文 22
2.5 材料あつめ 25
2.5.1 思いつくままのメモ 25
2.5.2 ジャーナリストの定石その他 27
2.5.3 図・表 28
2.5.4 文献 28

 このデータのように、1つの章の下位に沢山の項目があるとき、章を指定すると、その章の下位にある項目のみがリストに表示されるようにしたい。しかも、このデータでは、章や節の更に下に、小さい区分けがされています。このようなデータにも対応できるようにします。

 まずはゴールを示します。ゴールとしては、章番号、章と節の番号、そして小区分がある場合はそれをしていすると、該当する項目の名前とページ番号が表示されるようにします。右の図のような感じです:
赤枠部分を指定すると、緑枠部分が自動で表示される。

STEP0 フォームの作成

 リストの作成をする前に、章と節、小区分を指定したら、その名前とページ番号が出る仕組みを作ってしまいましょう。
本記事の主テーマではないので、別記事にまとめています。簡単に言うと、「3つのセルの中身を"&"で結合して、それをキーとしてVLOOKUP関数を使っている」という、ただそれだけですので、この説明で理解できた方は、そのままこの記事を読み進めて下さい。わからなかった人は、複数セルのデータをキーとして該当項目を検索する(VLOOKUP関数) - stacked tip that highをまず読んでみて下さい。

STEP1 データの下ごしらえ

 STEP1では、生データに対して、データの抽出がしやすいように情報を整理します。各章の下位にはどのような節があって、その節の下にはどのような小区分があるのかという情報を扱いやすくします。イメージとしては

  • [1]1章
    • [1-1-1]1. 序章
    • [1-2-1]1.1 チャーチルのメモ
    • [1-3-1]1.2 この書物の目的
    • [1-3-2]1.2 1)内容の精選
    • [1-3-3]1.2 2)事実と意見の区別
    • [1-3-4]1.2 3)記述の順序
    • [1-3-5]1.2 4)明快・簡潔な文章
    • [1-4-1]1.3 <作文>について
  • [2]2章
    • [2-1-1]2. 準備作業(立案)
    • [2-2-1]2.1 準備作業の必要

というように、章、節、小区分ごとに順番に番号を振っていくというものです。こうすれば、1章を指定した時には、1番目の番号が1のものをリストに表示すればいいわけです。

I4からL5にかけてのセルの中身は次の通りです。6行目以降は、5行目をコピーして引っ張ってあるとお考え下さい:

I J
4 1 1
5 =IF(B5=B4,0,MAX(I4:I$4)+1) =IF(I5=0,IF(C5=C4,J4,J4+1),1)

K L
4 =B4&"_"&J4 1
5 =B5&"_"&J5 =IF(AND(I5=I4,J5=J4),L4+1,1)

K列目は、B列目とJ列目をアンダースコアで繋いでるだけです。
 I5から説明します。I5では、B4とB5が同じ値であれば0、違う値であれば、このセルより上の部分の範囲における最大値より1大きい値を表示します。こうすることによって、各章の最初の項目だけに順番に番号を振ることができます。
 J5では、各章の中で、節に対して番号を振っており、そしてL5では、各節の中で、小区分に対して番号を振っています。したがって、B列、J列、L列で、先ほど示した3つの数字による構造を示すことができました。

STEP2 リストづくり

 さて、リストの作成を始めます。

理科系の作文技術 (中公新書 (624))

理科系の作文技術 (中公新書 (624))