
エクセルで作った関数の相対参照から絶対参照に変換する方法について検索したところ、OKWeb内で以前回答があり、それを参考に実行したところ、ほとんどの相対参照が絶対参照に変換されたのですが、一部で「#VALUE!」となってしまいます。なぜでしょうか。
ちなみに、その関数というのが以下の通りです。
=IF(SUMIF(L108,"",L109)+SUMIF(L127,"",L128)+SUMIF(L155,"",L156)+SUMIF(L181,"",L182)+SUMIF(L238,"",L239)+SUM(L238,L181,L155,L127,L108)=L90,"",SUMIF(L108,"",L109)+SUMIF(L127,"",L128)+SUMIF(L155,"",L156)+SUMIF(L181,"",L182)+SUMIF(L238,"",L239)+SUM(L238,L181,L155,L127,L108))
力業で作った関数なので、少し長くなってスミマセン。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
#3です。
ロジック自体は一緒ですが、よけいなオブジェクト参照をしないように変更しました。少しは速くなっていると思います。Sub test()
Dim c As Range, myrng As Range, s1, s2, fml, cnvfml
For Each c In Selection
If c.HasFormula Then
cnvfml = Application.ConvertFormula(Formula:=c.Formula, _
FromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
If Not IsError(cnvfml) Then
c.Formula = cnvfml
Else
fml = c.Formula
For Each myrg In c.Precedents
s1 = myrg.Address(ReferenceStyle:=xlA1, _
rowabsolute:=False, columnabsolute:=False)
s2 = myrg.Address(ReferenceStyle:=xlA1)
fml = Replace(fml, s1, s2)
Next
c.Formula = fml
End If
End If
Next
End Sub
ありがとうございました。
非常に感動しております。
問題は全てクリアーされました。
これで仕事がはかどります。
本当にありがとうございました。
No.5
- 回答日時:
こんにちは。
maruru01です。質問欄の数式のような一定の条件の場合のみの方法ですが。
数式の入ったセルに対して、メニューの[編集]→[置換]で、
「L」→「$L$」
で置換してはどうでしょうか。
L列以外がなく、数式で使用している関数名にも"L"が入っていないので、出来ると思います。
No.3
- 回答日時:
お示しのマクロだと、一定以上の長さの関数の場合、うまく変換できないようです。
ConvertFormula自体の制限と思われますので、回避するためには、別のロジックを追加する必要があります。
とりあえず、作ってみましたのでおためし下さい。
(長い関数がたくさんあると変換に少々時間がかかります)
Sub test()
Dim c As Range, myrng As Range
For Each c In Selection
If c.HasFormula Then
If Not IsError(Application.ConvertFormula(Formula:=c.Formula, _
FromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)) Then
c.Formula = Application.ConvertFormula(Formula:=c.Formula, _
FromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
Else
For Each myrg In c.Precedents
s1 = myrg.Address(ReferenceStyle:=xlA1, _
rowabsolute:=False, columnabsolute:=False)
s2 = myrg.Address(ReferenceStyle:=xlA1)
c.Formula = Replace(c.Formula, s1, s2)
Next
End If
End If
Next
End Sub
No.2
- 回答日時:
>OKWeb内で以前回答があり、それを参考に実行したところ、ほとんどの相対参照が絶対参照に変換されたのですが、一部で「#VALUE!」となってしまいます。
具体的にどのような方法で絶対参照に変更したのでしょうか?
多分F4キーまたは置換操作で絶対参照にしたと思われますが、「#VALUE!」というエラーが出るのは数式内で文字列などが入ったセルを参照しているものと思われます。
この原因となっている数式を見つけるには、数式バー内の、たとえば「SUMIF(L108,"",L109)」の部分をカーソルで選択してF9キーを押して数値が返ってくるか調べてみてください。
数値が返っていた場合はその部分の数式には問題は無いのでEscキーを押して、同様に次の部分の数式を選択してF9キーで「#VALUE!」というエラーがでる数式を調べていきます。
この回答への補足
以下の問題に対する回答で、一部解決しました。
【問題】
数式を絶対参照に一括で変換をする方法はあるでしょうか?
例えば =A1+B1 といった数式を =$A$1+$B$1 へとしたいのですが、一箇所のセルだけではなく、複数のセルの数式の絶対参照への変換を一括で行う方法はないでしょうか?
【回答】
Sub test()
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
End Sub
【解説】
ToAbsolute:= のところで、変換後の参照の種類を指定します。
xlAbsolute 行列とも絶対参照に
xlAbsRowRelColumn 行だけ絶対参照に
xlRelRowAbsColumn 列だけ絶対参照に
xlRelative 行列とも相対参照に
というように、マクロを組み解決しました。
だいたいおっしゃっていることはわかったのですが、
「#VALUE!」とでるのは、数式内にでるのではなく、
カーソル全てが「#VALUE!」になってしまうのです。
原因がよくわからないのです。
しかし、おっしゃるように文字列がないかは確認したいと思います。

No.1
- 回答日時:
絶対参照から相対参照にするのは、セル参照から単に$を外すだけですよね。
しかし、コピーをしたときに正しく値を参照できてないのではないでしょうか?
ようするに取っては行けない$もあるのかなと推測します。
$は列と行で別々に付けられますので、右にコピーをするときは、参照が左の列にあるときは列には$が必要です。
例:「$A1」
まずは落ち着いて、長い数式を幾つかに分けてはいかがでしょうか。
そうすればどこに問題があるか分かってきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- 数学 単振り子とルンゲ・タック法 1 2022/07/15 00:05
- 物理学 問題の問2について質問なのですが、 明線条件、経路差Δ=2(L2-L1)=mλより 2(L2-L1) 5 2023/01/10 19:03
- タブレット AndroidタブレットのWIDEVINEについて 2 2023/07/25 19:38
- 電気工事士 第一電気工事士技能試験について 1 2022/12/13 11:21
- 数学 数学2B入門問題精講 第4章 三角関数 練習問題9 次の2直線l1,l2のなす角の大きさをそれぞれ求 1 2023/04/11 16:21
- 環境・エネルギー資源 380V 3相4線式の220Vを220V 3相3線式につなぐ方法 3 2022/10/05 06:19
- その他(悩み相談・人生相談) リモコンスイッチの挟み込みの際にN1.N2.L1.L2の2種類のリモコンスイッチがあったのですが、L 1 2022/04/14 10:08
- Excel(エクセル) Excelで日付の回数カウント 3 2022/12/09 23:23
- 数学 数学 9行目の「よってこれは右図に示すようにL(1)とL(2)の交点を直線Lが通ることを表す」 この 2 2023/06/23 00:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA ソートすると、1、11、...
-
既婚で現役のAV女優さんは居ま...
-
別ブックの空白行に転記
-
大昔から、クンニ、フェラって...
-
射精したあとの匂いって他人に...
-
先日彼氏とラブホに行ったら電...
-
1日3回セックスって多いですか...
-
おっぱいを舐める
-
初めて彼女とカーセックスをし...
-
2人でエッチできる場所を探して...
-
普通に疑問なんですが Hの時に...
-
夫にセックスがないのなら他人...
-
精液のにおいがほとんど無いの...
-
女性は電マ、ローター、バイブ...
-
彼氏の精液の匂いが無味無臭(...
-
彼のペニスが挿入時に柔らかく...
-
女性器の匂いについて 自慰行為...
-
手マンしたあと それとなく指の...
-
彼女をオカズにして抜くのって...
-
手マンしたあと彼氏の指に私の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既婚で現役のAV女優さんは居ま...
-
VBA ソートすると、1、11、...
-
CDレコの曲の消し方を教えてく...
-
VBAが止まります。
-
シンナーの夏型と冬型の違いは?
-
直線コネクタの中央にコネクタ...
-
相対参照から絶対参照に変換す...
-
EXCELで3行を一組にして結合す...
-
Word 黒塗り部分の文字のみ削除...
-
エクセル最終行の下に貼り付け
-
最適な組み合わせの自動計算
-
サイドビジネスやるべきか?
-
【VBA】文字列の場所入れ替え
-
データの平均を1分値にまとめる...
-
エクセルマクロで複数条件下で...
-
DNSの設定及びnslookup時の応答...
-
4次元について
-
ワイドナショーのB面で
-
オートフィルター抽出時データ...
-
別ブックの空白行に転記
おすすめ情報