Error en formula desconocido

29/11/2004 - 18:13 por gema.bernardo | Informe spam
En una celda (G11), tengo que aplicar mediante vb la siguiente formula:

=SI(F11=H11;F11;SI($E$3="N";SI(O(ESBLANCO(F11);ESBLANCO(H11));"";0);SI($E$3="M";SI(O(ESBLANCO(F11);ESBLANCO(H11));"";SI(F11>0;MIN(ABS(F11);ABS(H11));PRODUCTO(-1;MAX(ABS(F11);ABS(H11)))));"")))


el caso es que la forma como lo hago es:
Dim rango_qv As string
Dim rango_qv_p As string
rango_qv = "F11"
rango_qv_p = "H11"


formul6 = "PRODUCT(-1,MAX(ABS(" & rango_qv & "),ABS(" & rango_qv_p & ")))"

formul3 = "IF(" & rango_qv & ">0,MIN(ABS(" & rango_qv & "),ABS(" &
rango_qv_p & "))," & formul6 & ")"

formul5 = "IF(OR(ISBLANK(" & rango_qv & "),ISBLANK(" & rango_qv_p &
")),""""," & formul3 & ")"

formul4 = "IF(OR(ISBLANK(" & rango_qv & "),ISBLANK(" & rango_qv_p &
")),"""",0)"

formul2 = "IF(" & rango_regla & "=""M""," & formul5 & ","""")"
formul1 = "IF(" & rango_regla & "=""N""," & formul4 & "," & formul2 & ")"
formul = "=IF(" & rango_qv & "=" & rango_qv_p & "," & rango_qv & "," &
formul1 & ")"

.Cells(rng11 + 1, columna_qc_int).formula = formul

El codigo no da error y a la celda se le pone la formula. El problema es
que tengo que entrar en la celda y dar INTRO para que reconozca la formula
como buena. Si no hago esto, en la celda me muestra: #NUMBER?


Alguien sabria decirme que me falta por hacer en codigo???
Muchas gracias.

Preguntas similare

Leer las respuestas

#1 KL
29/11/2004 - 19:44 | Informe spam
Gema,

Aqi parece q falta una parte del codigo por lo cual no pude hacer
simulacion. A falta de mas informacion, has probado forzar el recalculo de
formulas mediante ActiveSheet.Calculate?

Saludos,
KL

"Gema" wrote in message
news:
En una celda (G11), tengo que aplicar mediante vb la siguiente formula:

=SI(F11=H11;F11;SI($E$3="N";SI(O(ESBLANCO(F11);ESBLANCO(H11));"";0);SI($E$3="M";SI(O(ESBLANCO(F11);ESBLANCO(H11));"";SI(F11>0;MIN(ABS(F11);ABS(H11));PRODUCTO(-1;MAX(ABS(F11);ABS(H11)))));"")))


el caso es que la forma como lo hago es:
Dim rango_qv As string
Dim rango_qv_p As string
rango_qv = "F11"
rango_qv_p = "H11"


formul6 = "PRODUCT(-1,MAX(ABS(" & rango_qv & "),ABS(" & rango_qv_p & ")))"

formul3 = "IF(" & rango_qv & ">0,MIN(ABS(" & rango_qv & "),ABS(" &
rango_qv_p & "))," & formul6 & ")"

formul5 = "IF(OR(ISBLANK(" & rango_qv & "),ISBLANK(" & rango_qv_p &
")),""""," & formul3 & ")"

formul4 = "IF(OR(ISBLANK(" & rango_qv & "),ISBLANK(" & rango_qv_p &
")),"""",0)"

formul2 = "IF(" & rango_regla & "=""M""," & formul5 & ","""")"
formul1 = "IF(" & rango_regla & "=""N""," & formul4 & "," & formul2 & ")"
formul = "=IF(" & rango_qv & "=" & rango_qv_p & "," & rango_qv & "," &
formul1 & ")"

Cells(rng11 + 1, columna_qc_int).formula = formul

El codigo no da error y a la celda se le pone la formula. El problema es
que tengo que entrar en la celda y dar INTRO para que reconozca la formula
como buena. Si no hago esto, en la celda me muestra: #NUMBER?


Alguien sabria decirme que me falta por hacer en codigo???
Muchas gracias.




Respuesta Responder a este mensaje
#2 Leandro
29/11/2004 - 20:49 | Informe spam
Hazlo de la siguiente manera:

