dポイントプレゼントキャンペーン実施中!

A1:A1000にデータが入っています。
今これを10個(100行づつ)に分けて、それぞれに範囲名をつけています。

[質問]
途中に行の挿入・削除を行っても、常に1つの範囲の行数を100行に保つように設定はできますか?
もし可能ならば教えて下さい。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/03/05 12:04

> 範囲を選択してコピーしたいので、確認できないと困るのです。



名前ボックスのドロップダウンから選択して範囲選択をし、
コピーしてどこかに貼り付けたいとのご希望でしょうか。
常に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は揮発性関数ですのでそのようなメッセージが出ます。
    • good
    • 0
この回答へのお礼

>INDIRECTを多用していますのでパフォーマンスが多少落ちると思います。

上記が心配なので、マクロを利用することにしました。

本当に有難うございました。

お礼日時:2004/03/05 11:58

例えば、


挿入→名前→定義で

 名前に『Area01』、参照範囲に『INDIRECT("A1:E100")』
 名前に『Area02』、参照範囲に『INDIRECT("A101:E200")』
 名前に『Area03』、参照範囲に『INDIRECT("A201:E300")』
 :
 :

のように設定します。
(結果を、左上の名前ボックスでは確認できないようですが・・・Excel2000です)
 

この回答への補足

有難うございました。

>(結果を、左上の名前ボックスでは確認できないようですが・・・Excel2000です)

範囲を選択してコピーしたいので、確認できないと困るのです。

補足日時:2004/03/05 09:20
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/03/05 11:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!