• ベストアンサー

Excelの「範囲」の自動変更について。

A1:A1000にデータが入っています。 今これを10個(100行づつ)に分けて、それぞれに範囲名をつけています。 [質問] 途中に行の挿入・削除を行っても、常に1つの範囲の行数を100行に保つように設定はできますか? もし可能ならば教えて下さい。

  • ippu
  • お礼率91% (251/273)

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

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

途中に行の挿入・削除があると定義された範囲はどうしても変わってしまいます。 範囲の行数をつねに100行に保つにはVBAを使用していったん名前の定義を消し、再度つける方法で対処できます。 やってみました。 最初、下記マクロSub AREAtest1()で100行づつ名前を付けた後、挿入削除を行っても、Sub AREAtest1解除()でいったん名前を消去し、再度Sub AREAtest1()を実行すれば、お望みの結果になります。 Sub AREAtest1()'100行づつ名前定義 For n = 0 To 9 ActiveWorkbook.Names.Add Name:="AREA" & n + 1, RefersTo:= _ "=Sheet1!$A$" & n * 100 + 1 & ":$A$" & n * 100 + 100 & "" Next End Sub Sub AREAtest1解除()上記の定義をすべて解除 For n = 0 To 9 Application.Goto Reference:="Area" & n + 1 ActiveWorkbook.Names("Area" & n + 1).Delete Next End Sub

ippu
質問者

お礼

マクロに関してはほんの入り口にいるのですが、作成して戴いたものをModule1に貼り付け目的を達成できました。 本当に有難うございました。

その他の回答 (2)

noname#9284
noname#9284
回答No.3

> 範囲を選択してコピーしたいので、確認できないと困るのです。 名前ボックスのドロップダウンから選択して範囲選択をし、 コピーしてどこかに貼り付けたいとのご希望でしょうか。 常にSheet1のA1:A100までを別のシートのA列に表示したいのでしたら A1に =INDIRECT("Sheet1!A"&ROW()) B1に =INDIRECT("Sheet1!A"&ROW()+100) C1に =INDIRECT("Sheet1!A"&ROW()+200)・・・ これを100行分下にコピーするということでいかがでしょうか。 INDIRECTを多用していますのでパフォーマンスが多少落ちると思います。 お使いのパソコンで様子を見られて使ってください。 またINDIRECTを使用していますと、ファイルを開いて変更せずに閉じても 「変更を保存しますか」と聞かれます。 INDIRECTは揮発性関数ですのでそのようなメッセージが出ます。

ippu
質問者

お礼

>INDIRECTを多用していますのでパフォーマンスが多少落ちると思います。 上記が心配なので、マクロを利用することにしました。 本当に有難うございました。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

例えば、 挿入→名前→定義で  名前に『Area01』、参照範囲に『INDIRECT("A1:E100")』  名前に『Area02』、参照範囲に『INDIRECT("A101:E200")』  名前に『Area03』、参照範囲に『INDIRECT("A201:E300")』  :  : のように設定します。 (結果を、左上の名前ボックスでは確認できないようですが・・・Excel2000です)  

ippu
質問者

お礼

nishi6さんへの補足が基で更なる回答を戴けました。 有難うございました。

ippu
質問者

補足

有難うございました。 >(結果を、左上の名前ボックスでは確認できないようですが・・・Excel2000です) 範囲を選択してコピーしたいので、確認できないと困るのです。

