エクセルの名前の定義で参照範囲が反映されない

このQ&Aのポイント
  • エクセルの名前の定義で参照範囲が出力に反映されない問題について解決方法を教えてください。
  • 印刷範囲を自動で変更するために、エクセルの名前の定義を使用していますが、うまく機能しません。修正方法を教えてください。
  • エクセルの名前の定義を使用して印刷範囲を設定しましたが、正しく反映されません。問題の原因と修正方法を教えてください。
回答を見る
  • ベストアンサー

エクセル 名前の定義で参照範囲が出力に反映されない

印刷範囲を自動で変更できるようにしたいので、名前の定義を使って 以下の手順で設定したのですがうまくいきません。 どなたか原因がわかる方いましたら修正の方法を教えてください。 前提条件は次の通りです。 ≪前提条件≫ ・印刷したい範囲は、セル$C$7:$H$●で、●の数字が可変となります。  実際は●を表す関数をセル$A$1に設定してあり、そこに入る数字が増減します。  (つまり、横幅は決まっていますが、縦幅が可変となります。) ・同ページ内の印刷対象範囲内外には、表の内容に関する関数を設定しているセルが  複数箇所あります。 ・「ページ設定」のシートタブ>印刷範囲は、空欄になっています。 ≪手順≫ ------------------------------------------------------------ まず、 任意の名前をつけ、名前の「範囲」で同シートを選択し、 「参照範囲」に次の式を入れました。  参照範囲 =$C$7:OFFSET($C$7,0,5,$A$1) ↓ 次に、 参照範囲の式にカーソルをあてると、画面の参照範囲が点滅線で囲まれ、 正しく指定されていることが確認できました。 ↓ そこで、印刷プレビューを見てみると、 先ほどの点滅線で囲まれていた範囲ではなく、 ページの全範囲が表記されてしまいます。 ------------------------------------------------------------ 以上、よろしくお願いいたします。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

・「ページ設定」のシートタブ>印刷範囲に参照範囲に付けた名前を入力してください。ただし、その場合毎回入力しないといけないようですのでマクロで Sub 印刷範囲設定() ActiveSheet.PageSetup.PrintArea = "=$C$7:OFFSET($C$7,0,5,$A$1)" End Sub とか作って利用されてはいかがでしょう。

mmj8c6umd
質問者

お礼

早速ご回答いただき、ありがとうございました。 教えていただいたマクロを実行してみましたところ、 おかげさまでうまくいきました!数値を更新するたびに マクロを実行すれば印刷範囲が更新されるということなのですね。 勉強になりました。ありがとうございました。

その他の回答 (1)

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.2

どこかを適当に印刷範囲にしてみるとわかるのですが、Excelは印刷範囲に「Print_Area」という名前がつきます。 逆に言うと、「Print_Area」と言う名前を付けるとそこが印刷範囲になるのです。 ですから、 >任意の名前をつけ の部分を任意ではなく「Print_Area」にしてみては如何でしょうか? 一旦、どこかを印刷範囲にして名前を作ってからその参照範囲に数式を入れるといいと思います。

mmj8c6umd
質問者

お礼

ご回答いただきありがとうございました。 なるほど、先にPrint_Areaを設定してから範囲を変更するという手順で進めると良いのですね。 NO.1のkmetu様の回答と合わせて、教えていただいた方法でやってみましたところ、 おかげさまでうまくいきました。ページ設定シートタブの印刷範囲は更新すると 名前の定義の名前ではなく範囲の表記に変わるようですが、更新してマクロを実行すると 正しく範囲が変更になっており、きちんと反映されていました。ありがとうございました。

