重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Office:Excel 2007

お世話になっております。
相変わらずタイトルの文字制限少ないですね・・・。
と、それはおいといて・・・。

当方Excel2007を使用しているのですが、
入力規則の設定で、入力値の種類を「リスト」とした場合の
「元の値」を1つのセルから参照し、プルダウンしたいと考えています。

例えばA1に"0,1,2,3"という値を入れておき、
B1に入力規則を設定して、「元の値」の参照元をA1としたときに
"0","1","2","3"がプルダウンしてくれるのかなと
思っていたのですが、やはり"0,1,2,3"で1文字列として扱っているためか、
ちゃんとプルダウンしませんでした。

何か方法をご存じの方いらっしゃいましたら、ご教示の程お願い致します。

A 回答 (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
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい大変申し訳ありません。
別件でバタバタしてしまってなかなかお礼が出来ずにいました。

tom04さんのやり方もなるほどと思ったのですが、
今回やろうとしていることにはちょっとそぐわない感じがしました。
せっかくコードまで教えていただいて申し訳ないですが…。

そもそもこうしなくてはならないような作りにしてしまったせいもありますので、
もっと根本から見直してみようと思います。


これまでアドバイスを下さった方々には申し訳ないですが、
これで一応"解決"とさせていただきます。
(解決はしてませんが…。)

ありがとうございました。

お礼日時:2013/04/08 12:49

NO2より追記・・・



0から表示させる場合も同様「元の値」に「0,1,2,3,4,5」と入力します。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

申し訳ありません。
その方法自体は存じていたのですが、
なんとか1セル内の値を「元の値」として使えないか模索しておりました。

理由は「回答No1」のお礼に記載してます。

お礼日時:2013/03/25 09:54

>「元の値」を1つのセルから参照し、プルダウンしたいと考えています。



例えばセルA1に「1,2,3,4,5」のようなドロップダウンを作りたい場合
リストの「元の値」には普通に「1,2,3,4,5」と入力します

添付画像の様に入力です。
「Excel 入力規則のリスト参照元を1セ」の回答画像2
    • good
    • 0

こんにちは!



入力規則のリストを設定する場合ですね!

>例えばA1に"0,1,2,3"という値を入れておき

とありますが、基本的には
複数セルを範囲指定 → 範囲指定セルがリスト候補(元の値)となる → 1セルを選択
といった流れが一般的だと思います。
すなわち今回の質問の内容ではA1セルだけがリスト候補(元の値)になります。

今回のようにリスト表示させたいデータが判っている場合はセルを指定するのではなく、
直接リストの元の値の欄に
0,1,2
とだけ入力すればそれぞれがリスト候補として表示されます。m(_ _)m
    • good
    • 0
この回答へのお礼

>複数セルを範囲指定 → 範囲指定セルがリスト候補(元の値)となる → 1セルを選択
といった流れが一般的だと思います。
すなわち今回の質問の内容ではA1セルだけがリスト候補(元の値)になります。

やっぱりそうですか。
セル自体が所謂リストの選択候補として表示されるという認識になるということですね。
直接「元の値」にリストデータをいれないで、1つのセルを参照して、セルの値を「元の値」として扱えれば便利だなぁと
思っていたのですが…^^;


>今回のようにリスト表示させたいデータが判っている場合はセルを指定するのではなく、
直接リストの元の値の欄に
0,1,2
とだけ入力すればそれぞれがリスト候補として表示されます。m(_ _)m

表示させたいリストがわかっているといえばわかっているのですが、
リスト化しているセルが複数ありまして、また、場合によって
「元の値」が変わることも普通にあるため
出来れば直接「元の値」を指定しないように出来ないか模索していました。
複数セルを範囲指定する方法も存じてましたが、
今回の作り上その方法は出来るだけ避けたかったのです。

もっと目的をはっきりを書いておけばよかったですね、申し訳ありません。

ご回答ありがとうございました。

お礼日時:2013/03/25 09:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!