[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『絶対参照と相対参照の一発切替』(ももた)
お世話になります。
今、絶対参照($使用)と相対参照が入り混じった表(列50行50くらい)があります。
この表を丸々下の行にコピーして使用したいのですが、絶対参照は動かないから式が崩れます。
とりあえず、一括置換で$マークを消してからコピーしていますが、できればコピーした表にまた$マークを復活させたいです。
何か良い方法はないのでしょうか?
なお、条件はあくまでもそのシート内にコピーです
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows8 >
1)表を選択し、新規シートの同じ位置にコピペ 2)参照先、参照元の位置関係が変わらないように行挿入 3)コピペした表を、元のシートにコピペ
(マナ) 2015/04/25(土) 12:52
関数のことはよくわからないのではずしているかもしれませんが・・・
絶対参照って、絶対参照したいから絶対参照にするんですよね。 だから、下の行にコピーしても、そこは変わらないからありがたいのであって。
絶対参照部分がかわらないから不便だということ自体が、よくわかりません。 下の行にコピーした時に、そこも相対的にかわってほしいなら、もともとの式を絶対参照にしなければいいのでは?
なぜ、絶対参照にしているのですか?
(β) 2015/04/25(土) 15:15
βさんへ
絶対参照にしているのは、その表の中で行や列を挿入削除して編集するためです。
何かあれば良いアドバイスあれば、お願いします。
(ももた) 2015/04/25(土) 15:33
Sub test() Dim r1 As Range, r2 As Range Dim n As Long Dim ws As Worksheet
On Error Resume Next Set r1 = Application.InputBox("コピーする表を選択", Type:=8) If r1 Is Nothing Then Exit Sub Set r2 = Application.InputBox("コピー先を選択", Type:=8) If r2 Is Nothing Then Exit Sub On Error GoTo 0
If r1.Column <> r2.Column Then Exit Sub n = r2.Row - r1.Row If n <= r1.Rows.Count Then Exit Sub
Set ws = Worksheets.Add(before:=Sheets(1))
r1.Copy ws.Range(r2.Address) ws.Rows(1).Resize(n).Insert ws.Range(r2.Address).Offset(n).Resize(r1.Rows.Count, r1.Columns.Count).Copy r2
Application.DisplayAlerts = False ws.Delete Application.DisplayAlerts = True
Application.Goto r2
End Sub
(マナ) 2015/04/25(土) 16:46
早速試しました。
凄いです!
これで、いろいろな表に活用できます!
ありがとうございました。
(ももた) 2015/04/27(月) 08:41
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.