関連するQ&A

  • VBA 名前定義の参照について

    設定している名前定義を参照したいと思っています。 名称:タイプ 値 A1:サンプル1 A2:サンプル2 A3:サンプル3 A4:サンプル4 A5:サンプル5 と、設定されている場合に、これをVBAから (1) 「タイプ」という名前定義にいくつの値が設定されているのか (2) 「タイプ」という名前定義で設定されている個々の値 を取得したいと思っていますが、 調べてみても「定義されている名前の値」や 「定義されている名前の個数」の取得や削除の方法ばかりで 良く分かりませんでした・・・ ちなみに .Names("タイプ").Value で、設定セルの範囲は取得できます。 そこから、セルの値を直接見ることによって参照するものなのでしょうか?

  • エクセル 参照範囲の固定方法について

    エクセル 参照範囲の固定方法について エクセルで、SUMIF関数を使用して、ある範囲のセルを参照しています。 参照先のセルを行ごと削除しても関数の参照範囲を変化させたくないのですが、 実際には、削除した列の分だけ参照範囲少なくなってしまいます。 列を削除しても、参照範囲を固定する方法はないでしょうか? どうか宜しくお願いします。 例)(1)参照先:A1:A100   (2)A1~A30を削除   (3)(問題)関数の参照範囲がA1:A70となってしまう。⇒(希望)A1:A100のままにしたい。

  • Excel 印刷範囲の設定について

    こんにちは。 Excelで印刷範囲の設定をしたいのですが、下記2つの方法の違いを教えて下さい。バージョンは2007です。 1、印刷範囲(A1:C5とします)をドラッグして、ページレイアウトタブのページ設定グループの印刷範囲ボタンで印刷範囲の設定を選択する。 2、ページ設定ダイアログボックスのシートタブの印刷範囲のボックスをクリックしたあと印刷範囲(A1:C5)をドラッグする。 上記の方法でやってみたところ、2の方法でやった場合に$A$1:$C$5のように、絶対参照になってしまいます。なぜでしょうか? 1と2の違い(絶対参照になる理由)は何でしょうか? 絶対参照にする意味はないと思うんですが…アドバイスよろしくお願いします。

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

    こんにちは。 エクセルの名前定義についてわからないことがあります。 名前を定義するときに簡単な関数を使う方法はないでしょうか。 例えば、B1のセルの名前をA1のセルの内容にしたいときに B1の名前のところに「=A1」と言う風に参照したり、他の関数を 使える方法もあるなら知りたいです。 初歩的な質問かもしれませんが、ご教授のほどよろしくお願いします。

  • エクセルにて結合セルの範囲を参照するには?

       A B C D E F 1 |フォード| 2 |BMW | 3 |ホンダ | 各行A列~C列3つを結合入力 4 |ルノー | 5 |DFR  | 6 |ベンツ |  上記のようなエンジンメーカー表にて、A1~C1,A6~C6間にF1へエンジンを供給しているメーカー名がA~Cの3つのセルを結合して入力されているとします。  このような表を用いて別のワークシートから、このエンジンメーカーの入力セルの文字列を参照したいのですが、  フォードの場合ですと、=’エンジンメーカー表’!A1:C1と表示され、エラー値VAULEが返され、参照したい文字列が返りません。  結合されている3セルに範囲名をつけてINDIRECT関数で参照すれば出来るのですが、結合セルの項目が多過ぎて、いちいち、名前をつけていられないのです。  また、表のセル結合を崩せないのです。(同じフォーマットで作られている表が多数存在のため) このような単一セルでなく、複数のセル範囲を結合して入力されている文字列を簡単に=で参照する方法は無いでしょうか?

  • excel セル範囲に名前を付ける(名前の定義)について

    こんにちは。 過去の質問や、インターネット全般でも検索してみたのですが 検索の仕方が悪いのか、見つける事が出来ませんでしたので 質問させて下さい。 名前の定義にてセル範囲に付けた名前を 計算式を組む時に使いたいのですが、 名前を付ける時に指定したセルが隣接していれば 使用が可能なのですが、隣接していない離れたセルを 指定して名前を付けると、計算式に使用した時にエラーに なってしまいます。 因みにセルが離れていてもRANK関数では使用が可能でした。 COUNTIFやCOUNTBALNKだと、隣接したセルじゃないと 使えませんでした。 離れたセルに名前を付け、計算式に使用する事は 関数によって可能だったり不可能だったりするのでしょうか? 質問の内容が分かりづらかったらすみませんm(_ _)m よろしくお願い致します。

  • Excel VBA 「名前の定義」で参照範囲RefersToR1C1に

    Excel VBA 「名前の定義」で参照範囲RefersToR1C1にString型を代入するとダブルクォーテーションが入ってしまう問題を解決するには? Excel VBAで、次のように「名前の定義」で参照範囲にString型を代入するとダブルクォーテーションが入ってしまいます。 Sub Macro0() Dim str As String Range("B162").Select str = "'" + Range("B162").Value + "'" + "!A1:Z65535" ActiveWorkbook.Names.Add Name:="name", RefersToR1C1:=str ActiveWorkbook.Names("tes1").Comment = "" End Sub これを実行しますと、「参照範囲」にダブルクォーテーション""が余計に入ってしまい、正しく参照できません。 このダブルクォーテーションをつけない方法はありますか?よろしくお願いします。

  • Excel 名前の定義

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

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

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

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

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

専門家に質問してみよう