- ベストアンサー
エクセルの入力規則リストで1行目に空白を設定したい
エクセル2000です。 入力規則でリストからの入力をさせる場合、リストの最初の一行目に空白を設定したいのです。 もちろんシートにそのようなリストを作ってリストをセル範囲で指定すればそうなるのですが、セル範囲指定でなく、「元の値」に直接入力でリストを指定する場合、カンマ区切りの先頭に何も入れず、 ,選択肢1,選択肢2,選択肢3 とすると、最初のカンマの前は反映せず3択のリストになってしまいます。最初のカンマの前を全角スペースとすればできるのですが全角スペースは空白ではありません。 これはどうしようもないのでしょうか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
> 1.何も選択しない段階では空白 > 2.リストからA、B、Cのどれかを選択。 > 3.やはり選択止めたという場合に空白を再度選べる どうやら、質問者様がやりたいことそのものは、できそうにないみたいですね。 私がやるとすれば、 1.何も選択しない段階では[未選択]と表示。 2.リストから[未選択]、A、B、Cのどれかを選択。 3.やはり選択止めたという場合に[未選択]を再度選べる ですかねぇ。 初期状態はどうしても空白にしたい、だけど名前を定義して参照することもしたくない、というのであれば、 1.何も選択しない段階では空白。 2.リストからA、B、C、[キャンセル]のどれかを選択。 3.やはり選択止めたという場合に[キャンセル]を再度選べる という入力規則にしておき、シートモジュールのWorksheet_Changeイベントで、Targetが[キャンセル]だったらTargetをクリアするようにします。
その他の回答 (8)
- izmlz
- ベストアンサー率55% (67/120)
先頭がブランク(空白)なのを忘れてました。参照範囲の式に「+1」を加えるだけですが、混乱されないように、修正後の前提と回答を再掲します。 【前提】 シート「リスト」の1行目に項目名、2行目以降にそれぞれの選択肢を入力していく。たとえば、A1:C6に以下のように入力されている。 項目1 項目2 項目3 aaa1 bbb1 ccc1 aaa2 bbb2 ccc2 aaa3 bbb3 aaa4 シート「入力」に、入力規則のリストを利用してデータを入力していく。例えば、A1:D4に以下のようなフォーマットになっている。 氏名 項目1 項目2 項目3 田中 鈴木 佐藤 【回答】 まずは名前定義です。 1. シート「入力」のセルB2がアクティブセルの状態で、 2. Ctrl+F3(または、メニュー[挿入]-[名前]-[定義]) 3. 名前に LIST と入力 4. 参照範囲に以下の式を入力 =INDEX(リスト!$2:$2,MATCH(入力!B$1,リスト!$1:$1,0)):INDEX(INDEX(リスト!$1:$65536,,MATCH(入力!B$1,リスト!$1:$1,0)),COUNTA(INDEX(リスト!$1:$65536,,MATCH(入力!B$1,リスト!$1:$1,0)))+1) 5. [OK]ボタンをクリック 続いて入力規則です。 1. シート「入力」のセルB2がアクティブセルの状態で、 2. メニュー[データ]-[入力規則] 3. [設定]タブの[入力値の種類]ボックスの[リスト]をクリック 4. [元の値] ボックスでF3(ファンクションキーのF3)を押す 5.「LIST」を選択してEnterを押す 6. [OK]ボタンをクリック 最後にセルB2をB2:D4にコピー&ペーストして完了です。 なお、入力規則の手順の1.で、セルB2がアクティブセルでB2:D4を選択している状態、としていれば、それで入力規則を設定できます。 これにより、それぞれの項目に選択肢が増えても自動的に名前定義の参照範囲が拡大されますし、項目自体を増やしてもそれも自動的に反映してくれます。 これなら、リストを直接列挙のやり方よりも楽じゃないかと思うのですが、いかがでしょうか?
お礼
なんどもありがとうございます。 わたしのやりたいこととは違いましたが勉強になりました。 ありがとうございます。
- izmlz
- ベストアンサー率55% (67/120)
>リストの種類が多いからなんです。 だから、可変範囲の名前定義をリストごとに設定するのが面倒、ということですね。 一回だけ名前定義の設定をすれば、全リストについて可変範囲の名前定義が設定される方法を考えてみました。 【前提】 シート「リスト」の1行目に項目名、2行目以降にそれぞれの選択肢を入力していく。たとえば、A1:C5に以下のように入力されている。 項目1 項目2 項目3 aaa1 bbb1 ccc1 aaa2 bbb2 ccc2 aaa3 bbb3 aaa4 シート「入力」に、入力規則のリストを利用してデータを入力していく。例えば、A1:D4に以下のようなフォーマットになっている。 氏名 項目1 項目2 項目3 田中 鈴木 佐藤 【回答】 まずは名前定義です。 1. シート「入力」のセルB2がアクティブセルの状態で、 2. Ctrl+F3(または、メニュー[挿入]-[名前]-[定義]) 3. 名前に LIST と入力 4. 参照範囲に以下の式を入力 =INDEX(リスト!$2:$2,MATCH(入力!B$1,リスト!$1:$1,0)):INDEX(INDEX(リスト!$1:$65536,,MATCH(入力!B$1,リスト!$1:$1,0)),COUNTA(INDEX(リスト!$1:$65536,,MATCH(入力!B$1,リスト!$1:$1,0)))) 5. [OK]ボタンをクリック 続いて入力規則です。 1. シート「入力」のセルB2がアクティブセルの状態で、 2. メニュー[データ]-[入力規則] 3. [設定]タブの[入力値の種類]ボックスの[リスト]をクリック 4. [元の値] ボックスでF3(ファンクションキーのF3)を押す 5.「LIST」を選択してEnterを押す 6. [OK]ボタンをクリック 最後にセルB2をB2:D4にコピー&ペーストして完了です。 なお、入力規則の手順の1.で、セルB2がアクティブセルでB2:D4を選択している状態、としていれば、それで入力規則を設定できます。 これにより、それぞれの項目に選択肢が増えても自動的に名前定義の参照範囲が拡大されますし、項目自体を増やしてもそれも自動的に反映してくれます。 これなら、リストを直接列挙のやり方よりも楽じゃないかと思うのですが、いかがでしょうか?
- izmlz
- ベストアンサー率55% (67/120)
>一々名前を定義するのが正直面倒なんです。 >だからリストを直接入力だからリストを直接入力したいのです。 状況理解しました。それでは、名前定義の参照範囲を可変にするのはいかがでしょう?具体的な手順は、以下です。 別シートのセルA1がブランクで、A2以降に選択肢が入力されているとします。 1.リストを入力しているシートを選択 2.Ctrl+F3 3.「名前」に「LIST」と入力 4.「参照範囲」に=$A$1:INDEX($A:$A,COUNTA($A:$A)+1) 5.Enterキーを押す 一回、こうして名前定義しておくと、A列に選択肢を追加/削除したら自動的に名前の参照範囲が拡張/縮小されます。 最初の名前定義の設定が面倒ですが、一回設定してしまえば、セルに入力できるので、入力規則のリストの元の値に入力するよりも使いやすいと思います。
お礼
> 一回、こうして名前定義しておくと、A列に選択肢を追加/削除したら自動的に名前の参照範囲が拡張/縮小されます。 こういうやり方があるんですね、勉強になりました。 ただ、今回めんどうと書いたのは選択肢を追加/削除ではなく、リストの種類が多いからなんです。 有難うございました。
- imogasi
- ベストアンサー率27% (4737/17069)
質問がむつかいい表現になっているが、表現がピンとハズレでは。 リストがA、B、Cと設定しても、Dが、セルに!入れられるようにすれば済む話ではないの。 ーー 注意情報が出るのは我慢しなければならないが。 データー入力規則ーリストー範囲F1:F3 「エラーメッセージ」タブ 情報 (そしてエラーメッセージボックスは空白)
補足
リストがA、B、Cと設定しても、Dが、セルに!入れられるようにしたいのではありません。 1.何も選択しない段階では空白 2.リストからA、B、Cのどれかを選択。 3.やはり選択止めたという場合に空白を再度選べる というようにしたいのです。 3の段階でセルをクリアすればいいことなのですが、それがわからない使用者が多いので「空白」も選択肢のひとつに含めたいのです。 現在、別シートに空白行を先頭にしたリストを作り、名前を定義して参照させてますが、選択肢は少ないけど異なったリストがたくさんあるので、一々名前を定義するのが正直面倒なんです。 だからリストを直接入力したいのです。 御理解いただけたでしょうか。
- sytkn
- ベストアンサー率43% (54/125)
空白の状態のセルに入力規則をリストで作り選択するのでしょう? > リストの最初の一行目に空白を設定したいのです。 空白のセルに空白を選択させる意味があるのでしょうか? 選択がない=空白なのだから、三択の状態になるのでは? ちなみに、全角スペースを入れて四択にしても、実際には全角スペースが入力されている状態になるので、空白に見えてもその上に入力をしようとすると規則違反でエラーが出ます。
補足
有難うございます。 文字を入力させたいのではなく、どれも選択されていない状態としての空白を「選択」出来るようにしたのです。
- izmlz
- ベストアンサー率55% (67/120)
入力規則の元の値に、選択肢を直接列挙するのではなく、選択肢を入力したセル範囲を入れるのはいかがでしょう?それだと「何も入力しない」を選択可能です。 同じシート上に選択肢のリストを表示させたくない、とのことでしたら、他のシートに選択肢のリストを入力して、その選択肢のリストに名前をつけ、その名前を入力規則の元の値に指定すれば良いと思います。その選択肢のリストが入力されたシートを非表示にすることも検討されればよいと思います。
お礼
有難うございます。 セル範囲で指定すれば大丈夫だということは存じており、質問にもそう書いたと思います。 今回は理由があって入力規則の元の値に、選択肢を直接列挙する方法を使いたいのです。すみません。
- mshr1962
- ベストアンサー率39% (7417/18945)
本当の空白では無いですが Shift+7で ' を設定して ',選択肢1,選択肢2,選択肢3 では駄目でしょうか?
お礼
なあ~るほど! 選択時にシングルクォーテーションが見えるのが難点ですが、シングルクォーテーションなら関数上、"" と見てくれますね。 有難うございます。
- ore-summer
- ベストアンサー率29% (133/454)
>全角スペースは空白ではありません。 というのがよく理解できないのですが…補足をお願いします。 文字を入力したいのであればエラーメッセージのチェックをはずせばすむんですが・・・
補足
文字を入力させたいのではなく、どれも選択されていない状態としての空白を「選択」出来るようにしたのです。 (ほんとはセルをクリアすれば済むことなんですが、そのよなリクエストがありまして・・・・)
お礼
> シートモジュールのWorksheet_Changeイベントで、Targetが[キャンセル]だったらTargetをクリア 素晴らしいアイディアですね! とても参考になりました、有難うございます。 (o。_。)o