エクセルの入力規則で、リスト機能の内容を自動更新できるようにする
こんにちは、 篠原です。
今回は、今までの全8回にわたって説明した各関数や設定を活用した、簡単な入力フォーム作ってみます。数式は複雑ですが、理屈さえ理解が出来れば、強力な道具になると思いますよ。
便利な関数
解説済みの関数や設定は以下のとおりです。
入力フォームの仕様
これから作る入力フォーム(というほどのものではありませんが)は、
- セルに入力するデータは、リスト機能を使い、そこから選択入力する
- 選択された入力データから、次の入力セルに関連する入力データを動的リスト表示できるようにする
- 関連する入力データが増えた場合でも、出来るだけ数式の変更が無いようにする。
関数で参照する基礎表を作る
参照するセル範囲に名前を設定する
(設定方法はこちらのリンクを参照してください)。
範囲名の一覧を示します。
範囲の方向 | 範囲名 | セル範囲 | 依存関係 |
---|---|---|---|
行方向 | 野菜分類 | A3:A50 | 野菜名の検索キーになる |
列方向 | 野菜名 | C2:E2 | 野菜分類の値がここの検索キーになる |
行方向 | 野菜名基準 | C3:C52 | 野菜名で検索された位置に移動する場合の基準位置になる |
列方向 | 野菜品種 | G2:AK2 | 野菜名の値がここの検索キーになる |
行方向 | 野菜品種基準 | G3:G52 | 野菜品種で検索された位置に移動する場合の基準位置になる |
範囲名は、今回の表作成では、たくさん設定ます。こんな場合は、「定義された名前」グループの「選択範囲から作成」機能を使うと楽に範囲名が定義できますのでチャレンジしてみてください(ここでは細かな説明は省略します)。
入力規則を設定する
ここがメインです。
入力規則では、リスト機能を使います。
この表は野菜の分類から、その分類に属する野菜名を選択し、選択された野菜名からその詳細の品種を選択できる構造にします。
つまり、選択リストから入力された内容により、次の入力セルの選択リストの内容が自動的に変更されるという機能にします。
完成する入力フォームは下の図のとおりです(見た目はすごく簡単ですね)。
まず、入力規則を設定するセル「B2」を選択します。
「データ」タブをクリックします。
「データツール」グループの「データの入力規則」アイコンをクリックします。
「データの入力規則」ダイアログボックスが表示されます。
「設定」タブの「条件設定」グループの「入力値の種類」ドロップダウンリストボックスから「リスト」を選択します。
以降の入力規則の設定方法は同様の操作で行います。
「元の値」数式ボックスに次のように数式を入力します。
=OFFSET(野菜分類,0,0,COUNTA(野菜分類),1)
- 1-1 OFFSET関数:範囲「野菜分類」の行、列の移動はせず、COUNTA関数の戻り値3を高さに設定する
- 1-2 COUNTA関数:範囲「野菜分類」の空白でない行数(3)を返す
このCOUNTA関数を使うことで、下の図のように、無駄な空白リストを排除することが出来ます。
次に「セルB4」を選択します。
セルB2と同様に、次のように入力規則のリスト機能を設定します。
=OFFSET(野菜名基準,,MATCH(B2,野菜名,0)-1,COUNTA(OFFSET(野菜名基準,,MATCH(B2,野菜名,0)-1)),1)
- 2-1 OFFSET関数1:野菜分類の入力を受けて、範囲「野菜名基準」は以下の関数の結果から行数は変更なしで右に1列移動し、高さが5、幅が1の範囲(D3:D7)となる。
- 2-2 MATCH関数1:範囲「野菜名」からB2(根菜類)に一致する位置(2)-1∴1が返され、右に1列移動となる
-1するのは、移動がない場合結果を「0」にするため。 - 2-3 COUNTA関数:下のOFFSET関数2の結果から(5)が返される
- 2-4 OFFSET関数2:野菜分類の入力を受けて、範囲「野菜名基準」は範囲D3:D7へ自動変更される
- 2-4 MATCH関数2:範囲「野菜名」からB2(根菜類)に一致する位置(2)-1∴1が返され、右に1列移動となる
-1するのは、移動がない場合結果を「0」にするため。
次に「セルB6」を選択します。
セルB2と同様に、次のように入力規則のリスト機能を設定します。
=OFFSET(野菜品種基準,,MATCH(B4,野菜品種,0)-1,COUNTA(OFFSET(野菜品種基準,,MATCH(B4,野菜品種,0)-1)),1)
- 3-1 OFFSET関数1:野菜の種類の入力を受けて、範囲「野菜品種基準」は以下の関数の結果から行数は変更なしで右に15列移動し、高さが2、幅が1の範囲(V3:V4)となる。
- 3-2 MATCH関数1:範囲「野菜品種」からB4(人参)に一致する位置(16)-1∴15が返され、右に15列移動となる
-1するのは、移動がない場合結果を「0」にするため。 - 3-3 COUNTA関数:下のOFFSET関数2の結果から(2)が返される
- 3-4 OFFSET関数2:野菜の種類の入力を受けて、範囲「野菜品種基準」は範囲V3:V4へ自動変更される
- 3-5 MATCH関数2:範囲「野菜品種」からB4(人参)に一致する位置(16)-1∴15が返され、右に15列移動となる
-1するのは、移動がない場合結果を「0」にするため。
- 3-2 MATCH関数1:範囲「野菜品種」からB4(人参)に一致する位置(16)-1∴15が返され、右に15列移動となる
以上で入力規則、名前定義、OFFSET関数、COUNTA関数、MATCH関数を組み合わせての使い方は終わりです。
?
Tag: エクセル EXCEL OFFSET関数 入力規則 MATCH関数 COUNTA関数