結果の文字列ではなく、関数内のセル参照を置換する

結果の文字列ではなく、関数内のセル参照を置換する

複雑な数式があり、それを表で使用して、数式内の 1 つのセルを変更した場合の影響をグラフ化したいと考えています。

=($E$9+J2)-((($B$9+J2)+($B$23*200*$B$15)+(1E+99-1)*(($B$9+J2)*(1.1+(1-$B$23)*(0.75+($B$22*$B$15*0.4))*$B$15)+($B$23*200*$B$15)+$B$23*(FLOOR.MATH(1E+99/3)*200*$B$15/MAX(1,1E+99-1))))*$B$12/1E+99)*($E$9+J2)/((($E$9+J2)+($E$23*200*$E$15)+(1E+99-1)*(($E$9+J2)*(1.1+(1-$E$23)*(0.75+($E$22*$E$15*0.4))*$E$15)+($E$23*200*$E$15)+$E$23*(FLOOR.MATH(1E+99/3)*200*$E$15/MAX(1,1E+99-1))))*$E$12/1E+99)

ご覧のとおり、substitute を使用して簡略化しようとした繰り返し関数がいくつかあります。

=($E$9+J2)-SUBSTITUTE($B$29,$B$9,($B$9+J2))*$E$9/SUBSTITUTE($E$29,$E$9,($E$9+J2))

これは機能しません。なぜなら、substituteは実際には結果関数自体を変換するのではなく、関数を文字列に変換してインスタンスを検索します。

コンピュータ言語でプログラミングしている場合は、異なる引数を持つメソッドを呼び出すだけで済みますが、Excel でこれが可能かどうかはわかりません。

====

この「簡略化された」スプレッドシートの課題を説明するために、2つの数式を用意しました。

  |  A  |  B  |  C  | 
1 |    1   101   202      
2 |  100

セルB1にはこの数式があります

=A1+A2

セルC1にはこの数式があります

=SUBSTITUTE(B1,A1,A1*2)

セル C1 を 202 ではなく 102 にしたいのですが、結果の文字列ではなく、数式内の A1 の各インスタンスを置き換える方法はありますか?

答え1

あなたのコメントから判断すると、あなたが望むものに最も近いのは次のようなものだと思います。

=LET(x,A1*2,y,A2,x+y)

B2 で数式を解析する必要がある場合は、おそらく VBA で数式パーサーを記述する必要があります。ただし、代わりに数式全体を VBA UDF として記述する方が簡単かもしれません。

注: LETExcel O365の最新バージョンでのみ利用可能です

関連情報