• ベストアンサー

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

HohoPapaの回答

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.7

>別シートの入力セルへの入力作業を >このシートに入力することでリストからの選択にしたいのです という要望に >社名を名前にして行方向に「名前の定義」の範囲を >D列からR列まで設定する という手段をどのように絡めるツモリなのか疑問に思ってはいました。 >入力表のA列で選択した会社名を >名前の定義の会社名からB列の入力対象行を決めてやる必要がありました 質問に添付した画像はSheet1(顧客リスト)ですね? >意味が通じないかもしれませんが はい、推測はできますが コーディングできる内容ではありません。 これらのシート(入力表というシートを含め)のサンプルを 限りなく本物に近いレイアウトで示し やりたいことを詳しく説明し 再質問したほうがいいと思います。

akira0723
質問者

お礼

最悪の状況は避けられたようで少しは安心しました。 改めて質問させていただきます。 何度も本当にすみませんでした。

関連するQ&A

  • エクセルの名前の定義について。

    ご覧いただきありがとうございます。 エクセルの名前の定義についての質問です。 (1)【sheet1】 A2:A6に『aa』、 B2:B10に『bb』、 C2:C6に『cc』という名前を付けたとします。 ちなみにそれぞれのセルには文字列が入力されています。 (名前の定義の《範囲》はブックではなく、sheet1) (2)【sheet2】 B2:D6に『aa』、 B7:D15に『bb』、 B16:D20に『cc』と、sheet1と同じ名前を付けました。 それぞれB列・C列・D列には数字が入力されています。 (名前の定義の《範囲》はブックではなく、sheet2) ちなみにA列には、sheet1に入力されている文字列と同じものが入力されています。 A2:A6にはsheet1で『aa』と名前をつけた範囲と同じ文字列。 A7:A15にはsheet1の『bb』と同じ文字列。 A16:A20には『cc』と同じ文字列です。 ここからが本題です! (3)【sheet3】 A2に何らかしら関数を入れて、【sheet1】で作った名前(aaやbbやcc)が1つ表示されるようにしたとします。 そしてB2には、A2で表示された名前の中の文字列が1つ表示されるようにします。 (例えばA2に『aa』と表示されたら、B2には◯◯) 更にC2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』の中のB列と、A列にある◯◯とが交差するセルに入力されている数字(図でいう(5))を表示させる関数を入力したいのです。(INDEXやINDIRECT、MATCH関数など…) 他に例えば、A2に『bb』(sheet1の名前)、B2に★★と表示されたら、C2には【sheet2】の名前『bb』の中のB列と、A列にある★★が交差するセルに入力されている数字を表示させたいです。 同じように、今度は、D2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』のC列と、A列にある◯◯の交差するセルに入力されている数字を表示させたいです。 長々とややこしくてすみません… 説明分かりますでしょうか?? つまりは【sheet3】のC2・D2・E2に入力する関数が知りたいです。 自分なりに関数を入力してみたのですが、A2で表示された名前がsheet1での名前なので、sheet2の情報を引き出す事が出来ません。 わざわざsheet1とsheet2でシートを分けたのは、同じシート内で同じ名前が付けられないと思ったからです! どなたか分かりましたら教えて下さい! どうぞよろしくお願い致します。 ※ちなみに、貼付した図の『・』は以下省略の意味で使ってます。

  • 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 ■その他 ・参照範囲で設定している記述が、参照ではないからでしょうか?(自己定義関数を、名前の定義で呼び出している感じで、間違った使い方をしているから?)

  • エクセルVBAでセルの値を名前定義連続

    いつもお世話になってます。 エクセルVBA2013で質問です。 データ シートのC3から順次行方向にD3,E3と名前が入っています。 行方向に入る数は、下記のコードで取得できる数が上限になります。 i = Range("B4:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count + 2 そのC3から順次行方向のセルの値を名VBAで名前を定義したいと思っています。 参照範囲は、C3ならC列全体、D3ならD列全体・・・としていきたいです。 各セルに入る値は変化することがあります。C3に「あいう」と入力したり「AAA」と入力したりと変化します。その度に名前の定義を変更したいです。(イベントでなく普通にボタンを押して変更する) 名前が変わるので、同じ範囲で名前が違うものがいくつもできないようにしたいです。 すいません、色々条件ありますがどうぞよろしくお願いいたします。

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

    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」のように固定してしまえば上手くいくのですが、これだとデータを付け加えるたびに修正しないといけません。 二つを組み合わせてリストを使う方法はありませんか?

  • エクセル名前の定義で行挿入で追従させたい

    修正中 名前の範囲を可変にしたい 例えば、C4セル~E17セルに「あああ」という名前を定義しており、続いてC19セル~E32セルに「いいい」という名前を定義し、さらにC34セル~E47セルに「ううう」という名前を定義していたとして、この中のいずれかの行を増やすことがあるとします。 例えばC4セルからE17の間に1行増やしたとすると、通常名前の範囲が意図した所より1行ずれてしまいますが、自動で名前の参照範囲を変更して、C4セル~E18セルが「あああ」、C20~E33セルが「いいい」、C35~E48セルが「ううう」など自動で追従させるにはどうすればよろしいでしょうか? さらにもし、自動で追従させることができたとして、名前を定義したシートは、1週間毎にシートを増やしていくのですが、ブックレベルで名前を定義しておけばよいのでしょうか?ブックの中には、元データのようなシートも存在しており、そちらには名前の定義は必要ないのですが、ブックレベルにした場合悪影響がでないかな?というのがあります。かといって、シートレベルで名前を定義しておくと、シートを増やす度に名前の定義が増えていくので、それもどうかな?と思っています。 状況によると思いますが、名前がどんどんシート毎に増えていくのは好ましくない気がするんで アクティブシートでしか名前の定義を使用しないなら、ブックレベルで名前を定義しておけばよいですよね? お手数をおかけいたしますが、よろしくお願いいたします。

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

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

  • Excelにて、消したシートに名前定義したリストが使えるのはなぜ?

    Excelのsheet1にて表を作り、 sheet2には、書き出したデータを名前定義し、 sheet1の表へ入力規則よりその名前を元の値としてリストを作り、 選択入力できるようにしていた書類を、 他の従業員にメールにて送り、 毎月、表を記入してもらい、月末に提出してもらうよう指示しました。 そして、その返信メールにて返ってきた添付データを確認すると、 sheet2が消されて(削除?)いました。 しかし、入力規則のリストは普通通り使えていますし、 定義した名前のリンク先を見ると、「=sheet2!$A$1:$A$15」となっており、 消されているシートが定義されていました。 でも、自分で元データにてシートを削除してみると リストは消え、下向きの黒三角しか出てきません。 どうやれば、シートを消しても消したシートに名前定義したデータを リスト化させることが出来るんでしょうか? 分かり方お教え下さい。宜しくお願い致します。

  • エクセル 名前定義の範囲について

    エクセル 名前定義の範囲について質問です。 始まり・終わりの行を示す特定の文字列を設定し、 それを元に自動で範囲の行数を変化させるようなことはできませんでしょうか。 例)A列に、行範囲を示す文字列を記述。  B列以降が実際の範囲となる。  A 1 この行から 2  3  4  5  6 この行まで 7 というように記述されていた場合、 「この行から」「この行まで」という文字列の位置を元に、 名前定義の範囲が自動で「B1:C6」となるような方法を探しています。 「この行から」の位置をA3に変更した場合、 名前定義された範囲も、自動で「B3:C6」に変化して欲しいのです。 ただし、文字列を元に変化するのは行だけで、列の範囲は固定で構いません。 極力マクロを使用しない方法で、有効なものがございましたら ご指導のほどよろしくお願いします。

  • エクセル 名前の定義・管理について

    エクセル2007の名前の定義・管理について教えてください。 あるシート(Aシート)のセルの入力規則に他シート(Bシート)の範囲(B2:B4に赤・青・白を入力されている)を定義した名前(名前を色とします)を使用しています。 別途違う目的のためBシートをコピーし、若干修正してCシートを作り、また、その後、Cシートをコピーし、修正してDシートを作りました。ただし、Cシート、Dシートの名前を定義した範囲(赤・青・白)は全く修正していません。この時点で名前の管理から定義された名前を見ると「色」という同じ名前が3つ作成されております。(参照範囲は、それぞれB~Dシートのものと異なっています。) で今回、Dシートが一番最新のもので利用しているので、Dシートの名前を定義した範囲(B2:B4の赤・青・白)を(B2:B5の赤・青・白・緑)と変更したところ、Aシートの入力規則の名前は色ですが、(赤・青・白)しかリストにでてきません。(緑が出てこない)。色という名前が3つあるのがいけないのだと思い、Dシートを参照している以外の「色」の名前を削除したら、Aシートの入力規則は色と入力されているにもかかわらず、全く機能しなくなってしまいました。 いろいろ調べてみたのですが、対処法がわからないので教えてください。なぜ、Dシートを参照している名前の「色」は、入力規則に入力されているにもかかわらず、リンクしてくれないのでしょうか? そもそもシートをコピーしても色という名前が3つできても、最初にリンクしているBシートの名前の「色」しか参照してくれないのでしょうか?なにか方法はありますか? 上手く文章で伝えることができずわかりづらいかとは思いますが、 よろしくお願いします。