| 「ワンポイント編Uトップへ」 | |
| その他 No 3 |
One Point |
| Q4:ドロップダウンリスト(入力規則)について | |
Q4
|
![]() |
|
あらかじめ、シート上へ元のリストを作っておき、これを参照させています。
ただ、このセル参照での設定は、参照するセルのリストと入力規則を設定するシートが、同一のシートでなければ入力できません。他のシートへの参照はできませんので注意してください。
他のシートへの参照を入力したい場合は、名前の定義を利用しましょう。名前の定義をブック単位で使用すれば、他のシートのリストでも自由にドロップダウンリストをつくることができます。
たとえば、上図のA2:A11の範囲へ「リスト」と名前を付けます。そして、上図と同じくダイアログボックスのリストの元の値へ「=リスト」と入力します。(名前の定義については、特別6以降を参照)
これで、ブック内のどのシートへも、入力規則のドロップダウンリストを作ることができます。
------------------------------------------------------------------
さて、ではドロップダウンリストは条件によって、表示内容を変えることは可能でしょうか。まず、2つの条件で考えてみると、IF関数を使って処理できないことはありません。
たとえば営業担当者、「犬山」の担当区域が「杉並、中野、練馬、新宿、板橋」で佐々木が「豊島、文京、港、渋谷、千代田」であるとして、A2の担当者名によって、C2の担当区域のリストが表示されるようにする場合の方法です。下図のような設定が可能です。
![]() |
![]() |
これは、A2セルに「犬山」「佐々木」の2名の名前が表示されるドロップダウンリストを作り、C2にIF関数により入力規則を設定したものです。この例では、名前の定義を利用しています。C2セルのダイアログボックス、元の値へ「=IF(A2="犬山",犬山,佐々木)」の式を入力しています。つまり、あらかじめ犬山の担当区域は「犬山」、佐々木の担当区域は「佐々木」と名前を付けて定義したのです。(リストと同じシート上であればセル参照でも可能)
------------------------------------------------------------------
では、もっと複数の条件で、表示内容を変えることは可能でしょうか。
IF関数でやるとすればIFにIFを次々ネストさせなければならなくなり、現実的ではありません。
実は、条件によって表示内容を変えるには、もっと応用範囲の広い方法があります。
たとえば、営業担当者、「犬山」「佐々木」「青柳」「宮園」「大垣」とし、それぞれが担当区域を受け持っているとします。この5人の担当区域を担当者名を条件に切り替える方法です。
![]() |
|
この例も担当者名と担当区域の一欄表をつくり、名前の定義を利用しています。以下に手順を示します。
仮に、Sheet1へこのドロップダウンリストを表示させるとして、まず、下図ようにSheet2へ担当者名と担当区域を一欄表にしたものを作ります。
![]() |
次に、この一覧表の内容に名前の定義で名前を付けます。 |
A1〜E1までの営業担当者名は『担当者』とし、担当区域もA2〜A6は『犬山』、B2〜B6は『佐々木』とし、順じ『大垣』まで名前を付けます。これでSheet2は完成です。(名前の定義は、ブック単位で)
Sheet1では、まず、営業担当者名が表示されるドロップダウンリストを作ります。A2へ表示させるとして、A2セルを選択し、下図のようにデータの入力規則からリストを選択、元の値へ「=担当者」とします。
![]() |
次にB2へ担当区域を表示させるとして、同じくB2セルを選択し、リストの元の値へ「=INDIRECT(A2)」と入力します。 INDIRECT関数については、下記補足参照。
|
これで、A2セルのドロップダウンリストで選択した担当者名によって、B2のドロップダウンリストの内容が切り替わります。
A2で佐々木を選択すれば、B2では佐々木の担当区域のリストが表示されるようになります。
これで、IF関数を使うより効率的で、より複雑なドロップダウンリストが作成できます。
応用範囲が広い方法ですから、使い方をマスターしてください。
★補足:INDIRECT関数は、検索/行列関数に分類されるものです。指定した文字列への参照を返す関数です。書式は、INDIRECT(参照文字列, 参照形式)ですが、通常の利用では引数の参照形式は省略できます。
参照文字列(A2)によってセルに入力されている文字列を介して、間接的に名前の定義を返しています。
これはできないだろうと思っていると、INDIRECT関数で問題が解決することがよくあります。非常に便利な関数です。覚えておいて下さい。(INDIRECT関数
→ 中級23
参照)