Chiquilin Site■10.07.14_Excel:ドロップダウンリストを絞り込む3

その1:リストの下準備
その2:選択リストの作成
ChiquilinSite
最後に分類が複数に分かれる場合です。 FILTER関数が使えるバージョンなら抽出についてはもう少し簡単になりますが 本来は数式だけで処理するよりは VBEでシートモジュールに changeイベントを入れた方が楽だろうと思います。基本方法を載せますが 状況によって変更が必要な場合もあります。

リストの下準備

リストシートを作成します。画像のようなものを作成します。
リスト表の作成
D:G列が作業列になります。
■D1セル
 =D2+IF(AND(A2=F$1,B2<>B3),1)
■E1セル
 =E2+IF(AND(A2=F$1,B2=G$1),1)
 D1:E1セルを選択して フィルハンドルをダブルクリック
■F1セル
 =INDEX(入力表!A:A,COUNTA(入力表!A:A))
■G1セル
 =INDEX(入力表!B:B,COUNTA(入力表!A:A))
■F2セル
 =IF(D$1<ROW(F1),"",INDEX(B:B,MATCH(D$1-ROW(F1),D$1:D$100,-1)))
■G2セル
 =IF(E$1<ROW(G1),"",INDEX(C:C,MATCH(E$1-ROW(G1),E$1:E$100,-1)))
 F2:G2セルを選択して フィルハンドルをダブルクリック
これで準備完了。F1:G1セルの式は 入力表によっては機能しない場合がありますので必要に応じて形を変える必要があるかもしれません。
■F1セル
 =INDEX(入力表!A:A,CELL("row"))
■G1セル
 =INDEX(入力表!B:B,CELL("row"))
こういう手もあります。この場合 選択した行の値が反映されるはずなので 狂いが生じにくいかもしれません。
前回同様名前の定義については
◆Excel2007の場合:
[数式]→[定義された名前]の[名前の定義]
◆Excel2003以前の場合:
[挿入]→[名前]→[作成]
 
名  前:分類2
参照範囲:=OFFSET(リスト!$F$2,,,リスト!$D$1)
名  前:品名リスト
参照範囲:=OFFSET(リスト!$G$2,,,リスト!$E$1)
こんな感じで指定しておく必要があります。これで準備は完了です。
ページの一番上へ

その2:選択リストの作成

入力表です。これも前回と一緒なのでほぼ割愛します。
入力表シートのA2:A10セルを選択した状態で
[データ]→[入力規則]
[入力値の種類]を[リスト]
[元の値]を「パステル,ビビッド」として[OK]
 
入力表シートのB2:B10セルを選択した状態で
[データ]→[入力規則]
[入力値の種類]を[リスト]
[元の値]を「=分類2」として[OK]
入力表シートのC2:C10セルを選択した状態で
[データ]→[入力規則]
[入力値の種類]を[リスト]
[元の値]を「=品名リスト」として[OK]
これでお仕舞い。実際に入力してみます。
入力表
やってみれば分かりますが 選択リストは最も下にある「分類1」「分類2」の文字列を元にしてリスト化するするようになっています。つまり後から途中の行を修正しようとしたら上手くリスト化されません。
後に紹介した F1・G1セルに CELL関数を使う方法だと途中の変更にも対応しますが この場合途中で修正しようとした場合に不具合を起こす場合があります。そういう時はF9ボタンを押すとリストを再取得します。
→参考ファイル(最終行指定バージョン:048.xlsx)
→参考ファイル(入力行番取得バージョン:048b.xlsx)
→参考ファイル(FILTER関数バージョン:048c.xlsx)
ページの一番上へ
ChiquilinSite トップページへ  Copyright(C) Chiquilin_site. All Rights Reserved.
inserted by FC2 system