• 締切済み

シートをコピーした際のセル参照の変更

Excelのファイルに2枚のシート(index,コメント)があります。 コメントシートにはindexを参照する関数が入っています。 =IF(ISBLANK(Index!B4),"",Index!B4) 1つではなく、全部で5つ程入っています。 コメントシートをシートコピーすると、当然関数もコピーされますが、 コピーした際にセルの参照先をB4からB5にすることはできますか。 シートコピーが一度ではなく、何度も繰り返されるのでマクロ等で できるようであれば教えてください。お願いします。

みんなの回答

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

書き換えの基本マクロは提示しましたので,あとは具体的な応用として >replacement:="Index!B5" の「5」の部分を,今何回目のコピーだから6,7,8だなという具合に細工を追加するだけです。 ご自分でも,やりくちを工夫して少し考えてみたらどうでしょうか? 簡単な作成例:(やり口は他にも様々思いつきます) A1セルに「コピー回数」と言葉で記入しておく sub macro1r1()  worksheets("コメント").range("B1") = worksheets("コメント").range("B1") + 1  worksheets("コメント").copy after:=worksheets(worksheets.count)  cells.replace what:="Index!B4", replacement:="Index!B" & (range("B1")+4), lookat:=xlpart end sub #ただし 思いつきで質問を追加しているモノだから,いったい「どのシートを」複製したいのか,そういった所も段々あやふやになってきています。 ご自分が実際にはどんな使い方をするのかあなたご自身がよく考えて,だからこそご自分で工夫を考えないと,実際の役にはたたないというワケです。

scotti10
質問者

お礼

確かにやり方は1つではなく、いろいろな方法がありますね。 今回、大変勉強になりました。少しずつですが勉強していきたいと思います。 ありがとうございました。

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

シートをコピーし,B4をB5に書き換えます。 sub macro1()  worksheets("コメント").copy after:=worksheets(worksheets.count)  cells.replace what:="Index!B4", replacement:="Index!B5", lookat:=xlpart end sub #とりあえずご質問に書かれた今困っていて「こうしたい」というご説明に従ってサンプルマクロを提示していますが,ホントに「それだけで(それだけできれば)いいの?」と若干疑問に感じます。

scotti10
質問者

補足

すみません、言葉不足でした。 keithinさんのおっしゃる通り、これだけではちょっと足りませんでした。 コメントのシートを一度コピーすると、シート名はコメント(2)となり B4をB5に書き換えます。次にシートコピーをした時は、コメント(3)となり、 B5をB6に書き換えしたいのです。 つまり、シートをコピーする度に前のシートのセル参照+1ずつ増やしていきたいのです。

関連するQ&A