No.1ベストアンサー
- 回答日時:
VBAを使わないと出来ません。
参考のため、一応コードを貼っておきます。
Sub WK()
Dim c As Range
For Each c In Selection
If c.HasFormula Then
c.Formula = Application.ConvertFormula(Formula:=c.Formula, _
FromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
End If
Next
Application.StatusBar = False
End Sub
No.5
- 回答日時:
#4の回答者です。
「シート内に入力済みのすべての数式を、一度に絶対参照に転換」する理由
#3さんの質問を質問者に代わって私が回答するというのは、まったくもってでしゃばった行為ですし、質問者さんの回答とは同じだと思っているわけではないのですが、なぜ、こんなマクロのテクニックが残っているかお答えさせていただきたく思いました。
端的にいうと、この絶対参照に変更というのは、Lotus123->Excel の人には、あまり馴染みがないでしょうけれども、昔からのPCユーザーの最初の表計算は、Excelの前進ともいえる、同じ作者のMS-Multiplanで、各社各様にOEM販売され、富士通のワープロにさえバンドルされていました。その仕様が、R1C1方式で、Multiplan は、日本では、NEC 98モデルの普及とともに使い続けられ、その製品は1992年頃を、最後に約10年で終えました。
だから、一部の人には、R1C1方式は馴染みが深かったわけです。それで、ずっとR1C1方式で使い続ける人が残っていたわけです。
A1方式には相対参照と絶対参照の差はあまり大きく変化しないのですが、このR1C1方式は、相対参照と絶対参照では、まったく考え方が違うというか、相対参照には、セル位置の情報がないので、どこを参照しているのかまったく分からないわけです。そのために、絶対参照式に変える必要性を感じたわけです。今となっては、そんな要求する人は皆無だとは思いますが……。
さて、問題のマクロは、私の言葉どおりなら文句はないのでしょうから、このコンバートは、シートが、A1スタイル上でないと、今のところ、私の所では変換しません。
補足欄を使えないので、この欄をお借りして。
#2さんのご回答欄に#3さん宛ての内容を書いてしまいました。
#2さん、どうも失礼いたしました。
そして、#3さんともども大変参考になりました。
No.4
- 回答日時:
すでに回答がでてしまいましたが、古典的マクロのひとつです。
私は、まだ、VBAを習いたてで、たぶん、#3さんはご存知かと思いますが、芳坂さん(日経BP21)が書いていたマクロと、自分が書いたものとを見比べたことを思い出します。私は、当時と、それほど変わらないかもしれません。未だに、わかっていないところがあります。
If Not r.HasArray Then
この部分は、私は知りませんでした。
'//
Sub ConvertFormulas()
Dim rng As Range
Dim rf As Range
Dim r As Range
Set rng = ActiveSheet.UsedRange
On Error Resume Next
Const AB As Integer = xlAbsolute '絶対座標 'xlRelative '相対座標
Set rf = rng.SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Exit Sub
On Error GoTo 0
If Application.ReferenceStyle = xlR1C1 Then 'R1C1 方式はA1方式の戻す
Application.ReferenceStyle = xlA1
End If
Application.ScreenUpdating = False
For Each r In rf.Cells
If Not r.HasArray Then '配列数式は除外されます。
r.Formula = Application.ConvertFormula( _
Formula:=r.Formula, FromReferenceStyle:=xlA1, _
toAbsolute:=AB, RelativeTo:=r)
End If
Next
Application.ScreenUpdating = True
End Sub
ご回答ありがとうございます。
わたしのような素人に過分なる知識を開陳していただき恐縮です、
どうも猫に小判といった印象で・・
これに懲りずに、またよろしくお願い申し上げます。
No.3
- 回答日時:
マクロを使用しない関数や置換機能ではできないけど、長年 Excel を使用して来た私には貴方が希望する機能の必要に遭遇したことがありません。
参考までに教えてください。「シート内に入力済みのすべての数式を、一度に絶対参照に転換」したくなったのはなぜですか?
ご回答ありがとうございます。
セルの位置を変更する必要が生じまして、その際、絶対参照にしとかないと、あとが面倒になることに気づいたという次第。
なぜすべてなのか?という疑問を持たれたのかもしれませんが、大幅な手直しをしたくなったわけです。
まあ、先を見通せない素人の悲しさといったところですかね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAでのWorksheet_Change...
-
Excelで数字を入れたら対応する...
-
エクセルで複数のシートのクリ...
-
シート全体の絶対参照
-
Excelのマクロ 検索範囲を広げ...
-
長い時間かかるマクロが実行中...
-
セルの一部分だけを太字にする方法
-
エクセルで特定の行だけ行削除...
-
Excelにて、同じ画像を複数のセ...
-
Excelのシート上のShapeにイベ...
-
Target.Columns.Hidden = True ...
-
Excel2007 他ブックに対してマ...
-
エクセルでランダムな座席表を...
-
エクセルファイルを開いた回数...
-
EXCEL VBA で年間カレンダーを...
-
エクセル上にシェイプで二重丸...
-
VBAマクロ実行時エラーの修正に...
-
B列の最終行までA列をオート...
-
エクセルマクロで偶数行(又は...
-
「段」と「行」の違いがよくわ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでのWorksheet_Change...
-
エクセルで複数のシートのクリ...
-
Excelで数字を入れたら対応する...
-
エクセルファイルを開いた回数...
-
エクセルで特定の行だけ行削除...
-
Excelのシート上のShapeにイベ...
-
【エクセル】フリーワード検索...
-
エクセル シート内の一番下のセ...
-
長い時間かかるマクロが実行中...
-
【エクセル】「実行時エラー’10...
-
EXCELのダイアログシートって、...
-
Excelでセル内の文字をファイル...
-
エクセル:セル内の文字列の最...
-
マクロ1があります。 A1のセル...
-
エクセルのマクロ実行後にカー...
-
セルの一部分だけを太字にする方法
-
Excelのマクロ 検索範囲を広げ...
-
excelで画像のハイパーリンクを...
-
エクセル マクロ 一定時間おき...
-
シートではなくBOOK間で重複し...
おすすめ情報