- ベストアンサー
Excel入力規則で1つのセルから参照したリストをプルダウンする方法
- Excel 2007を使用している場合、入力規則の設定でリストを参照する際に1つのセルから値を取得する方法について知りたいです。
- 具体的には、A1セルに"0,1,2,3"という値を入力しておき、B1セルで入力規則を設定し、A1セルを参照してプルダウンリストを作成したいです。
- しかし、現在の設定では"0,1,2,3"を1つの文字列として扱っており、プルダウンリストが正しく表示されません。解決策を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 >出来れば直接「元の値」を指定しないように出来ないか・・・ とありましたので、顔を出しました。 無理やりって感じになりますが、一案として、 仮にC1~C10セル程度(A1セルにカンマ区切りで入力する数以上)を元の値としておいて A1セルにデータが入力されるたびにC1セル以降にA1セルデータをカンマで区切って表示させてみてはどうでしょうか? 手動で データ → 区切り位置 → 「カンマ」で区切ってもよいのですがこの際ですので、VBAでやってみました。 まず、リスト表示させたいセルを範囲指定 → リスト → 元の値の欄に =$C$1:$C$10 としておきます。 次に操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてA1セルにカンマ区切りでデータを入力 → Enter としてみてください。 C1セル以降C列にそれぞれ表示されますので、それがリスト候補となります。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim k As Long, myArray If Target.Address = "$A$1" Then Range("C:C").ClearContents If InStr(Target, ",") > 0 Then myArray = Split(Target, ",") For k = 0 To UBound(myArray) Cells(k + 1, "C") = myArray(k) Next k Else Range("C1") = Target End If End If End Sub 'この行まで ※ C列が目障りであればC列を非表示にしておきます。 ※ この程度しか思いつきませんが、ごめんなさいね。m(_ _)m
その他の回答 (3)
- esupuresso
- ベストアンサー率44% (257/579)
NO2より追記・・・ 0から表示させる場合も同様「元の値」に「0,1,2,3,4,5」と入力します。
お礼
ご回答ありがとうございます。 申し訳ありません。 その方法自体は存じていたのですが、 なんとか1セル内の値を「元の値」として使えないか模索しておりました。 理由は「回答No1」のお礼に記載してます。
- esupuresso
- ベストアンサー率44% (257/579)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 入力規則のリストを設定する場合ですね! >例えばA1に"0,1,2,3"という値を入れておき とありますが、基本的には 複数セルを範囲指定 → 範囲指定セルがリスト候補(元の値)となる → 1セルを選択 といった流れが一般的だと思います。 すなわち今回の質問の内容ではA1セルだけがリスト候補(元の値)になります。 今回のようにリスト表示させたいデータが判っている場合はセルを指定するのではなく、 直接リストの元の値の欄に 0,1,2 とだけ入力すればそれぞれがリスト候補として表示されます。m(_ _)m
お礼
>複数セルを範囲指定 → 範囲指定セルがリスト候補(元の値)となる → 1セルを選択 といった流れが一般的だと思います。 すなわち今回の質問の内容ではA1セルだけがリスト候補(元の値)になります。 やっぱりそうですか。 セル自体が所謂リストの選択候補として表示されるという認識になるということですね。 直接「元の値」にリストデータをいれないで、1つのセルを参照して、セルの値を「元の値」として扱えれば便利だなぁと 思っていたのですが…^^; >今回のようにリスト表示させたいデータが判っている場合はセルを指定するのではなく、 直接リストの元の値の欄に 0,1,2 とだけ入力すればそれぞれがリスト候補として表示されます。m(_ _)m 表示させたいリストがわかっているといえばわかっているのですが、 リスト化しているセルが複数ありまして、また、場合によって 「元の値」が変わることも普通にあるため 出来れば直接「元の値」を指定しないように出来ないか模索していました。 複数セルを範囲指定する方法も存じてましたが、 今回の作り上その方法は出来るだけ避けたかったのです。 もっと目的をはっきりを書いておけばよかったですね、申し訳ありません。 ご回答ありがとうございました。
お礼
お礼が遅くなってしまい大変申し訳ありません。 別件でバタバタしてしまってなかなかお礼が出来ずにいました。 tom04さんのやり方もなるほどと思ったのですが、 今回やろうとしていることにはちょっとそぐわない感じがしました。 せっかくコードまで教えていただいて申し訳ないですが…。 そもそもこうしなくてはならないような作りにしてしまったせいもありますので、 もっと根本から見直してみようと思います。 これまでアドバイスを下さった方々には申し訳ないですが、 これで一応"解決"とさせていただきます。 (解決はしてませんが…。) ありがとうございました。