• 締切済み

Excel、入力規則のリストについて

現在、A1とA2のセル(仮)に入力規則を設定し、それぞれ名前定義した範囲をリストとして表示するようにしています。 ※ただしくは、A1とA2は連動しており、A1で選択された値によってA2に表示されるようになっています。 A1の値を切り替えると、A2のリスト項目は問題なく切り替わるのですが、 A2のリストから選択して値を選択してあげるまで、A2は以前の値が保持されたままになります。 A1の値を切り替えると同時に、A2にA2のリスト項目の一番先頭のものを表示させることは出来ませんでしょうか。 お願いします。

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

#1です。 >Target.Offset(1, 0).Value = Range(Target).Value Targetは入力したセル(この場合はA1)で Target.Offset(1, 0)は一つしたのセル(A2)になります。 Range(Target).ValueはA1の名前の範囲の先頭の値です。 ですので入力したセルの、一つ下のセルに名前の範囲の先頭の値をセットになります。 >例えばB1とB2,C1とC2,D1とD2… If Target.Address = "$A$1" Then でA1限定にしていますので、この部分を If Target.Row = 1 Then とすれば1行目に入力するとこのマクロが実行されます。 列も指定するなら If Target.Row = 1 And Traget.Column < 5 Then 上記でA1:E1に対するマクロになります。

yd0x0x
質問者

お礼

自己解決といっていいのかはわかりませんが、 If Range("A1") <> "" Then Range("AB2:AB5").Name = Range("A1") End If で名前を定義してみました。ただし、これだとA1の値をいじるたび(記入ミスも含め)無限に名前が増えていきますよね…。 どうすればいいんでしょうか。。

yd0x0x
質問者

補足

ありがとうございます。 複数にも対応可能ということで安心して使用させていただけます。 さて、 お教えいただいたマクロを実行するために、連動をINDIRECTに切り替えたのですが、ここで1点問題が発生します。 INDIRECTでA1を指定する=A1のセルに入っている文字列と、リストの範囲の名前が同一になるかと思います。(エクセル初心者なので違っていたらどんどん突っ込んでください。) 今制作しているものに関しまして、A1のセルの値はユーザーが記入するものであり、値を指定することが出来ないので、範囲名を想定して定義しておくことが出来ません。。 何かいい方法はありますでしょうか。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

Excelの標準機能では出来ないのでマクロになりますが良いのでしょうか? 使用しているシートの見出しを右クリックして「コードの表示」を選択 表示された右上の枠に下記のマクロをコピーして貼り付けてください。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Target.Offset(1, 0).Value = Range(Target).Value End If End Sub

yd0x0x
質問者

お礼

すいません、 INDIRECTを使わず連動させていたので、マクロの効果が得られなかったようです。サンプルでINDIRECTを利用して連動させたものに当ててみると、無事に動きました。 ありがとうございます。 ちなみに、今お聞きさせていただいたのは、A1とA2の連動なのですが、 同一シートないに、このような箇所が複数あります。 例えばB1とB2,C1とC2,D1とD2… こういった場合は、 If Target.Address = "$A$1" Then Target.Offset(1, 0).Value = Range(Target).Value End If を複数行書き、$A$1の値を変えることで対応出来ますでしょうか。

yd0x0x
質問者

補足

お返事ありがとうございます。 マクロでも全然問題ありません。 ご指示通りに貼り付けてみたのですが、A2のセルは切りかわりません。 説明不足でわかりにくいところも多々ありますがお願いします。 ちなみに下記はどういう意味でしょうか。 Target.Offset(1, 0).Value = Range(Target).Value

