• ベストアンサー

入力規則の可変リストを作りたい(EXCEL)

エクセルの初心者です。どなたか教えてください。 添付を見てください。 ●入力リストに「名前」、「申込時期」、「月」、「コース」があります。 ●参照リストにある「申込時期」、「月」、「コース」をそれぞれ入力規則のリストにして 入力リストの名前以外は選択にさせたいのです。 例えば、申込時期の第一期を入力規則のリストから選択すると、月のセルは 自動で7月~9月が設定できるようにしたいです。 都合により、VBAを書くのではなく、関数で実現したいと思ってるんですが これはできないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 今仮に、入力リストがSheet1のB列~C列にあるものとします。  又、画像のH列~J列にある参照リストは、見栄えを良くするために、Sheet2のA列~C列に移設するものとします。  そして、Sheet3のA列~D列を作業列として使用するものとします。  まず、Sheet2のA列~C列に、画像のH列~J列と同様の参照リストを作成して下さい。  次に、Sheet3のA3セルに次の数式を入力して下さい。 =IF(OR(Sheet2!A3<>"",ROW()=MATCH("゛",Sheet2!$C:$C,-1)+1),ROW(),"")  次に、Sheet3のC3セルに次の数式を入力して下さい。 =IF(ROWS($3:3)>COUNT(A:A)-1,"",INDEX(Sheet2!A:A,SMALL(A:A,ROWS($3:3))))  次に、Sheet3のA3セルをコピーして、Sheet3のB3セルに貼り付けて下さい。  次に、Sheet3のC3セルをコピーして、Sheet3のD3セルに貼り付けて下さい。  次に、Sheet3のA3~D3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。  次に、Sheet1のC3セルを選択し、入力規則の[リスト]の設定において、「元の値」欄に次の数式を入力して下さい。 =OFFSET(INDIRECT("Sheet3!C3"),,,COUNTIF(INDIRECT("Sheet3!C:C"),"><"))  次に、Sheet1のD3セルを選択し、入力規則の[リスト]の設定において、「元の値」欄に次の数式を入力して下さい。 =OFFSET(INDIRECT("Sheet3!D1"),MATCH(VLOOKUP($C3,INDIRECT("Sheet2!A:B"),2,FALSE),INDIRECT("Sheet3!D:D"),0)-1,,COUNTIF(INDIRECT("Sheet3!B:B"),"<"&SMALL(INDIRECT("Sheet3!A:A"),RANK(MATCH($C3,INDIRECT("Sheet2!A:A"),0),INDIRECT("Sheet3!A:A"),1)+1))-COUNTIF(INDIRECT("Sheet3!B:B"),"<"&MATCH($C3,INDIRECT("Sheet2!A:A"),0)))  次に、Sheet1のE3セルを選択し、入力規則の[リスト]の設定において、「元の値」欄に次の数式を入力して下さい。 =INDIRECT("Sheet2!C"&MATCH($D3,INDIRECT("Sheet2!B:B"),0)&":C"&MATCH(SMALL(INDIRECT("Sheet3!B:B"),RANK(MATCH($D3,INDIRECT("Sheet2!B:B"),0),INDIRECT("Sheet3!B:B"),1)+1),INDIRECT("Sheet3!B:B"))-1)  次に、Sheet1のC3~E3の範囲をコピーした後、Excelの[形式を選択して貼り付け]機能を使用して、同じ列の4行目以下に、「入力規則」のみを貼り付けて下さい。  以上です。

MAHARO-STONE
質問者

お礼

お礼が遅くなって大変申し訳ありません。 仕事が忙しくて、なかなか上記の関数を全て調べて理解する時間が取れませんでしたが、なんとかなりました。EXCELは関数が多くありすぎてとても難しいです。 本当にお世話になりました。どうもありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • NuboChan
  • ベストアンサー率47% (746/1587)
回答No.4

以下が大変わかりやすく、入力補助としては使いやすいです。 自分も利用してますが、シェアウェアなのが残念ですが安価なので 試用して気に入れば導入しても損は無いと思います。   1ヶ月間の試用が可能です。その間の機能制限はありません。 楽々階層入力 (シェアウェア:1,155円(税込)) 階層形式のリストを右クリックメニューから 簡単に入力できるようにするExcel用アプリケーションです。 入力したいセルを右クリックし、表示されたメニュー上の階層を辿り 目的の値の所でクリックするだけで入力できます。 http://www.vector.co.jp/soft/win95/business/se385991.html

全文を見る
すると、全ての回答が全文表示されます。
  • prius770c
  • ベストアンサー率35% (91/258)
回答No.2

