Excelを実務で利用している方の中に、絶対参照にする必要のないセル参照を、相対参照のままにしておく方と、絶対参照にしたがる方とが存在します。
絶対参照はセル参照を含む数式の入力されているセルをコピーをしたときに、参照先セルを変更したくないときに利用する参照方式ですから、セルのコピーをしないような場合、絶対参照にする必要はなく相対参照のままで問題ありません。
けれども、すべてのセル参照を絶対参照にしておきたいという方が、時々いらっしゃいます。
数式を入力したワークシートを作成後、相対参照・絶対参照を理解していない方に利用してもらう場合に、不用意にセルの移動やコピーをされることによってエラーが発生するのを極力回避したいというという気持ちなどから、セル参照をすべて絶対参照にしておきたいという要望となるようです。
数式入力中に参照方式を変更するには、[F4]キーを押せばいいわけですが、数式の入力済みの場合、数式バーやセル内にカーソルを置いてから[F4]キーを押さなければ、相対参照を絶対参照にすることはできません。
数式の入力されているセル範囲を選択しておいて[F4]キーを押しても相対参照は絶対参照にはなりません。
そのため
「すべての相対参照を絶対参照にするにはどうすればいいのでしょうか?」
というご質問をいただくことになります。
選択範囲セルの数式を絶対参照にするサンプルマクロ
Excelの標準機能では、相対参照を一括して絶対参照にすることはできませんから、VBA(Visual Basic for Applications)でマクロを作成しましょう。
Dim rng As Range
For Each rng In Selection
If rng.HasFormula Then
rng.Formula = Application.ConvertFormula( _
Formula:=.Formula, _
FromReferenceStyle:=xlA1, _
ToAbsolute:=xlAbsolute)
End If
Next
End Sub
いずれかのセル範囲を選択しておいてから上記のマクロを実行すると、選択されていた範囲内の数式が絶対参照になります。
サンプルマクロの解説
Application.ConvertFormulaメソッドの引数・ToAbsoluteに定数xlAbsoluteを指定することで、絶対参照に変換することができます。
選択範囲内のセルをFor Each Nextループで順番に処理し、
For Each rng In Selection
もし数式が含まれていたときに
If rng.HasFormula Then
絶対参照に変換しています。
rng.Formula = Application.ConvertFormula( _
Formula:=.Formula, _
FromReferenceStyle:=xlA1, _
ToAbsolute:=xlAbsolute)
- Newer:棒の重なりとは
- Older:Office2007リボン表示の切り替え−Ctrl+F1キー
Home » Excel VBA Rangeオブジェクト » セル数式 » すべてのセル参照を絶対参照にするExcelマクロ