関連するQ&A

  • エクセル リストの連動について教えてください。

    エクセルの入力規則のリストを連動させて使用させたいのですが上手くできないのでご教授願いたいと思います。 まず、A1に食材の分類(野菜、肉など)をリストで選択できるようにしてあります。 A1の結果によってB1に食材(人参、玉ねぎなど)をリスト表示したいのですが、 (別シートに分類ごとにセル範囲に名前を付けてあります) 元の値を=indirect(A1)とするとエラーが出ます。 (A1には先に入力してあります) 食材のセル範囲の名前をoffsetを使って定義しているのですが (確認しましたが関数自体は間違っていません) offsetを使っているとエラーになるようなのです。 (A1:A5のようにセル範囲名前を定義しているときはちゃんと出来ます。) いろいろ調べましたが名前の定義、リストの連動の仕方自体は間違っていないと思うのですが・・・ 連動させるときはセル範囲をoffsetなどを使って可変にすると出来ないのでしょうか?

  • エクセルの「入力規則」についてお尋ねします。

    エクセル2010です。 あるセルにデータの入力規則を設定します。 条件設定の入力値の種類を「リスト」にし、リストの値は、0,1,2,3と直接指定します。 これで設定したセルにはプルダウンで0,1,2,3を選択するか、直接0~3の数値の入力しかできなくなります。 ここまでは問題ないのですが、このセルにユーザー定義の書式、0"人"を設定して、1は1人と表示されるようにしました。そうすると、直接0~3の数値の入力ははじかれ、プルダウンで0,1,2,3を選択するしか入力ができなくなります。 リストに設定した値を正しく入力しているのに排除されるのはなぜでしょう? いろいろ試し、リストの値を、0,1,2,3と直接指定せず、セル範囲のリスト指定とし、そのセル範囲にもユーザー定義の書式、0"人"を設定しておけばクリアできました。 でも、たかだか数件のリストを指定するのにいちいちリストをワークシート上に作成し、そこにもユーザー定義の書式を設定しなければならないのは腑に落ちません。

  • Excelの入力規則でリストの値を選択できません。

    Excelの入力規則でリストの値を選択できません。 環境:WinXP Excel2003 表内のセルに入力規則でリストを設定しました。 リストは場所指定ではなく、入力規則タブのリスト欄にカンマで区切って直接値を入力しています。 リストの内容はメールアドレス用のドメインです。 ("@docomo.ne.jp,@softbank.ne.jp"というふうにドメインをリストにしています) 表は下記のような作りになっています。 A1セル:アカウント 直接入力 A2セル:ドメイン ドロップダウンリストから選択 ドロップダウンリストは正常に表示されるのですが、値を選択してもセルには何も表示されません。 試しにリストの値を"a,b,c"に変更したら正常に選択・表示されました。 ※添付画像のような状態から値を選択してもセルには何も表示されません 値が選択できないのは何が原因でしょうか? ご教示宜しくお願い致します。

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

    入力規則でリストを作り、リストの中には3つの項目があります。任意のセルで入力規則のリストから項目を選択した際、それぞれ1つづつ別の色で表示させたいのですがそのような方法はありますでしょうか?? 入力規則リストの項目の色を直接変えても、任意のセルでリストから項目を選択した際に黒色で表示されてしまうので、その設定した色で表示させたいのですが、どなたかお判りになる方はいらっしゃいますでしょうか?? 例えば1項目目→赤 2項目目→青 3項目目→黄 というようにしたいです!

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

    エクセルの入力規則機能について質問があります。 入力値の種類をリストに設定されていて、元の値には”=項目”と記載されています。 項目は別のシートのリストをさしているようで、セルをポップアップするとその別シートの セルの内容が選択できるようになっています。別のシートのリストの項目を削除すると セルをポップアップするとその項目だけ選択できなくなります。 このような機能(”=項目”の定義の仕方)について、どのように設定すればよいか教え て下さい。 よろしくお願いいたします。

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

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

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

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

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

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

  • Excelの入力規則のリストにカンマを表示したい

    Excelの「データの入力規則」でリストにカンマ(,)を表示したいです。 手順としてはメニューの「データ」-「入力規則」を選択し、 表示された画面で「設定」タブを選択し「入力値の種類」で「リスト」を 選択します。 その後、「元の値」でカンマ(,)が含まれたシートのセル範囲を選択すれば 表示されますが、直に値を「元の値」に指定する場合にカンマ(,)をエスケープする方法が分かりません。 お分かりの方は教えてください。

  • エクセルの入力規則リストで1行目に空白を設定したい

    エクセル2000です。 入力規則でリストからの入力をさせる場合、リストの最初の一行目に空白を設定したいのです。 もちろんシートにそのようなリストを作ってリストをセル範囲で指定すればそうなるのですが、セル範囲指定でなく、「元の値」に直接入力でリストを指定する場合、カンマ区切りの先頭に何も入れず、 ,選択肢1,選択肢2,選択肢3 とすると、最初のカンマの前は反映せず3択のリストになってしまいます。最初のカンマの前を全角スペースとすればできるのですが全角スペースは空白ではありません。 これはどうしようもないのでしょうか?

専門家に質問してみよう