- ベストアンサー
Excelの「範囲」の自動変更について。
A1:A1000にデータが入っています。 今これを10個(100行づつ)に分けて、それぞれに範囲名をつけています。 [質問] 途中に行の挿入・削除を行っても、常に1つの範囲の行数を100行に保つように設定はできますか? もし可能ならば教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
途中に行の挿入・削除があると定義された範囲はどうしても変わってしまいます。 範囲の行数をつねに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
その他の回答 (2)
> 範囲を選択してコピーしたいので、確認できないと困るのです。 名前ボックスのドロップダウンから選択して範囲選択をし、 コピーしてどこかに貼り付けたいとのご希望でしょうか。 常に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は揮発性関数ですのでそのようなメッセージが出ます。
お礼
>INDIRECTを多用していますのでパフォーマンスが多少落ちると思います。 上記が心配なので、マクロを利用することにしました。 本当に有難うございました。
- nishi6
- ベストアンサー率67% (869/1280)
例えば、 挿入→名前→定義で 名前に『Area01』、参照範囲に『INDIRECT("A1:E100")』 名前に『Area02』、参照範囲に『INDIRECT("A101:E200")』 名前に『Area03』、参照範囲に『INDIRECT("A201:E300")』 : : のように設定します。 (結果を、左上の名前ボックスでは確認できないようですが・・・Excel2000です)
お礼
nishi6さんへの補足が基で更なる回答を戴けました。 有難うございました。
補足
有難うございました。 >(結果を、左上の名前ボックスでは確認できないようですが・・・Excel2000です) 範囲を選択してコピーしたいので、確認できないと困るのです。
お礼
マクロに関してはほんの入り口にいるのですが、作成して戴いたものをModule1に貼り付け目的を達成できました。 本当に有難うございました。