VBAや作業列は、必要ありません。 名前の定義とINDIRECT関数を用いれば可能です。 まず名前の定義は、「申込時期」の「第一期に対する月」「第二期に対する月」と「それぞれの月に対するコース(計6つ)」の合計9種類を用意しておきます。 ※名前の定義の使用法は、どのかのHPを参照してください。 ※テストしてみると、名前の定義で使える名前の冒頭は英数ではダメみたいのなので月は漢数字に変換した方がいいです。 ※定義で参照できる範囲は連続している必要があるので、私は、申込期間は通常のカンマ区切りのリストで作成しました。 次にINDIRECT関数の使い方です(月の列に対する例) 月の列に入れる入力規則のリストに「=INDIRECT(申込時期が入るセル番地)」とします。 この時に、申込時期が入るセル番地に入る値が名前の定義に使っているものと同様であれば定義したリストが表示されます。 サンプルの画像で言えば、申込時期に「第一期」を選んでいます。 この時に、名前の定義で「第一期」に対応するものとして「四月~六月」を参照しておけばプルダウンでその月たちのリストが出ます。 さらに、月を選択してそれに対応する名前の定義をしておけばコースも可変でリスト表示されます。 例にあるように、「四月」を選んでいるときと、「七月」を選んでいる時ではプルダウンのリストが違います。 色々書きましたが、下記のURLの方が分かりやすいと思います。 http://www.relief.jp/itnote/archives/000822.php

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

別シートでいいので下記のように設定 第1期 4月 5月 6月 第2期 7月 8月 9月 4月  Aコース Bコース Cコース 5月  Dコース Eコース Fコース 6月  Gコース Hコース Iコース 7月  Jコース Kコース Lコース 8月  Mコース Nコース Oコース 9月  Pコース Qコース Rコース 上記の範囲を選択して「挿入」「名前」「作成」「左端列」 申込時期(D3)は今のままの設定で 月(E3)は入力規則のリストで「=INDIRECT(D3)」 コース(F3)は入力規則のリストで「=INDIRECT(E3)」

MAHARO-STONE
質問者

補足

