
数式を間接的なものに変更できるメソッドまたはマクロを知っている人はいますか?
たとえば、現在私のシート上のすべての数式は次のように記述されています。
=SUM(Sheet2!A1:A10),
INDIRECT
これを次のような関数に簡単に変更する方法はありますか?
=SUM(INDIRECT("'Sheet2'!"&"A1"):Sheet2!$A$10)
1 つの数式を変更するのは難しくありませんが、それぞれが他のシートへの 3 ~ 4 つの参照を含む 100 の数式の場合、これを修正するには非常に長い時間がかかります。
範囲を合計しているのに、先頭に新しい行を挿入するたびに、数式が正しいセルを参照しないために問題が発生しています。毎回手動で行番号を変更しなくても済むように、より良い数式を書く方法を見つけようとしています。
答え1
このマクロは、シート内の数式を検索して置換するのに役立ちます。
Sub FindReplaceFormula()
Cells.Replace What:="=SUM(Sheet2!A1:A10)", Replacement:= _
"=SUM(INDIRECT("'Sheet2'!"&"A1"):Sheet2!$A$10)", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
必要に応じて、数式内のセル参照を調整できます。