自動で名前の定義を行う方法とは?

このQ&Aのポイント
  • 名前の定義を自動化する方法について質問します。
  • ドロップダウンリストを利用して名前の定義を表示させたいと思っています。
  • 指定した範囲の値を自動で更新し、ドロップダウンリストに表示する方法を知りたいです。
回答を見る
  • ベストアンサー

名前の定義を自動でできる方法ってないでしょうか?

名前の定義を自動でできる方法ってないでしょうか? セルA1に 定義する名前 セルA2に 範囲(はじまり) セルA3に 範囲(終わり) ドッロップリストにて定義した名前を表示する。 例えば、A1 野菜:B1 肉 A2 キャベツ:B2 豚 A3 レタス :B3 牛 D1にドロップダウンリストで範囲をA1:B1で選択 E2でドロップダウンリストで範囲をINDIRECT(D1)で選択 名前の定義を 範囲(A1:A3)名前を(上端行) 範囲(B1:B3)名前を(上端行) としていた場合。 B1を魚、B2を鯛、B3を鯵に変えた場合、自動的に名前の定義(名前)が「肉から魚」に変わり 鯛や鯵をドロップダウンリストに表示したいのですが? 出来るのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No1です。 例えばシート2でA1セルに野菜、A2セル以下にはキャベツなどがあり、B1セルには肉、B2セル以下には牛などが入力されているとします。 そこで例えばA列に野菜や肉と入力したときにB列に該当するキャベツや牛をドロップダウンリストで選択できるようにするためには例えばB1セルからB10セルを選択した後で「データの入力規則」のリストで数式には次の式を入力します。 =INDEX(INDIRECT("Sheet2!A:B"),2,MATCH(A1,INDIRECT("Sheet2!A1:B1"),0)):INDEX(INDIRECT("Sheet2!A:B"),10,MATCH(A1,INDIRECT("Sheet2!A1:B1"),0)) この式ですとシートが変わっても対応できます。シート2のB1セルを魚にして試験すればよろしいでしょう。

gontaban
質問者

お礼

INDIRECTに置き換えて出来ました。 ありがとうございました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 外していたらごめんなさい。 No.1さんへのお礼欄の >データが別シートある場合は、出来るのでしょうか? 入力規制では別シートを直接参照できないのですが? に関してです。 ↓の画像で別Sheet(今回はSheet2)にデータがあるとします。 Sheet2のA1~C1も名前定義します。 仮に「種類」と名前定義すると Sheet1のD1セルの入力規則のリストから 数式欄に =種類 と入力すればOKだと思います。 E2セルはすでにお使いの =INDIRECT(D1) で大丈夫です。 以上、参考になれば良いのですが 最初に書いたように的外れなら 読み流してくださいね。m(__)m

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

名前の定義を使ってセル範囲を指定することをしなければよいでしょう。 例えばE2セルへの入力の式を次のようにすることでお望みのようなことができますね。 データの入力規則で「リスト」にし、元の値には次の式を入力します。 =INDEX($A:$B,2,MATCH($D$1,$A$1:$B$1,0)):INDEX($A:$B,10,MATCH($D$1,$A$1:$B$1,0)) B1セルを魚にしてD1セルを魚にすればB2セル以下のデータがE2セルのリストに表示されます。

gontaban
質問者

お礼

ありがとうございました。 データが別シートある場合は、出来るのでしょうか? 入力規制では別シートを直接参照できないのですが?