Range("G11").FormulaR1C1 = "=IF(R[1]C[2]=R[1]C[4],R[1]C
[2],IF(R3C5=""N"",IF(OR(ISBLANK(R[1]C[2]),ISBLANK(R[1]C
[4])),"""",0),IF(R3C5=""M"",IF(OR(ISBLANK(R[1]C[2]),ISBLANK
(R[1]C[4])),"""",IF(R[1]C[2]>0,MIN(ABS(R[1]C[2]),ABS(R[1]C
[4])),PRODUCT(-1,MAX(ABS(R[1]C[2]),ABS(R[1]C
[4]))))),"""")))"


En una celda (G11), tengo que aplicar mediante vb la


siguiente formula:

=SI(F11=H11;F11;SI($E$3="N";SI(O(ESBLANCO(F11);ESBLANCO


(H11));"";0);SI($E$3="M";SI(O(ESBLANCO(F11);ESBLANCO
(H11));"";SI(F11>0;MIN(ABS(F11);ABS(H11));PRODUCTO(-1;MAX
(ABS(F11);ABS(H11)))));"")))


el caso es que la forma como lo hago es:
Dim rango_qv As string
Dim rango_qv_p As string
rango_qv = "F11"
rango_qv_p = "H11"


formul6 = "PRODUCT(-1,MAX(ABS(" & rango_qv & "),ABS(" &


rango_qv_p & ")))"

formul3 = "IF(" & rango_qv & ">0,MIN(ABS(" & rango_qv


& "),ABS(" &
rango_qv_p & "))," & formul6 & ")"

formul5 = "IF(OR(ISBLANK(" & rango_qv & "),ISBLANK(" &


rango_qv_p &
")),""""," & formul3 & ")"

formul4 = "IF(OR(ISBLANK(" & rango_qv & "),ISBLANK(" &


rango_qv_p &
")),"""",0)"

formul2 = "IF(" & rango_regla & "=""M""," & formul5


& ","""")"
formul1 = "IF(" & rango_regla & "=""N""," & formul4 & ","


& formul2 & ")"
formul = "=IF(" & rango_qv & "=" & rango_qv_p & "," &


rango_qv & "," &
formul1 & ")"

.Cells(rng11 + 1, columna_qc_int).formula = formul

El codigo no da error y a la celda se le pone la formula.


El problema es
que tengo que entrar en la celda y dar INTRO para que


reconozca la formula
como buena. Si no hago esto, en la celda me muestra:


#NUMBER?


Alguien sabria decirme que me falta por hacer en codigo???
Muchas gracias.




.

Respuesta Responder a este mensaje
#3 Héctor Miguel
30/11/2004 - 08:57 | Informe spam
hola, Gema !

... tengo que aplicar mediante vb la siguiente formula [...]
... el codigo no da error y a la celda se le pone la formula
... problema ... tengo que entrar en la celda y dar INTRO para que reconozca la formula
... si no hago esto, en la celda me muestra: #NUMBER?



no estoy seguro de si el error 'dice' #NUMBER? o... 'quisiste' decir: #¿NOMBRE? :))
[segun yo] el 'valor de error'... ->#¡NUM!<- 'aparece' [solo] cuando...
-> usas un argumento 'NO numerico' en una funcion que ->requiere<- que sea numerico o...
-> cuando se excede la precision de excel

si el error 'real' es '#¿NOMBRE?'...
pudiera 'deberse' a como estes 'declarando' [y estableciendo el 'valor' de] la variable ->rango_regla<-

[dicho sea ... 'de paso']
podrias 'ahorrarte' +/- 40 carcteres en la formula que estas utilizando si la cambias a... [ojo con los 'saltos de linea']
=si(f11=h11;f11;si(o(esblanco(f11);esblanco(h11));"";si($e$3="n";0;si($e$3="m";si(f11>0;min(abs(f11);abs(h11));producto(-1;max(abs(f11);abs(h11))));""))))

