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

このQ&Aのポイント
  • エクセルで名前の範囲を可変にする方法についての質問です。
  • 名前の範囲を自動で追従させるための方法や、ブックレベルとシートレベルでの名前の定義について考えています。
  • アクティブシートでの名前の定義のみを使用する場合、ブックレベルで名前を定義しておくことができます。
回答を見る
  • ベストアンサー

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

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

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

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

>例えばC4セルからE17の間に1行増やした ふつーに行を挿入すれば、勝手に自動で追従します。 例:添付図 C4:E17に名前を定義する たとえば10行目を行選択、右クリックして行を挿入する 改めてC4:E18には元の名前が追従している。 もちろん2番目、3番目の枠の名前定義も勝手に追従しています。 >名前を定義したシートは、1週間毎にシートを増やしていく 通常の手順は次の通りです: 1.ひな型シートに『ブックレベルで』名前定義をしておく 2.ひな型シートをシート複写する 3.複写されたシートには、『シートレベルで』同じ名前が定義済みになっている >ブックレベルにした場合悪影響がでないかな? 結局、定義した名前を「どこのシートで何に使いたいのか」次第です。 ブックレベル・シートレベルで「同じ名前(仮に「あああ」)」が複数個登録されてしまっている状態があったとします。 任意のあるシート(仮にsheetX)でその名前を利用しようとした場合、 1.sheetXにあああがブックレベルまたはシートレベルで登録済みの場合、同じシート内のあああが参照される 2.sheetXにあああが登録されていない場合、ブックレベルのあああが参照される 3.sheetX以外のシートにあるあああを参照したい場合、「シート名!あああ」という書式で参照する #1つのご相談の中に詰め込みご質問になってるので、個別のご質問に対する回答は薄くなります。次回からは質問内容をよく整理してご相談投稿してみてください。

hinoki24
質問者

お礼

前しなかったような気がしたのですが、今確認したら追従していました。すいません。 どうもありがとうございました。参考にします。

関連するQ&A

  • エクセルの名前について教えてください。

    エクセルのセル範囲の名前について質問です。 エクセルのシートでセルの範囲を選択して、左上の名前ボックスに直接名前を入力すると名前が定義できます。しかし、別のセル範囲を選択して、同じ(既に定義されている)名前を定義しようとすると、定義済みの範囲にアクティブセルが飛ばされます。異なるシートで同じ名前をつけようとしても同じ結果になります。名前がついたセル範囲を移動させようと、カットペをすると移動します。もしくは、挿入-名前-定義で名前を削除してから名前ボックスで定義する必要があります。ここで、質問です。しかし、名前が定義されたシートをタブ(一番下のシートの名前が書かれていて選択する部分)を右クリックしてシートのコピーをすると同じ名前がついた異なるセルが出来てしまいます。 色々試してみると、前に、imogasi様にご指導頂いた。名前は、ブックレベルとシートレベルとであるとの内容にからんだことだと思いました。(以下にその時の転記) >名前定義はブック単位とシート単位の2つがあります。上記の2つが >その例です。 シート上でも、=Book1!名前1や='Sheet1'!名前1って出てきました。 考え方として次のような考え方で宜しいのでしょうか? 名前ボックスでは、ブックレベルでの名前定義になる。 シートレベルでの定義は、エクセルのシートからは出来ない? bookレベルを指す時は、Book1!と''でくくらない Sheetレベルを指す時は、'Sheet1'!とシート名の部分を''でくくる 同じセル範囲を、同じ名前であっても、シートレベルとブックレベルで重複定義できる? vbaで使用する時は、同じく、'Sheet1'でくくる どなたか?詳しいかた教えて頂けないでしょうか?宜しくお願いします。

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

    ご覧いただきありがとうございます。 エクセルの名前の定義についての質問です。 (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でシートを分けたのは、同じシート内で同じ名前が付けられないと思ったからです! どなたか分かりましたら教えて下さい! どうぞよろしくお願い致します。 ※ちなみに、貼付した図の『・』は以下省略の意味で使ってます。

  • エクセルVBAでOFFSET指定で行増減する時追従

    エクセルVBA2013で質問です。 C3:I3セルが結合してあり日付が入っています。 同じくJ3:P3も結合してあり日付が入っています。 同じように1週間分隣も続いています。 下側は作業者毎の表になっています。 C3:I3を月曜とすると、その下のC4:I17に作業者Aの月曜日分の内容、 C19:I32が作業者Bの火曜日分の内容となっています。 これを、日付セルを選択して、VBAを実行して各作業者の内容をコピーしてよそに貼り付けるのですが、 例えば、月曜の作業者Aの内容コピーなら、 ActiveCell.Offset(1, 0).Resize(14, 7).COPY でコピーできまていますが、各作業者の内容を増やすことがあります。 作業者Aの内容は4行目から17行目までを最初ありますが、これを増やしたり場合によっては減らしたりして17が20行目までとなったりします。 例えば、20行目まで増やしたとすると、作業者Aの月曜日分は、C4:I20までになります。以下、作業者Bの位置もずれます。 名前を定義して指定すれば、増やしても減らしても追従するのかな?と思いましたがどうすればよいかよく分かりません。 名前の定義も各作業者の各曜日で定義する必要があるのか、それとも作業者の項目で定義して、 ActiveCell.Offset("作業者A",0).Resize("作業者A", 7).COPY のような行のみ名前で指定でできないのかな?とも思いました。 上のは動きませんでしたが・・・。 行を増やしたり減らしたりしてもうまく追従してくれるやり方が何かいい方法がありますか?

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

  • VBA で名前の定義をしたいのですが・・・

    初心者です。 いろいろ試してみたのですが、だめでした。 ご教授ください。 対象という名前を定義させたいと思っています。 定義の参照範囲は可変です。 定義したい範囲はSheet1のAA3からAAの最終行までです。 それでマクロの自動記録から名前の定義のコードを取ってきて 変数を代入してみましたが、参照範囲を正しく取ってきてくれませんでした。 Sub test() '対象の名前を定義する Dim n As Long n = Sheets("Sheet1").Cells(Rows.Count, 27).End(xlUp).Row Sheets("Sheet1").Select Range(Cells(3, 27), Cells(n, 27)).Select ActiveWorkbook.Names.Add Name:="対象", RefersToLocal:="=Sheet1!R3C27:RnC27" End Sub RefersToLocal:="=Sheet1!R3C27:RnC27"の部分を RefersToLocal:="=Sheet1!R3C27:R&n&C27" RefersToLocal:="=Sheet1!R3C27:"R"&n&"C27"" にしてもだめでした。 うまく範囲をとってくれる方法を教えてください。 お願いします。

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

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

  • Excel 2007 名前定義の変更

    Excel2007で名前の定義のあるシートを同じブック内でコピーして、 コピーした側の名前を「名前の管理」から編集をしたいのですが、 範囲がシートになってしまっていて、ブックに変更したいのですができません。 何か方法ありますでしょうか?

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

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

  • Excel 名前の定義

    Excel2010を使っています セル範囲に名前の定義をするとき 誤って範囲がブックとして設定されてしまいました そこでこれを削除したくて 名前の管理で削除をするのですが 次にまたこのファイルを開くと 依然この名前が残っています どうも私にはさっぱり訳が分かりません 要はこの名前を削除したいのですが どなたかアドバイスよろしくお願いします

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

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

専門家に質問してみよう