- ベストアンサー
Excel2010 入力規則のリスト自動対応
- Excel2010で入力規則のリストを自動で更新する方法について質問です。
- 名前の定義の設定とINDIRECT関数を使用してリストを連動させる方法は理解できていますが、毎月追加・削除されるリストの参照範囲を自動で更新する方法が知りたいです。
- リストデータシートと入力シートを使用して部署名を選択し、それに連動した名前リストを自動で表示する設定が可能かどうか知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
・・・と投げっ放しもアレなので、コッソリ試してみました。 添付図をご覧くださいませ・・・と言いたいところなのですが、 お希望の処理から外れている可能性が高いなぁ、 と、やりながら思ってしまいました^^; なので、参考までにどうぞ^^;; ひとまず、右脇に部署コード表を用意して、 A列B列にVLOOKUP関数を使って部署を出しています。 C列は氏名のつもり。 D列にフラグを(行番号)を入れています。 ちなみに、=IF(B2=$I$9,ROW(D2),"") とし、 I9セルに選択した部署と合致したものだけにフラグを立てるようにします。 F列にはINDEX関数とSMALL関数、COUNT関数を使って、 名簿からフラグが立ったものだけ抜き取ります。 =IF(COUNT(D:D)<ROW(F2)-1,"",INDEX(C:C,SMALL(D:D,ROW(F2)-1))) D列に入力されている数値を数え、データの個数より多い行は空白、 個数以下の場合はINDEX以下を返すようにします。 ひとまず、SMALL関数を使ってD列から「ROW(F列)-1番目」のデータがある行番号を見、 INDEX関数でC列から該当行を抜き出してきます。 これで、所属している人の名前(いろは)を抜き出してきます。 この先は画面(図)では見えていませんが、範囲名「名前リスト」を設定してやります。 図の場合、F2:F6に名前を付けてやれば問題ないのですが、なんせこの範囲は可変です。 で、ちょっとだけ工夫します。私の場合、 =Sheet1!$F$2:INDEX(Sheet1!$F:$F,COUNT(Sheet1!$D:$D)+1) としてやりました。 ちょっと無駄があるかもしれませんが、ご勘弁くださいませ。 つまり、範囲の開始セルはF2、終了セルにINDEX関数を使って、 F列の「D列の数値が入力されているセルの数+1」セルを指定してやりました。 あとは、入力規制→入力値の種類=リスト→元の値「=名前リスト」としてやると、 部署に対応した名前リストをコンボボックスに表示してくれました。 ご希望の処理っぽかったらお試しくださいませ。 違ったら・・スルーなさってください^^;
その他の回答 (2)
- tsubuyuki
- ベストアンサー率45% (699/1545)
他さまのサイトへのリンクで恐縮ですが、 http://excel.syogyoumujou.com/function/list.html この辺りが参考になるのではないでしょうか。 例えばA列に部署、B列に名前、C列に選択された部署だったらフラグを立てるIF式、 D列にフラグが立ったデータを集めてきて、範囲名を付ける・・ でお望みの動きが可能なのではないかと思います。 試していないので可能かどうかわかりませんが^^;
お礼
回答ありがとうございます。 すごく高度なテクニックな感じです。。。 試してみます。
- keithin
- ベストアンサー率66% (5278/7941)
こんにちは。 「名前の定義を利用して可変範囲を取得する」「名前定義を経由して,計算させた範囲を入力規則の元ネタにする」などの,基本テクニックは理解されているということですね。 さて。 いま「部署名」を関数を使って名前定義なさっていますが,そもそも部署名のセル範囲(A1:G1)を可変で計算させなきゃならないほど「部署数の増減(や部署名の変更)が頻繁にある」のですか? ごく一般的に考えると,次のように作成します。 A1「総務部」,B1「経理部」…G1「営業第二部」まで7部体制となっている。各部にぶら下がるメンバー(及び人数)には増減入れ替えがあるので,自動追従させたい。 名前の定義: 名前 部署名 参照範囲 ='リストデータ'!$A$1:$G$1 (固定範囲に対して定義) 名前 総務部 参照範囲 =INDIRECT("'リストデータ'!$A$2:$A$"&(COUNTA('リストデータ'!$A:$A)-1)) 名前 経理部 参照範囲 =INDIRECT("'リストデータ'!$B$2:$B$"&(COUNTA('リストデータ'!$B:$B)-1)) 以下同文で「営業第二部」までそれぞれ個別部署名で名前定義を作成します データシートのA列には入力規則のリストで =部署名 とします データシートのB列には入力規則のリストで =INDIRECT(A6) のようにします。
お礼
早速の回答、ありがとうございます。 はい、おっしゃるとおり部署名は可変させるほどありませんので 回答者様のとおり変更しました。 各部署の名前の定義の参照範囲ですが「入力した数式は正しくありません。」と表示され OKをクリックすると、=INDIRECT("'リストデータ'!$A$2:$A$"の$A$の部分が反転しました。 $Aにしてみてもやはりエラーになってしまいました。。。
補足
NO.1の回答者様 名前の定義の参照範囲の設定出来ました。 しかし、リスト選択の表示がでなくなってしまいました。
お礼
説明とサンプルありがとうございます!! 今回は、INDIRECTを使うやり方を希望していましたが このやり方も使えそうです。 とても、勉強になりました。 EXCEL、奥が深いですね。