que [segun yo] 'hace lo mismo'
y la forma de 'definirla' por codigo seria +/- como sigue...
dentro de la macro que estas ejecutando ...
Dim rango_qv As String, rango_qv_p As String, rango_regla As String
rango_qv = "f11": rango_qv_p = "h11": rango_regla = "$e$3"
Dim Base As String, Blancos As String, NoM As String, _
May_0 As String, Dif_0 As String, Final As String
Base = "=If(" & rango_qv & "=" & rango_qv_p & "," & rango_qv & ","
Blancos = "if(or(isblank(" & rango_qv & "),isblank(" & rango_qv_p & ")),"""","
NoM = "if(" & rango_regla & "=""N"",0,if(" & rango_regla & "=""M"","
May_0 = "if(" & rango_qv & ">0,min(abs(" & rango_qv & "),abs(" & rango_qv_p & ")),"
Dif_0 = "product(-1,max(abs(" & rango_qv & "),abs(" & rango_qv_p & ")))),""""))))"
Final = Base & Blancos & NoM & May_0 & Dif_0
Cells(rng11 + 1, columna_qc_int).Formula = Final

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#4 gema.bernardo
30/11/2004 - 08:58 | Informe spam
Utilizando FormulaR1C1, todo OK.

Gracias.

Leandro wrote:

Hazlo de la siguiente manera:

Range("G11").FormulaR1C1 = "=IF(R[1]C[2]=R[1]C[4],R[1]C
[2],IF(R3C5=""N"",IF(OR(ISBLANK(R[1]C[2]),ISBLANK(R[1]C
[4])),"""",0),IF(R3C5=""M"",IF(OR(ISBLANK(R[1]C[2]),ISBLANK
(R[1]C[4])),"""",IF(R[1]C[2]>0,MIN(ABS(R[1]C[2]),ABS(R[1]C
[4])),PRODUCT(-1,MAX(ABS(R[1]C[2]),ABS(R[1]C
[4]))))),"""")))"


>En una celda (G11), tengo que aplicar mediante vb la
siguiente formula:
>
>=SI(F11=H11;F11;SI($E$3="N";SI(O(ESBLANCO(F11);ESBLANCO
(H11));"";0);SI($E$3="M";SI(O(ESBLANCO(F11);ESBLANCO
(H11));"";SI(F11>0;MIN(ABS(F11);ABS(H11));PRODUCTO(-1;MAX
(ABS(F11);ABS(H11)))));"")))
>
>
>el caso es que la forma como lo hago es:
>Dim rango_qv As string
>Dim rango_qv_p As string
>rango_qv = "F11"
>rango_qv_p = "H11"
>
>
>formul6 = "PRODUCT(-1,MAX(ABS(" & rango_qv & "),ABS(" &
rango_qv_p & ")))"
>
>formul3 = "IF(" & rango_qv & ">0,MIN(ABS(" & rango_qv
& "),ABS(" &
>rango_qv_p & "))," & formul6 & ")"
>
>formul5 = "IF(OR(ISBLANK(" & rango_qv & "),ISBLANK(" &
rango_qv_p &
>")),""""," & formul3 & ")"
>
>formul4 = "IF(OR(ISBLANK(" & rango_qv & "),ISBLANK(" &
rango_qv_p &
>")),"""",0)"
>
>formul2 = "IF(" & rango_regla & "=""M""," & formul5
& ","""")"
>formul1 = "IF(" & rango_regla & "=""N""," & formul4 & ","
& formul2 & ")"
>formul = "=IF(" & rango_qv & "=" & rango_qv_p & "," &
rango_qv & "," &
>formul1 & ")"
>
>.Cells(rng11 + 1, columna_qc_int).formula = formul
>
>El codigo no da error y a la celda se le pone la formula.
El problema es
>que tengo que entrar en la celda y dar INTRO para que
reconozca la formula
>como buena. Si no hago esto, en la celda me muestra:
#NUMBER?
>
>
>Alguien sabria decirme que me falta por hacer en codigo???
>Muchas gracias.
>
>
>
>
>.
>
Respuesta Responder a este mensaje
#5 Héctor Miguel
30/11/2004 - 10:27 | Informe spam
hola, Gema !

Utilizando FormulaR1C1, todo OK.



=> ¿estas 'segura'? ...

=> cuando usas [en vba] la 'notacion' 'RC'
los numeros 'entre corchetes' significan referencias a X filas/columnas 'de distancia' PERO...
->de la celda 'activa' o... 'partiendo' de una referencia 'dada'<- [es decir]...
para que la notacion R[1]C[2] ->'apunte' a 'F11'<-...
->la celda 'activa' [o a la que 'debiera' aplicarse la formula]... DEBE SER 'D10'<-
[o lo que es 'lo mismo'... 'D1'0 + 1_fila + 2_columnas = 'F11']

=> ¿confirmas que en 'G11' tienes una formula que 'hace referencia' a 'F11' y 'H11'?

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida