エクセルにおいて絶対参照に変更する方法はわかったのですが、それを相対参照に戻す方法がわかりません。
Sub tes1()
Dim c As Range
For Each c In Selection
With c
If .HasFormula Then
.Formula = Application.ConvertFormula(.Formula, xlA1, , xlAbsolute)
End If
End With
Next
ですべての範囲を絶対参照にすることができました。
しかし、逆にその絶対参照を全てはずす方法がわかりません。
わかりましたら教えて頂けたらと思います。よろしくお願いします
End Sub
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは。
#2の回答者です。
#3さんのおっしゃることで分かりました。
実際、こんなマクロを作ったことはありませんでしたからね。
ただ、私が、#2で考えていることをそのままにしておくと、間が抜けたことを書いているようにしかみえてこないと思いますので、それをコードで表現してみました。主旨が変わるわけではありません。
まず、A1 方式だけの問題に限定しておきます。R1C1方式でも可能だとは思いますが、必要はないだろうと思います。次に、本来、相対座標と絶対座標の融通性がないのではないでしょうか?実用性はありませんが、以下のように文字列として扱うというのが、私の主旨です。別に、そういうマクロコードに、大した実用性があるとは思えません。ただ、Replace やFind メソッドでは、$を抜くのは出来ても、入れるほうがしにくいだろうと思うだけです。
'-------------------------------------------
Sub Test1()
Static x As Integer 'トグルになっています。
Dim c As Variant
Dim rng As Variant
Dim ar() As Variant
Dim i As Long
If Application.ReferenceStyle = xlR1C1 Then
MsgBox "R1C1方式では、このマクロは実行できません。", vbExclamation
Exit Sub
End If
x = IIf(x < 2, 4, 1) '4--xlRelatiive; 1 -- xlAbsolute
Application.Calculation = xlCalculationManual
With ActiveSheet
'* A列に対して
Set rng = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
ReDim ar(rng.Count)
For Each c In rng
If c.HasFormula Then
ar(i) = Application.ConvertFormula(c.Formula, xlA1, xlA1, x)
Else
ar(i) = c.Value
End If
i = i + 1
Next
'最後のindex は、Empty の場合もあるけれど、そのままにします
rng.Value = WorksheetFunction.Transpose(ar())
End With
Set rng = Nothing
Application.Calculation = xlCalculationAutomatic
End Sub
No.3
- 回答日時:
回答1、myRangeです。
ちょと安易な回答をしてしまったようです。(^^;;;
相対から絶対への変換は問題になるところはないのですが、
質問のように、絶対から相対への変換はちょと頭に入れておかなければいけないことがあります。
それは、相対参照は式の入っているセルが基準になる、ということです。
ですから、変換の時は基準になるセルを明示する必要があるということです。
その方法としては、
変換の直前で式のあるセルをselectしておく
c.Select
か
以下のように第5引数RelativeToを式のあるセルに設定します。
.Formula = Application.ConvertFormula(.Formula, xlA1, , xlRelative, c)
これで上手くいくはずです。
以上です。
No.2
- 回答日時:
こんにちは。
xlAbsolute から xlRelative に換えることぐらいはヘルプを見ても分かることなので、質問がヘンだと思いました。
コードを良く見ていただければ分かると思いますが、
ConvertFormula(.Formula, xlA1, , xlAbsolute)
.Formula は、文字列ですから、それは単に、'$'を取っているに過ぎません。だから、数式としては、参照箇所がずれるようなことはありえません。
>しかしそれでは参照箇所がずれて戻ってしまったりとうまくできませんでした
実際に、そのようなことが起こりうるのか、言葉だけでは分かりませんから、どのような現象なのか、実際のところを教えていただいたほうが回答が付きやすいかと思います。
絶対座標・相対座標という言葉は、A1方式では中身が見えませんからありませんが、$A$1 とA1 とは、本来は、意味としてはまったく違います。実務上では、ConverFormula というのはめったに使われないのは、絶対参照と相対参照は交換してしまってはいけないことが多いのです。ですから、実務的には使用できるかは、何ともいえないのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
【Microsoft Forms】回答を削除...
-
Office 2021 Professional Plus...
-
マイクロソフト 一時使用コード...
-
【スプレッドシート】指定の日...
-
VLOOKUP関数について
-
英数字のみ全角から半角に変換
-
Microsoft Formsで「応答」から...
-
エクセルでXLOOKUP関数...
-
エクセルで英文字に入れた下線...
-
1つのPCに「Excel 2010」「Exc...
-
大学のレポート A4で1枚レポー...
-
マクロ自動コピペ 貼り付ける場...
-
Outlookでの時間指定送信機能に...
-
会社におけるOfficeライセンス...
-
Office Professional Academic ...
-
vb.net オブジェクト指向につい...
-
マイクロソフト オフィスについて
-
エクセルで例えば、関数を使っ...
-
Microsoft Officeを2台目のPCに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
マイクロソフト 一時使用コード...
-
英数字のみ全角から半角に変換
-
Office2021を別のPCにインスト...
-
Microsoft Formsの「個人情報や...
-
officeビジネス型のワードやエ...
-
会社PCのメールが更新されない
-
【スプレッドシート】指定の日...
-
Microsoft Officeを2台目のPCに...
-
何このステータスバー
-
2つのシートの一致する行のセ...
-
会社のTeamsのことで相談です。...
-
エクセルにリンクされるのをし...
-
Windows 11で、IME言語バー(IM...
-
office2010とoffice365の共存で...
-
Microsoftのパソコンです。 エ...
-
エクセルでXLOOKUP関数...
-
Excel関数について質問ですm(__)m
-
VBA
-
自分の専門分野の仕事。初見で...
おすすめ情報