関連するQ&A

  • EXCELの印刷範囲のクリアについて

    Excel2007です。よろしくお願いします。 最終的には、別シートを作り直して解決はしたのですが、 方法が分からずすっきりしないため、今後のためにも知っておきたく、 こちらに質問させていただきました。 いただいたEXCELファイルでのことなのですが、 例えば、現在、A1~G10まで何らかの情報が入力されている状態で、 行数は今後増えていくことを想定しB~Fまでを印刷範囲としました。 AとGの列は、データは入力されていますが、印刷はさせたくない部分とします。 印刷プレビュー画面で参照すると、 本来であればB1~F10までが印刷範囲として表示されるはずと思いますが、 なぜかB1~F70、と、行が70列まで範囲状態となってしまいます。 本来1ページで済むはずが、2ページにわたって印刷範囲となっています。 B1~F10を範囲指定すると正常に指定されるのですが、 データが増えることを考えると、列での設定をしたいと思っています。 印刷範囲をクリアし、再度B~Fを印刷範囲設定したのですが、 何度行っても70行まで設定されてしまいます。 何か変なデータが設定されているのかと思い、 11行目~70行目までを削除しても、治りません。 また逆に、60行目あたりで行の追加をすると、印刷範囲はB1~F71、のように 増えていきました。 ですが、行を削除しても範囲は減りません。 ですので、増えた分は増えっぱなしです。 確認した点は、以下です。 ・VBAで設定されているか?⇒「PrintArea」で検索したが、設定なし。 ・名前の管理⇒$B:$F の設定のみで、他の設定はなし どのようにすれば、印刷範囲で行が固定されている部分を解除できますでしょうか? お手数をおかけいたしますが、よろしくお願いいたします。

  • エクセルVBAで、ある範囲を印刷範囲に自動設定する方法

    A1・・・・・GR1 までに項目と日にちが入っています。 この下、つまり2行目以下にはところどころデータが入っています。 例えば 2行目以下にデータのある一番右の列がAW列目 2行目以下にデータのある一番下の行が7行目 である場合、印刷範囲をA1:AW7という範囲で印刷設定したいのですが、 まったくわかりません。今まで、サイトを参考にCurrentRegionで印刷 設定を自動でしていたのですが、それでは対応できないようで質問に 参りました。教えてください、よろしくお願いします。

  • エクセル2013 範囲を取得して並べ替え

    A列2行目から9桁の同じ数字が入力されています。 同じ数字が入力されている行数は、いつも同じではありません。 A列の同じ数字の範囲を認識して G列で 「数値に見えるものはすべて数値として並べ替えを行う」で並べ替えを エクセルのマクロで教えてください。 例 A2からA4まで 123456789 の同じ数字 G2からG4まで 1-2-3や2-1-2や2-奥-1など・・・ A5からA6まで 147258369 の同じ数字 G6からG6まで 1-2-3や3-3-3など・・・ 入力されている行数は常に可変です。 途中、空白は存在しません。 宜しくお願いします。

  • エクセル 行の自動挿入

    下のようなエクセルの表で、 1  平成24年5月 2  Aの枚数  Bの枚数  Cの枚数   合計 3 4 ・ ・ ・ 70 71    計      計      計    合計 表の行数を常に固定したいので、3行目から70行目の中の行を1行削除した時に 71行目の上に自動的に行を挿入する方法を教えて下さい。 挿入行のセルはすべて空白で、罫線のみ引いてある状態がベストです。 よろしくお願いします。

  • Excelで行挿入しても計算範囲を変えたくない

    Excel2003です 例えばセルD200にD$4:D$100とセル範囲を指定した計算式があります。 この表に行を追加したり削除したりすると自動的にセル範囲が修正されますが、このセルの計算式だけ自動修正がされず常にD$4:D$100で固定する方法を教えてください。 困る一例として一番最初のデータ行に新しいデータを追加する場合、4行目を指定して行挿入しデータを入れると計算式はD$5:D$101に変わってしまい新しいデータが無視されてしまいます。 なおセル範囲に名前を付けてやってみましたが同じ結果でした。また行の挿入と削除を使わずデータ内容のクリヤー、移動などで表を更新すれば問題ないことは解っているのですが面倒です。

  • エクセル操作について教えてください。 100名以上の名簿リストを作成し

    エクセル操作について教えてください。 100名以上の名簿リストを作成し、1ページが30名となるように(印刷も)改ページを設定しました。しかし、1ページ目に追加で1名分を挿入すると、1ページ目の行数が31名になってしまいました。どのページも常に30名となるように(途中に行を挿入して追加しても、自動的に30名で次ページにいくように)自動的にはならないのでしょうか?何か設定することによって、自動的に30名で(1ページ目29行目に1名分の行を挿入すると30行目が2ページ目にずれてくれるように)ならないのでしょうか?教えて下さい!

  • マクロで行挿入後挿入部分を含めたソートをしたいのですが・・・

    A1に会社名のカタカナ。B1に会社名があります。 10行程度すでにデータが入っている状態で 途中行に新たに1行を挿入したのち 増えた行数分(全部で11行)も含めて並べ替えをするという作業を行います。 その場合、マクロで以上の手順を踏むと 1度目はうまくいくのですが 2度目になると相対参照でマクロを設定したにも関わらず 11行目までしかソートされません。 12行目がソートの範囲に入らないのです。 行が増えた分も含めて、すべての行数をソートするには どのようなVBAを組めばいいのでしょうか? ご教授ください。

  • エクセルの印刷範囲設定について

    表を印刷したいのです。 あらかじめ罫線を多めに引いています(たとえばA1:E100) データ入力を数行(たとえば30行まで)入力した時点で その部分のみ印刷したい場合印刷範囲の設定で A1:E30 と指定すればよいのですが、 次に40行目まで入力したとき範囲設定を再設定したくなく、 常に入力された部分まで印刷範囲を自動設定することは可能でしょうか。 =OFFSET(sheet1!A1,0,0,COUNTA(sheet1!A:A),5) と入力しても、次に開いたときには A1:E30 になってしまいます。

  • Excelの範囲を変える方法を教えてください。

    Excel2016の範囲名「休日」が有ります。 「C16~D23」⇒「C16~D24」 範囲を一行増やしたいのです。 範囲名を一行増やして同じ範囲名にしたいのですが、上手く出来ません。 (つまり、範囲名を自由に設定はできるのですが、 一旦設定した名前を(私には)削除できないので、 別のページに設定したVLOOkUP関数を全て書き換えなければならないのです。) 左上隅の「休日」が消せないのです。 初心者向きに教えてください。

  • エクセルVBAで範囲の指定をしたいです(初心者)

    エクセルVBAで範囲の指定をしたいです(初心者) 列AからJがデータが入る範囲です。 列AとBとCには必ず数値等が何かしら入ります。 列Dは常に空白です。 列E以降は何か入ることも入らないこともあります。 7行目までデータがある場合、 A1セルからこの場合はJ7セルまでを範囲指定したいのですが 行数は未定なので、 Range("A1").Select Range(Selection,Selection.End(xlDown)).Select でA列のデータ最終行まで下がり、そこから9つ右の列までを 範囲指定するというのがよくわかりません。 自動記録で絶対参照と相対参照を切り替えてやってみたのですが、 どうしても Range(Selection, Selection.End(xlDown)).Select ActiveCell.Range("A1:J7").Select と常にA1からJ7が指定になってしまいます。 バージョンは2003です。 つたない質問文で申し訳ありませんが、 どなたか宜しくお願いいたします。

専門家に質問してみよう