• ベストアンサー

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

kagakusukiの回答

  • ベストアンサー
  • 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は関数が多くありすぎてとても難しいです。 本当にお世話になりました。どうもありがとうございます。

関連する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です。