Funcion esref. Comprobar si una celda contine formula

19/05/2009 - 12:00 por Pdiaz | Informe spam
Busco saber si el contenido de una celda es una formula o una constante con
la funcion esref. El resultado que obtengo es siempre "VERDADERO" si el valor
es una referencia os pongo un ejemplos:


Celda A2¡+A3
Funcion: esref(A2)
Resultado: VERDADERO

Celda A2=3
Funcion: esref(A2)
Resultado: VERDADERO

En este segundo caso entiendo que deberia ser falso.

No se si es que no he entendido nada o es un error no reportado de Excel.

Podeis ayudarme?.

Muchas gracias
 

Leer las respuestas

#1 Héctor Miguel
19/05/2009 - 14:32 | Informe spam
hola, !

Busco saber si el contenido de una celda es una formula o una constante con la funcion esref.
El resultado que obtengo es siempre "VERDADERO" si el valor es una referencia os pongo un ejemplos:

Celda A2¡+A3
Funcion: esref(A2)
Resultado: VERDADERO

Celda A2=3
Funcion: esref(A2)
Resultado: VERDADERO

En este segundo caso entiendo que deberia ser falso.
No se si es que no he entendido nada o es un error no reportado de Excel...



(hasta donde se) una formula no tiene por que (siempre) hacer referencias a celdas
no creo que =esref(...) sirva para tu proposito, ya que solo reporta si la "referencia" es valida para la formula
y el resultado de verdadero en =esref(a2) se refiere a que la "referencia" (a2) SI es una referencia "valida"
OJO: NO esta comprobando el valor que tenga [A2], si no que "a2" (como argumento) SI es una referencia de celda
lo puedes comprobar si cambias el argumento en la formula:
de: -> =esref(a2)
a: -> =esref(3)

alternativas para determinar si una celda contiene formula ?...

op1: usando nombres definidos con macro-funciones del viejo excel v.4 (p.e.)
si suponemos que necesitas comprobar si 'A1' contiene formula desde 'B1'
(es decir, comprobando siempre la celda que esta a la izquierda de la que verifica)...

1) selecciona [B1] <= OJO: es importante cual sea la celda "activa" cuando se crea el nombre
2) (menu) insertar / nombre / definir
3) nombre: p.e. -> TieneFormula
se refiere a: -> =indicar.celda(48+0*hoy(),!a1) y... acepta
si excel ingles: -> =get.cell(48+0*now(),!a1)
nota el signo '!' para indicar la celda como relativa y SIN referencia a la hoja <= OJO
4) (todavia en B1) usa el nombre para comprobar si [A1] contiene formua: =tieneformula
(donde uses el nombre, estara comprobando la celda que este una columna a su izquierda)

op2: la otra es definir una funcion personalizada +/- como la siguiente:
en un modulo de codigo estandar/general/normal/... ==Function TieneFormula(Celda As Range) As Boolean
TieneFormula = Celda(1,1).HasFormula
End Function

y la puedes llamar desde tu hoja de calculo (p.e.) =TieneFormula(a1)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

p.d. mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D

Preguntas similares