早速の回答ありがとうございます。 追加で情報を記載すると、「参照リスト」の方でコース数が変動する場合があるので、 なるべくそのあたりを自動で可変にできるようにしておきたいのですが。 最初にうまく説明できなくてすみません。 追って情報があればお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルの入力規則のリストについて

    エクセル2013での入力規則のリストを使った方法について質問です。 例として、 A2には、「部署名」という名前のリストを作成。 A3には、INDIRECT関数を使って、A2で選択したものに応じてリストを切り替えるように。 A4に、VLOOKUP関数を使って、A3で選択したものから、他のデータを参照して売り上げを表示するようにするとします。 機能としてはうまくはたらいているのですが、A2で選択したリストに応じて即座にA3のセルが更新されないのが気になっています。 たとえば A2で営業、A3で田中、とリストで選択した後、A2で総務を選択しても、A3のセルには田中、と表示されたままになってしまいます(リストの▽を押せばリストは正しく選択できます。) できれば、A2で違う部署を選択したら、A3のセルに表示されていた名前は消える、または新しいリストで上書きされるような仕様にしたいと思っています。 また、マクロ、VBAは使用したことがないため、可能な限り使わない方向でお願いします。 文章のみで、拙い説明ですが、ご助言お願いいたします。

  • Excel2010の入力規則:リスト、@

    Excel2010の入力規則のリストで、最初の文字に「@」を入力し、セルから選択してもなぜか、空白になってしまいます。 「@」を表示するにはどうしたらいいでしょうか? 回答よろしくお願いします。

  • excelの入力規則リストで重複不可にするには

    エクセルの入力規則でリストを利用して【プルダウンメニュー】を作成しています。 リストのデータを重複して選択できないようにするにはど のようにすればいいでしょうか? 例をあげるとしして 仮にA、b、Cの3つのセルに入力規則のリストを設定していずれも元の値が 『リンゴ』『みかん』『バナナ』とした場合。 Aのセルでリンゴを選択した時BやCのセルでリンゴを選択できないようにするに します。 VBAは全く分からないのでできれば関数で やる方法をご教授頂ければと思います。 宜しくお願いします

  • VBAで入力規則のリスト参照元の値取得

    エクセル2007を使っています。 VBAツールを作っており、その処理で使われる一機能として 「任意のセルに設定されている入力規則のリストの元の値をVBAで取得する」処理を コード中に書きたいと思っております。 ■質問概要  「入力規則のリスト」が設定されている任意のセルを選択したときに、そのセルに設定されている  「入力規則のリスト」の「元の値」をVBAで取得する方法について教えてください。  ※取得した値は配列型の変数に代入するものとします ■想定イメージ  たとえば、次のようなブックで使うことを想定しております(画像参照)  ※実際はもっとデータ量が多いブックで使う予定です  ・「リスト元の値」というシートで「選択言語」という名前でリストを定義化  ・「通常操作するシート」では値を入力したいセルに対し、「入力規則のリスト」の「元の値」を   「=選択言語」で設定  VBAではこの「通常操作するシート」の入力欄のセルを選択している時に「選択言語」で定義されている  データをすべて取得し配列型変数に代入するという動作をさせたいと思っています。     この方法について教えてくださいますようお願いします。

  • エクセル:入力規則のリストとセルの関数は同居できますか?

    エクセル:入力規則のリストとセルの関数は同居できますか? 普通にやるとセルの計算式はリストを選んだ時点でリストの文字に上書きされてしまうので困っています。 (例)   A              B         C 1 2008/08/02        =TODAY 2 ▽リスト           OK 3                NG 4 A2のセルにに =IF(A1>B1,"")と書いたとします。 で、さらにA2のセルに入力規則>リストで範囲B2:B4と設定したとします。 要は、A1に記入した日付が未来の場合は、 A2でリストで選択した文字を空白にしたいのです。 が、どうしてもリストの文字に上書きされてしまうので困っています。 やはり、関数を書いてあるセルに文字を書くと上書きされるのと同じですかね? なるべくVBA以外でなんとかしたいのですが、、、。(でもVBAでも可です)

  • 【Excel】データの入力規則のリストが作られない

    Excel2007利用です。 入力したい文字をリスト形式で選択する場合、「データの入力規則」→「リスト」→「元の値」であらかじめ入力しておいた項目のセルをまとめて選択し、最後にOKボタンを押しますが、実際やってみると、右横にリスト表示は最初の一つの項目のみしかなされてません。 また「元の値」は、リスト化する項目を選択するものだと思いますが、リスト表示されるセルを指定したい場合、このタスク内ではどの機能で操作するのでしょうか?

  • 入力規則-リスト選択で,リストの頭の行から表示させたいのに。

    1シート目に入力規則-リスト選択したいセルがあり, 2シート目にあるデータから選択するため,名前-定義で「行」に名前をつけて,範囲設定した。 ↓ 入力規則設定では空白を無視にチェックしてみたのですが・・・ 1シート目でプルダウン?(▼)で選択しようとすると,窓には2シート目リストの入力のない行(空欄)がデフォルトとして表示されてしまいます。 ↓ リストの先頭行から表示されるようにするにはどうしたら良いでしょうか?そのような技がありましたら教えて下さい。 (「行」を範囲選択するのがマズイでしょうか?行が増えても1シート目の範囲を設定し直さなくて良いかな,と思って行を範囲設定してみました。) ちなみに,Offset関数(?)は全くわかりません。

  • excel2010 データの入力規則について

    標記の機能を使い、別途設定しているテーブルから選択する際に、 その隣のセル中に記載されているデータも同時に移す事は出来ない でしょうか? 〇選択されるデータのセル  添付1参照 〇入力規則を設定したセル  添付2参照 セルX1にてプルダウンで、「柿」を指定した場合、セル「y1」に 「456」が同時に入力されないか?という質問です。 セルの関数の中に「柿」⇒「456」を入れずに、上記のように選択される データの組み合わせが見える、後でそこだけ容易に変更できるような 仕様にしたいと考えています。 よろしくご教示の程、お願いいたします。

  • VBA 入力規則を使用したリストについて

    【動作環境】  Excel2010/Excel2000   あるセルについて、 入力規則のリストを使っています。 ユーザには範囲外の値を入力させたくなく、 手入力を禁止するためにそのセルはロックし、シートを保護しています。 これをExcel2010で実行させた場合、 リストから候補値を選択すると、 セルがロックされている旨のメッセージが表示され、 セルには何も設定されません。 まったく同じことを Excel2000で行うと問題なくリストで選択した値がセルに設定されます。 今回、Excel2000とExcel2010で動作するVBAが要求されており、 どのように回避すればよいか、ご教授願います。

  • エクセルでの入力規則と自動入力について

    質問の前に検索をしてみたのですが、 似たようなものが見つからなかったので、質問させてもらいます。 シート2に名前→定義で「登録者名」と作り シート1での入力を入力規則を使い、リスト(コンボボックス) を設定しました。 シート2では 登録者名 会員番号 AAA  1234 BBB  5678 CCC  9101 DDD  1112 と名前の横のセルには会員番号を作っています。 そこで質問ですが、 シート1で登録者名を入力規則のリスト(コンボBOX) で選択して入力した場合、 隣のセルに自動で会員番号が表示できるような関数などは ないでしょうか? VBAなどはできないので、できれば関数でやりたいと思います。 【シート1】    A      B 1 AAA ▼   1234(←この1234を自動で表示させたい) 2     ▼ 3     ▼ 説明不足かも知れませんが教えてください。 よろしくお願いします。 エクセル2003です。

専門家に質問してみよう