• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:名前の定義を使ったリストを動的に)

Excel2003での動的なリスト作成方法と名前の定義の組み合わせについて

kagakusukiの回答

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 例えば、次の様な方法は如何でしょうか。  まず、Sheet2の B1セルに  名前1 C1セルに  名前2 D1セルに  名前3 と入力しておき、 B列~D列の2行目以下に、Sheet1のB1セルに表示させる各リストのデータを入力しておきます。  そして、Sheet1のA1セルの入力規則の「元の値」欄には、 =INDIRECT("Sheet2!B1:D1") と入力しておきます。  続いて、Sheet1のB1セルの入力規則の「元の値」欄には、 =OFFSET(INDIRECT("Sheet2!B2"),,MATCH($A1,INDIRECT("Sheet2!B1:D1"),0)-1,COUNTA(OFFSET(INDIRECT("Sheet2!A:A"),,MATCH($A1,INDIRECT("Sheet2!B1:D1"),0)))-1) と入力しておけば良いと思います。

tabasuko_otoko
質問者

お礼

すごい! 名前の定義を使わなくてもできるものなんですね。 関数の意味はよく分からないんですが、これを元に勉強してみます。 ありがとうございました!

関連するQ&A

  • エクセル名前の管理

    エクセルの名前の管理について質問です。 Aのシートでデータの入力規則に従い、別シート(B)で作成したリストを指定してプルダウンメニューで選択できるようにしています。 Bのシートでは列単位でリストを作成しています。 リストを追加すると自動でプルダウンメニューに追加するには、COUNTA関数を使って、入力の個数を戻り値としてとらえればできるのはわかったのですが、 名前の管理の参照範囲を =OFFSET(B!$R$3,0,0,COUNTA(B!$R:$R)-1,1) とすると上手くいくのですが、 COUNTAの範囲を「R列」全てではなく、R3~R100までとした時 =OFFSET(リスト!$R$3,0,0,COUNTA(リスト!R$3:R$100),1) なぜかエラーになってしまいます。 R2にデータが入っておりこれはカウントさせたくない為、上では戻り値-1させています。 これをR3~R100までのカウントにして-1を省いてみました。 セルに =COUNTA(リスト!R$3:R$100) として、R列のデータ入力されている個数を表示させるときちんと出るのですが、上の構文だとおかしいのでしょうか? また、気になるのは、名前の管理を保存して閉じ、再度変更した箇所を開くと =OFFSET(リスト!$R$3,0,0,COUNTA(リスト!XF$3:XF$100),1) と指定範囲が勝手に変わっています。 名前の管理の参照範囲が勝手に変わることなどあるのでしょうか? バグなのか、関数の指定がおかしいのかがわかりません。 どこが悪いのか、またどのようにすればいいのかわかる方ご教授お願い致します。 使用しているのはMSオフィスのエクセル2007です。

  • Excel(エクセル) 名前定義をしたリストから、indirect関数を利用して選択入力できるようにしたいのですが… 

     次のようなことができず困っています。  Sheet1とSheet2があり、Sheet2には"数字"、"英語"と名前定義された2つのリストがあります。Sheet1のセルA1には"数字"か"英語"どちらかの文字列を選択入力し、B1には、もしA1に"数字"を入力していればリスト"数字"から、もし"英語"を入力していればリスト"英語"から選択入力できるようにしたいのです。つまり、Sheet1のセルA1、B1の入力規則の種類をリストとして、元の値をそれぞれ、    ・Sheet1!A1には=数字,英語    ・Sheet1!B1には=indirect($A1) としています。 質問(1)) ここまでなら何の問題もないようですが、問題はSheet2の"数字"と"英語"の参照範囲です。    ・"数字"の参照範囲は=Sheet2!$A$1:$A$10,Sheet2!$C$1:$C$10    ・"英語"の参照範囲は=Sheet2!$B$1:$B$10,Sheet2!$D$1:$E$10 と複数範囲におよんでいる場合、Sheet1!B1にはうまくリストが表示されません。解決法、およびなぜ表示されないのか、どなたかご教示お願いいたします。 質問(2)) Sheet2の"数字"と"英語"の参照範囲を    ・=OFFSET(Sheet2!$A$1,,,COUNTA(Sheet2!$A:$A))    ・=OFFSET(Sheet2!$B$1,,,COUNTA(Sheet2!$B:$B)) とした場合も同様にSheet1!B1にはうまくリストが表示されません。こちらの方も解決法と表示されない理由をお願いいたします。

  • 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)" とすると、 元の値はエラー・・・とエラー表示がでて、リストが表示されません。 どのようにしたらリストが表示されるようになりますでしょうか。 もしくは、増減するセル範囲を空白なしに表示させるにはどのようにしたらいいでしょうか。 質問の説明が不十分すぎて申し訳ないですが、分かる方教えていただけたら嬉しいです。

  • 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使用です。 よろしくお願いします。

  • リストの結果によって変わるリストの作成について

    「入力規則」の「リスト」なんですが、こんな リストを作成することはできますでしょうか? たとえばこんな社員名簿を作ったとします。 セルA1に「男」 セルB1に「女」 セルA2からA10に男性社員の名前 セルB2からB10に女性社員の名前 この表を使ってセルC1に入力規則のリストを作成し「男・女」 を選択できるようにします。 次にセルC2にはセルC1が「男」なら男性社員、「女」なら女性社員 の名前がリストになるようにします。 ここまでは範囲の名前付け(A2からA10の範囲に「男」、B2からB10 の範囲に「女」と名前付け)とINDIRECT関数を使ってできました。 ここからなんですが 社員の名前は後から増えてもいいように範囲を多くとっています。 セルA2からA10までを男性社員の名前が入るようにしているのですが 実際名前が入力されているのはA2からA5までです。 この場合名前のリスト範囲をA2からA10までにするとA6からA10の 空白のセルまでリスト表示されてしまいます。 そこで =OFFSET($A$2,,,COUNTA($A$2:$A$10)) を併用したいのですが 「挿入」→「名前」→「定義」のところで「男」 の参照範囲を「=OFFSET($A$2,,,COUNTA($A$2:$A$10))」 にするとリストが表示されなくなりました。 説明が下手で長くなってしまいましたが 簡単に言うと セルC1に「男・女」のリストを作成。 セルC2にセルC1が「男」の場合男性社員の名前、 「女」の場合女性社員の名前をリスト表示させ さらに空白のセルはリストに表示させないようにしたいのです。 宜しくお願いします。

  • セル範囲に名前を定義する

    セル範囲に名前を定義して、計算式の中で使いたいのですが、 例えば、A列全体にAという名前、B列全体にBという名前を付けて、 =Counta(A)と記述すれば、A列にあるデータの個数が出てきます。 =Counta(B)と記述すれば、B列にあるデータの個数が出てきます。 一つの計算式にCounta関数が10個以上あって、AとBを書き換えるのが面倒なのですが、 特定のセルC1にAと入力したらCounta(A)、Bと入力したらCounta(B)になるようには出来ないでしょうか? =Count(C1)と入力してもダメでした。

  • 【Excel】リストの追加項目関数式でエラーばかり

    セル範囲に名前を付けたグループを指定し、入力規則でリストを使って、コンボボックスから選択できるように設定する。 たとえばシート2のA1セルに「練習」という名前を付けた項目すべてをコンボボックスから指定したい。 しかし、このリストは追加される可能性があるが、範囲指定を繰り返すのは面倒なので関数にしたい。というケースです。 質問(1)シート1のリスト一覧に項目が増えた場合でオフセット関数を使う場合、以下の式でよいらしいのですが… まずは式の読み方についてです。 =OFFSET($A$1, 0, 0, COUNTA($A:$A), 1) OFFSETは =OFFSET(基準,行数,列数 [,高さ,幅]) 『基点のセルから○行△列移動し、そこから高さと幅の分だけ範囲選択します。 基点のセルを動かす必要がない場合は、行と列は0を指定します。』 上の例の場合ですとこの式は 起点のセル→$A$1(A1を絶対参照とする) 行数→0 列数→0 しかし COUNTA($A:$A), 1 については、($A:$A)はA列を絶対参照ということなのでしょうか? またこの1はどのような意味なのでしょうか? 質問(2) 実際この関数を定義する場合「データ」の「名前の定義」の「参照範囲」に入力するそうですが…エラーとなってしまいます。 質問(3) また、(2)の「名前」についても、元のリスト候補となるグループと同じ名前にした場合「別の名前を指定してください」とエラーがでます。 このエラーにより「データの入力規則」から指定する範囲も、「名前の定義」から指定する関数も「名前の管理」一覧に登録されることがわかりますが、テキストによっては同じ名前で登録できている説明もあるのです。 何が間違っているのでしょうか? いろいろ調べたりしましたが、いろいろな例示があるので、逆に混乱してきます(お手上げ状態)。 関数は学び始めたばかりですので、アバウトな解説よりも具体的にご指導いただるご回答をお願いいたします。

  • 別シートデータからの重複のない入力規則リスト作成

    エクセルで、入力規則のリスト作成に関してご教示ください。 別シートにて、以下のようにC列にデータがあります。 データ数は可変です。 A列 B列 C列 No 種別 データ 1 A データA 2 A データA 3 A データA 4 A データB 5 C データC 6 A データB 7 C データB     :     : 上記データを使用して、入力規則で、リスト作成をしたいのです。 =OFFSET(シートA!$A$2,0,0,COUNTA(シートA!$A:$A)-1,1) 上記式を名前定義して、リストに設定した場合には、重複したリスト表示が されてしまします。 名前定義を使ってどう設定すれば、重複をしないリストづくり可能でしょうか。

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

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

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

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