関連するQ&A

  • 表を利用した名前の定義・入力規則設定について

    はじめまして。 エクセルの入力規則・名前の定義でどうしても分からない事が ありましたので、教えて頂けますでしょうか? 【前提】以下のような表が作成されているとします。 A列   B列 果物   りんご 果物   みかん 果物   いちご 野菜   ピーマン 野菜   にんじん 野菜   なす その他  肉 その他  魚 【要望】 セルC1に、果物のみ(「りんご」「みかん」「いちご」)が表示 されたドロップダウンリストを作成します。 同様に、セルD1に、その他のみ(「肉」「魚」)が表示 されたドロップダウンリストを作成します。 【質問】 要望を満たす為に、入力規則を設定したいのですが、  >前提にある表の中から、  >A列が果物であるデータだけを取り出し、  >そのB列をリストの元の値とする とする方法が分かりません。 「りんご」「みかん」「いちご」だけを選択し、名前定義をする、 という方法もあると思いますが、 そうではなく、あくまで「果物」というキーを指定して 名前を定義したいのです。 以上、よろしくお願いします。

  • INDIRECTと名前の定義でリストを作成

    どなたか分かる方教えください。 A1のセルにコードを入力、B1のセルに商品 を入力したいと考えています。 但し、B1の商品はA1で指定したコードの商品郡を入力するようにしたいのです。 コードと商品郡は別シートに作成しています。 別シート)    A  B  C  D  E  1  2 A  B  C  D  E   3 ・  ・  ・   ・   ・  4 ・  ・  ・   ・   ・ 2行が全てコード、3行以降がA~Eの商品郡 になります。 3行目以降のセルには関数を入れて 別シート_2 より集計したものになります。 商品郡の数はコードによってバラバラです。 2行目の記入セルを「名前の定義」で「コード」としてあります。 各列を 「名前の定義」、「A」 {範囲:A3:A150}                「B」 {範囲:B3:B150}のようにしました。※今後増減するため、セルは多く設定しました 入力シートの A1にリスト範囲"=コード" B1に"=INDIRECT(A1)"  リストはでたのですが、空白セルが多いため使いづらく 空白セルを表示させないために 別シート!A1 に ="別シート!A3:A"&COUNTA(A3:A150) と入力し自分なりに可変するような式を作ったのですが、 入力シート B1に リスト範囲"=A"とすると 望むようなリストが出来たのですが、            リスト範囲"=INDIRECT(入力シート!A1)" とすると、 元の値はエラー・・・とエラー表示がでて、リストが表示されません。 どのようにしたらリストが表示されるようになりますでしょうか。 もしくは、増減するセル範囲を空白なしに表示させるにはどのようにしたらいいでしょうか。 質問の説明が不十分すぎて申し訳ないですが、分かる方教えていただけたら嬉しいです。

  • 名前定義で定義している値が、自動的に可変してしまう

    Excel の質問です。 名前の定義について、教えて下さい。 僕が仕様を理解していないのか、関数の記述が間違っているのでしょうか ■現象 シートクリック時に、定義している関数の値が可変してしまう ■データ ワークシート[Sheet1]上データ  |A     |B ------------------------------------ 1|りんご   | 2|みかん   | 3|バナナ   | 4|パイナップル| 5|もも    | A1 ~ A5 は、データを直接入力 ■名前の定義 (1).数式リボン> 名前の管理> 新規作成 (2).以下 名前: 最終行番号 範囲: Sheet1 参照範囲: =MAX(INDEX((Sheet1!A:A<>"")*ROW(Sheet1!A:A),0)) (3).D10 に、「=最終行番号」と入力 ■結果 ・入力直後、D10 は、5 となるが、どこかのセルをクリック後、名前の定義を見ると「A:A」になっていない。  ・異なる列範囲になっている  ・規則性不明 ■期待結果 ・上記の場合、どのセルをクリックしても、名前の定義で定義した範囲が「A:A」のままであって欲しい。 ■現象確認 Excel2010 ■その他 ・参照範囲で設定している記述が、参照ではないからでしょうか?(自己定義関数を、名前の定義で呼び出している感じで、間違った使い方をしているから?)

  • 名前の定義(Excel2003)

    名前の定義についてのご質問です。 例えばA1に「果物」、A2~A4にみかん、りんご、バナナとして、A1~A4を選択し[挿入]⇒[名前]⇒[作成]⇒[上端行] これでA2~A4は「果物」という名前がつきます。 ここからが問題なのですが、 A1に「1月」、A2~A32に、1日、2日、3日・・・、31日として、A1~A32を選択し[挿入]⇒[名前]⇒[作成]⇒[上端行] 結果、A2~A32を選択すると「_1月」という名前がつきます。 なぜ、アンダーバーが付いてしまうのでしょうか? また、アンダーバーと消そうとすると、 「ジャンプ先のセル参照、または選択する範囲の名前を正しく入力してください。」と出ます。 解決法が分かる方、お願いします。

  • エクセル セルを結合させてドロップダウンリストを作りたい

    Office2003を使用しています。 エクセルで、結合させたセルの列を一つの列とみなしてドロップダウンリストを作成したいのですがうまくできません。 言葉が足りずにわかりにくいかもしれませんが、例えば1行目のA列とB列、2行目のA列とB列、3行目のA列とB列・・というようにセルを結合させていき、その列にドロップダウンリストを作成したいのです。 結合させた後に範囲を指定してドロップダウンリストを作成しようとすると、A列とB列の2列にドロップダウンリストを作成するように出来上がってしまいます。 何か方法はありますでしょうか? 宜しくお願いします。

  • エクセルで名前の定義を自動化したい

    いつもお世話になっております。 添付のようにエクセルシートのA列に社名を入力したら、社名を名前にして行方向に「名前の定義」の範囲をD列からR列まで設定するようにしたいのですが。 これまでは私が都度やっていたのですがここでいろいろ教えてもらっているうちにだんだん欲が出てきた次第です。 目的は別シートの入力セルへの入力作業をこのシートに入力することでリストからの選択にしたいのです。 NETで調べてみたら数行のマクロで出来そうなのですがその数行が悲しいかな出来ないのでHELPです。

  • INDIRECTと名前の定義セル参照拡張範囲

    只今エクセル勉強中です。よろしくお願いします。 画像の貼り付けがよくわからなかったので シート画面のコピーを添付データにしています。 A列に分類(データA4:A5) B・C列に商品というデータがあるとします。 名前の定義 範囲から作成でA3:C5を上端行基準で 分類・パソコン・プリンタと名前をつけます。 E2セルにデータの入力規制で =分類 とします。 E2の入力値に対してF2の入力範囲を切替えたいと思います。 そこでF2の入力規則で =INDIRECT(E2) とします。 ここまではOKなのですが、分類・パソコン・プリンタの種類が増える事を 想定し名前範囲を拡張したいと思います。 そこで名前の定義で 分類の範囲を =OFFSET(Sheet1!$A$4,0,0,COUNTA(Sheet1!$A:$A)-1,1) に変更 パソコンの範囲を =OFFSET(Sheet1!$B$4,0,0,COUNTA(Sheet1!$B:$B)-1,1) プリンタ範囲も同様に変更しました。 そして6行目以降に項目を追加すると E2セルではプルダウンに追加したものが反映されます。 しかしF2ではプルダウン項目がなくなりました。 何が間違っているのでしょうか? Excel2007使用です。 よろしくお願いします。

  • 名前の定義を使ったリストを動的に

    Excel2003を使っています。 「=OFFSET(Sheet2!$B$2,,,COUNTA(Sheet1!$B:$B)-1)」という形で名前の定義を行います。 入力規則のリストにこの名前を指定することで、後でSheet2にデータを付け加えても修正する必要のない動的なリストを作ることができますよね。 それともう一つ、入力規則のリストに「=INDIRECT(A1)」と指定することで、A1セル内に書かれてある文字の名前を指定したことになり、リストとして扱えますよね。 この二つの組み合わせはできないのでしょうか? 「=OFFSET(Sheet2!$B$2,,,COUNTA(Sheet1!$B:$B)-1)」に「名前1」とつけたとし、Sheet1のA1セルに「名前1」と記入し、B1セルの入力規則に「=INDIRECT(A1)」を指定してもエラーとなってしまいます。 「=OFFSET(Sheet2!$B$2,,,COUNTA(Sheet1!$B:$B)-1)」という形でいくつか動的なリストを作り、Sheet1のA1セル内を書き換えることでB1セルのリストが動的に変わるということをしたいのですが上手くいきません。 「=OFFSET(Sheet2!$B$2,,,COUNTA(Sheet1!$B:$B)-1)」ではなく、「=Sheet2!$B$2:$B10」のように固定してしまえば上手くいくのですが、これだとデータを付け加えるたびに修正しないといけません。 二つを組み合わせてリストを使う方法はありませんか?

  • excel2003の vbaの名前定義について

    excel2003の vbaで、名前定義した範囲から、任意のセルの値を抜き出したいです。 例えば、Aという名前定義した範囲があるとします。 AはA1セル~A10セルの範囲です。 そして、たとえいばA3セルの値を取得したい場合。 名前定義した範囲を使ってどのように表現すればよいでしょうか?

  • ドロップダウンリストの連動

    いつも大変お世話になっております。 エクセルで、セルO6にA社とB社を名前の定義で登録しドロップダウンリストで選択できるようにしました。 セルD14に、セルO6でA社を選択した場合には、A5052(H)とA5052(R)がドロップダウンリストで選択でき、同じく、セル14に、セルO6でB社を選択した場合には、アルハイスとアルジェイドがドロップダウンリストで選択できるようにしたいです。 こちらで拝見したり、ネットで調べたのですが、列が同じの場合はやれそうでしたが、同列以外ではできませんでしょうか? (INDIRECTや、ドロップダウンリストを使用してやったりできるのでしょうか) 説明が上手く出来ず申し訳ありません。 ご教授して頂けたらありがたいです。 よろしくお願いします。

専門家に質問してみよう