- ベストアンサー
Excel:絶対参照の数式を相対参照と同じように、フィルハンドルでコピーしたい
題名のとおりなんですが、どうしたらよいのでしょうか? やはり相対参照をフィルハンドルでコピーしたものに、F4キーでひとつずつ絶対参照にしていくしかないのでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.3です。 空セルのときに未処理となるようにしないと、変な残骸がでてしまうことに気付きましたので、コードを一部修正しました。 '選択範囲内の相対参照数式を絶対参照数式へ変換 Sub Sample() Dim rngCell As Range For Each rngCell In Selection If Not IsEmpty(rngCell) Then Select Case rngCell.HasArray Case True rngCell.FormulaArray = _ Application.ConvertFormula( _ rngCell.FormulaArray, xlA1, , xlAbsolute, rngCell) Case False rngCell.Formula = _ Application.ConvertFormula( _ rngCell.Formula, xlA1, , xlAbsolute, rngCell) End Select End If Next rngCell End Sub とここまで書いてなんですが、はずしていたら申し訳ありません。
その他の回答 (6)
- maccheroni
- ベストアンサー率29% (12/41)
B1に '=$A$1 と入力し、下にフィルしてから B列を選択し、データメニュー→区切り位置→完了ボタン こんな感じですか? また、 B1に '=$A$1 B2に =$A$1 これを下までフィルしてから先ほどと同じ操作をすると =$A$1 =$A$1 =$A$2 =$A$2 =$A$3 =$A$3 更に B1に '=$A$1 B2に =$A$1 B3に '=$A$1 上と同じ操作をすると =$A$1 =$A$1 =$A$1 =$A$2 =$A$2 =$A$2 =$A$3 =$A$3 =$A$3 こういうことでしょうか。
- macchan1
- ベストアンサー率38% (52/136)
絶対参照でコピーしたい状況はほとんど考えられないと思うのですが、どのようなとき必要なのでしょうか? 基本的にはご希望の操作はできないのですが、このような場合にはいくつかの対応策があります。 具体的に変換したい例を上げていただければ、回答しやすいのですが、方法としては、 1)文字列として入力して最後に数式に一括変換する方法、 2)相対参照の数式でオートフィルし、最後に文字を置換する方法があります。 例えば後者の例ですと、「=A1+B1」のような式であれば、オートフィル後、Ctrl+Hで置換ダイアログを出して検索する文字列に「A」置換する文字列に「$A$」としてすべて置換します。同様にBについても置換します。
- neKo_deux
- ベストアンサー率44% (5541/12319)
=A$1 =A$2 =A$3 =A$4 という文字列を作成するような処理を行っては? A1:1 B1:="=A$"&A1 を下にフィル、B列をコピー、値で貼り付け、編集。とか。
- KenKen_SP
- ベストアンサー率62% (785/1258)
VBAでやるしかありませんね。 でも、作表の過程では、このような機能があると重宝するかも。 1. 相対参照をフィルコピー 2. 1.のセル範囲を選択し、下記VBAコード実行 'セル選択範囲内の相対参照数式を絶対参照数式へ変換 Sub Sample() Dim rngCell As Range For Each rngCell In Selection Select Case rngCell.HasArray Case True rngCell.FormulaArray = _ Application.ConvertFormula(rngCell.FormulaArray, xlA1, , xlAbsolute, rngCell) Case False rngCell.Formula = _ Application.ConvertFormula(rngCell.Formula, xlA1, , xlAbsolute, rngCell) End Select Next rngCell End Sub
- takibo
- ベストアンサー率57% (116/200)
=$A$1*5 などの場合でしたら はじめに =A1*5 と入力してフィルハンドルでコピーし 計算式の部分を選択して、置換で A → $A$ としてはどうでしょうか?
- Caryo_t
- ベストアンサー率45% (112/246)
どのようなことが目的かわかりませんでしたので,誤解していたらごめんなさい。 たとえば,「 =$A$1*10 」みたいな式を,下にコピーしたいけど,動いてほしくないのはA列だけで,行は1,2,3,4…のように動いてほしい,というのであれば,「 =$A1*10 」のように,Aの前だけに$をつけます。また,行だけ固定する場合は,「 =A$1*10 」のように1の前だけに$をつけます。 ご要望と違うようなら,補足をください。
補足
僕の説明が言葉足らずでごめんなさい。 実はこう、 $マークがついたまま1,2,3,4…と動いて欲しいと思っています・・・
お礼
VBAのことはさっぱりでしたが、教えていただいたコードは大変便利ですね^^; 本当は置換えを使って、やったほうが良いかと思いますが、これを使わせていただきます。 ありがとうございました。