[[20150425112323]] 『絶対参照と相対参照の一発切替』(ももた) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『絶対参照と相対参照の一発切替』(ももた)

お世話になります。

今、絶対参照($使用)と相対参照が入り混じった表(列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.