Mostrar referencias primarias de fórmula.

12/09/2006 - 21:51 por Donca | Informe spam
Hola: quería saber si es posible realizar, de manera sencilla, lo siguiente:

En C1, tengo la fórmula "A1+B1"
En E1, tengo la fórmula "C1*D1".

Quiero que se me muestre en un solo sitio, la referencia completa de la
fórmula de E1, con las celdas primarias, es decir que se me muestre:
"(A1+B1)*D1".

El ejemplo está muy simplificado; en la hoja real, las referencias se
complican bastante.

Un saludo, y gracias.
 

Leer las respuestas

#1 Donca
15/09/2006 - 21:22 | Informe spam
Gracias, Héctor: el objetivo de la "desformulación" :), es facilitar la
fórmula completa, en un solo paso, a un programador.

Yo he elaborado una hoja bastante compleja, que se utiliza mucho en mi
empresa. La verdad es que al final, resulta que sólo yo la uso
correctamente, y queríamos realizar esos cálculos de forma un poco más
sólida, con alguna mini aplicación que me desarrolle un programador. No sé
en qué lenguaje la va a desarrollar (yo cólo controlo excel), pero
necesitaba incluir fórmulas "desde el princiìo", me lo había pedido, y me
estaba volviendo loco.

Gracias otra vez.


"Héctor Miguel" escribió en el mensaje
news:e%
hola. ?

... queria saber si es posible realizar, de manera sencilla, lo
siguiente:
En C1, tengo la formula "A1+B1"
En E1, tengo la formula "C1*D1".
... que se me muestre en un solo sitio, la referencia completa de la
formula de E1, con las celdas primarias
es decir que se me muestre: "(A1+B1)*D1".
El ejemplo esta muy simplificado; en la hoja real, las referencias se
complican bastante.



sin saber cual seria la 'utilidad' o el uso pretendido de tal
[des]formulacion de una formula

1) para poder 'rastrear' las referencias que forman parte de una formula,
es necesario recurrir a las celdas 'precedentes'...
la cual, es de las propiedades que estan 'prohibidas' de ser
manipuladas por funciones definidas por el usuario [UDF]...
por lo que [me temo que]... solo te queda 'escribir' la construccion
del 'origen' de la formula... -> por macros :-((

2) estoy seguro que la [posible] 'complejidad' del caso 'real'... es
diferente de la 'simplificacion' [de formula] que expones :))
[asi que]... quedaran a tu discrecion las
modificaciones/adaptaciones/ampliaciones/... necesarias para el siguiente
ejemplo:

3) considera que todavia quedan 'lagunas' por la necesidad de convertir a
referencias 'absolutas' [tipo $A$1] algunas referencias
por lo que [seguramente] el resultado reflejara referencias
absolutas... y la formula 'real' contendria referencias [semi]relativas
:-((

el requisito [supuesto] es que seleccionaras una celda [vacia] a la
derecha de la celda que contiene 'la formula' y...
copias/pegas/ejecutas el siguiente macro [obviamente depositado en algun
modulo de codigo 'general']...

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Sub Ver_origen()
If Not IsEmpty(ActiveCell) Then _
If MsgBox("Se borrara el contenido de la celda activa !!!", _
vbOKCancel + vbCritical + vbDefaultButton2, _
"CONTINUAR... ?") = vbCancel Then Exit Sub
With ActiveCell.Offset(, -1)
If Not .HasFormula Then ActiveCell = "No hay formula que rastrear...":
Exit Sub
On Error Resume Next
If .Precedents Is Nothing Then ActiveCell = "No hay celdas
precedentes...": Exit Sub
On Error GoTo 0
Dim f_Origial As String, Celda As Range
f_Original = Application.ConvertFormula(.FormulaLocal, xlA1, xlA1,
xlAbsolute)
' marca la siguiente linea como comentario ->' si deseas 'ver' el signo
'=' como parte del resultado '
f_Original = Mid(f_Original, 2)
For Each Celda In .Precedents
f_Original = Application.Substitute(f_Original, Celda.Address, _
IIf(Celda.HasFormula, "(" & Mid(Celda.FormulaLocal, 2) & ")",
Celda.Address))
Next
End With
' desmarca la siguiente linea si quieres 'ver' el signo '=' como parte
del resultado '
' ActiveCell.NumberFormat = "@"
ActiveCell = f_Original
End Sub

Preguntas similares