Sustituir referencias de celda en función, no en cadena resultante

Sustituir referencias de celda en función, no en cadena resultante

Tengo una fórmula complicada que me gustaría usar en una tabla, mientras grafico los efectos de cambiar una celda en la fórmula.

=($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)

Como puedes ver, hay algunas funciones repetitivas que intenté simplificar con sustituto.

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

Esto no funciona porque el sustituto en realidad está convirtiendo elresultadode las funciones en cadenas y buscar instancias en lugar de convertir la función en sí.

Si estuviéramos programando en un lenguaje informático, simplemente podríamos llamar a un método con diferentes argumentos, pero no estoy seguro de que Excel sea capaz de hacer esto.

====

Para ilustrar el desafío en esta hoja de cálculo "simplificada", tengo dos fórmulas

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

La celda B1 tiene esta fórmula

=A1+A2

y la celda C1 tiene esta fórmula

=SUBSTITUTE(B1,A1,A1*2)

Quiero que la celda C1 sea 102 en lugar de 202. ¿Hay alguna manera de sustituir cada instancia de A1 en la fórmula en lugar de la cadena resultante?

Respuesta1

Creo que la aproximación más cercana a lo que quieres, según lo que muestras en tus comentarios, sería algo como

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

Si necesita analizar la fórmula en B2, probablemente necesite escribir un analizador de fórmulas en VBA. Pero podría ser más sencillo escribir la fórmula completa como una UDF de VBA.

Nota: LETsolo está disponible en las últimas versiones de Excel O365

información relacionada