• ベストアンサー

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

「入力規則」の「リスト」なんですが、こんな リストを作成することはできますでしょうか? たとえばこんな社員名簿を作ったとします。 セル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が「男」の場合男性社員の名前、 「女」の場合女性社員の名前をリスト表示させ さらに空白のセルはリストに表示させないようにしたいのです。 宜しくお願いします。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.2

C2 における[入力規則]の[元の値]ボックス内の式: =OFFSET(INDIRECT($C$1),,,COUNTA(INDIRECT($C$1)))

grapo
質問者

お礼

お礼が遅くなって申し訳ありませんでした。 おかげさまで無事解決できました♪ ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

C2の入力規則の元の値を =IF(C1="男",OFFSET(A2,,,COUNTA(A2:A10)),OFFSET(B2,,,COUNTA(B2:B10))) または 男=OFFSET(A2,,,COUNTA(A2:A10)) 女=OFFSET(B2,,,COUNTA(B2:B10)) で定義されていれば =IF(C1="男",男、女) ではどうでしょうか?

grapo
質問者

お礼

お礼が遅くなって申し訳ありませんでした。 おかげさまで無事解決できました♪ ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

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

  • 3連動以上する、可変リスト作成方法

    縦横可変リストをつくりました(エクセル技道場を参考) (一行目に部署名が入っていて、その下に所属の部員名といったリストをもとに、入力規則を使ってA列に部署名をリストから入力、B列にはA列に入力された部署に所属する部員をリストから入力。しかも部署名も氏名も可変範囲) 名前定義 部署3 参照範囲「=OFFSET($A$1,0,0,1,COUNTA($1:$1))」      氏名  参照範囲「=OFFSET(リスト2!$A$2,0,MATCH(!$A2,部署3,0)-1,COUNTA(OFFSET(リスト2!$A:$A,0,MATCH(!$A2,部署3,0)-1))-1,1)」 別シートのA列・B列に入力規則を設定で、AB列連動になりました。 C列(さらにDE・・)も可変リストで連動させることができるでしょうか。教えてください。 ちなみに以下の方法で試しました。 部署+氏名(企画課佐藤)で名前定義。(それぞれ名前定義していく) C列入力規則、参照範囲「=INDIRECT(A1&B1)で3連動のリストができるのですが、部署+氏名の名前定義を可変にする、例えば「=OFFSET(リスト1!$A$2,0,0,COUNTA(リスト1!$A:$A)-1,1)」 エラーがでます。参照範囲を可変にしないと「=リスト1!$A$3:$A$9」だとOK。 参照範囲の設定がわるいのか関数の使用方法がわるいのか、可変リストにするのが無理なのか、わかりません。 なにか、他に良い方法があれば、教えてください。よろしくお願いします。

  • 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(エクセル) 名前定義をしたリストから、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にはうまくリストが表示されません。こちらの方も解決法と表示されない理由をお願いいたします。

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

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

  • ドロップダウンリストで空白の数式セルの非表示化方法

    以下の数式を入力したセルを参照して、氏名をドロップダウンリストから選べるようにしたいと考えております。しかし、下記の方法ですと、空白のセル(参照セルに値が無かった場合に空白""が返されたセル)が空白のままドロップダウンリストに表示されてしまい、目的の氏名をリストから探す時に手間がかかってしまいます。 <想定しているシート>    A       B       C        D 1                           2 3 氏名     物品     帳票氏名  重複判定 4 A川B男   ○○     A川B男     1 5 A川B男   ××                0 6 C田D夫   ▽      C田D夫      1 7 C田D夫   ◆                 0 5 C田D夫   □                 0 ※C4の入力数式: =if(D4=1,A4,"") ※C1セルの入力規則の元の値に =offset(C4,0,0,counta(C4:C1000),1) 上記の方法でも、C1セルのドロップダウンリストには空白を伴って氏名が表示される形となってしまいます。 このように、数式が入力された結果空白になっているセルを、ドロップダウンリストで非表示にする方法はないでしょうか? どうぞよろしくお願い申し上げます。

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

    エクセルで、入力規則のリスト作成に関してご教示ください。 別シートにて、以下のように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) 上記式を名前定義して、リストに設定した場合には、重複したリスト表示が されてしまします。 名前定義を使ってどう設定すれば、重複をしないリストづくり可能でしょうか。

  • エクセル名前の管理

    エクセルの名前の管理について質問です。 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です。

  • エクセル2007 OFFSET関数 INDIRECT関数

    エクセル2007でOFFSET関数とINDIRECT関数を用いてセルの入力規則をして、リスト表示したいと思っています。 入力規則のリストは動的な値を設定したいと思っています。  ABCDE 1あいうえお 2かきくけこ 3さしすせそ 4たちつてと 5なにぬねの というシートA列に”データベース1”B列に”データベース2”・・・といった具合に名前を定義します。このデータベースは行がどんどん増えていく可能性があるため、名前の定義の参照範囲欄に (1)=OFFSET($A$1,0,0,COUNTA(A:A),1)  としました。 別シートに 表示したいセルで入力規則→設定タブ→入力値の種類→リストを選択。 元の値の欄に (2)=INDIRECT(A2&"1",FALSE)  としました。  ※A2は”データベース”と入力してあるセルです。 ここからがわからないのですが 上記式(1)、(2)の両方とも単独で使用した場合は欲しい値が得られるのですが、組み合わせて使用した場合はリストが出てこなくなってしまいます。 1)組み合わせて使うことはできないのですか 2)ほかにいい方法はありますか ということを質問します。 よろしくお願いします。

  • EXCELでリストを作成して、そのリストを選択した値を複数の入力するよ

    EXCELでリストを作成して、そのリストを選択した値を複数の入力するようにしたいが、どうしたらいいでしょうか? 例えばA1にリストを作成、リスト中”A,B,C,D"が選択できるようにする。 ”A"を選択した場合B1のセルに”あ”が表示、同時にC1のセルに”ア”が表示。 ”B"を選択した場合B2のセルに”い”が表示、同時にC2のセルに”イ”が表示....

専門家に質問してみよう