エクセル名前の管理について質問

このQ&Aのポイント
  • エクセルの名前の管理について、Aのシートでデータの入力規則に従い、別シート(B)で作成したリストを指定してプルダウンメニューで選択できるようにしています。しかし、COUNTA関数の範囲を指定する際にエラーが発生してしまいます。また、名前の管理を保存して閉じ、再度変更した箇所を開くと参照範囲が勝手に変わってしまうこともあります。
  • COUNTA関数の範囲指定において、R列のデータではなく、R3からR100までの範囲を指定したい場合、OFFSET関数の引数を変更する必要がありますが、エラーが発生してしまいます。
  • 名前の管理の参照範囲が勝手に変わることや、COUNTA関数の範囲指定においてエラーが発生する理由について、Excel 2007における仕様なのか、バグなのかを知りたいです。
回答を見る
  • ベストアンサー

エクセル名前の管理

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

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>=OFFSET(リスト!$R$3,0,0,COUNTA(リスト!R$3:R$100),1) 名前の定義の中身に数式を設定する際は,基本,必ず =OFFSET(リスト!$R$3,0,0,COUNTA(リスト!$R$3:$R$100),1) のように「絶対参照で」作成します。 そうしないと,「名前の定義を登録した瞬間のアクティブセルからの相対参照」で名前定義が作成され,結果して「名前定義を呼び出したセルからの相対参照」で計算されてしまい,固定のR列を計算してくれません。 (そういう動作をするという理解の上で相対参照で名前定義を利用する事も可能は可能ですが,今回ご質問の内容ではそういう使い方ではありません)

kuma33kuma
質問者

お礼

なるほど。 名前の定義の作成をいまいち理解できておりませんでした。 ご指摘どうり、R列を絶対参照することで、問題なく動作致しました。 ありがとうございました。

その他の回答 (1)

noname#203218
noname#203218
回答No.1

2003の入力規則の説明サイトにあった式です。私も2007ですが、問題なく実行出来ました。ご参考まで。 =OFFSET(Sheet2!$A$3,0,0,SUM((LEN(Sheet2!$A$3:$A$100)<>0)*1))

kuma33kuma
質問者

お礼

こちらでも確認しましたが、おっしゃられる方法でも求めている動作を致しました。 調べて頂きありがとうございます。 ただ、回答頂いたのに誠に申し訳ないですが、今回は関数の指摘を頂いた、No2の方をベストアンサーとさせて頂きます。 ありがとうございました。

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

  • 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と名前の定義セル参照拡張範囲

    只今エクセル勉強中です。よろしくお願いします。 画像の貼り付けがよくわからなかったので シート画面のコピーを添付データにしています。 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使用です。 よろしくお願いします。

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

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

  • 範囲に名前を付けたいのですが vba

    vbaでA1から2列目の最終行までの範囲に名前を付けたいのですが ActiveWorkbook.Names.Add Name:="範囲の名前", RefersToR1C1:="=Sheet1!R1C1:INDEX(Sheet1!C2,COUNTA(Sheet1!C1))" これで出来るのですが、 R1C1方式じゃない書き方にしたいのですが ActiveWorkbook.Names.Add Name:="範囲の名前", RefersToRange:="=Sheet1!$A$1:INDEX(Sheet1!$B:$B,COUNTA(Sheet1!$A:$A))" だと、「名前付き引数が見つかりません」になります。 RefersToRangeの部分が違うのと思うのですが、どうすればいいでしょう???

  • 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。 参照範囲の設定がわるいのか関数の使用方法がわるいのか、可変リストにするのが無理なのか、わかりません。 なにか、他に良い方法があれば、教えてください。よろしくお願いします。

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

    エクセル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シートの名前の「色」しか参照してくれないのでしょうか?なにか方法はありますか? 上手く文章で伝えることができずわかりづらいかとは思いますが、 よろしくお願いします。

  • エクセル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)ほかにいい方法はありますか ということを質問します。 よろしくお願いします。

  • シート名をセルから取得したい

    作業用シートのA列に Sheet1 Sheet2 Sheet3 と、入れ B列は、そのシートのA列の個数を 作業用シートに入力していきたいのですが、 作業用シートのb1に =COUNTA(Sheet1!A:A) と入力した場合、正しい個数が返りますが シート名をA列の文字列にしたくて、 ="COUNTA("&A1&"!A:A)" こんな感じにしたいのですが、 こうすると、これが文字列になってしまいます。 =COUNTA("&A1&"!A:A) これだと、数式が間違ってますというエラーになります。 数式内でセルを参照してシート名を指定する方法を教えてください。

  • 【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)の「名前」についても、元のリスト候補となるグループと同じ名前にした場合「別の名前を指定してください」とエラーがでます。 このエラーにより「データの入力規則」から指定する範囲も、「名前の定義」から指定する関数も「名前の管理」一覧に登録されることがわかりますが、テキストによっては同じ名前で登録できている説明もあるのです。 何が間違っているのでしょうか? いろいろ調べたりしましたが、いろいろな例示があるので、逆に混乱してきます(お手上げ状態)。 関数は学び始めたばかりですので、アバウトな解説よりも具体的にご指導いただるご回答をお願いいたします。

専門家に質問してみよう