Insertar fórmula con macro

Hola, tengo el sigte problema: quiero copiar la fórmula de distribución normal inversa en una celda que tengo almacenada en una variable, pero me arroja un error cuando el dato de la normal tiene decimales
Sub Macro3()
Dim DIR10
Dim DIR11, DIR12
DIR10 = Range("T5")
DIR11 = Range("D5")
DIR12 = Range("E5")
Sheets("DATOS").Select
Range(DIR10).Select
ActiveCell.Value = "=NORMINV(RAND()," & MDIR11 & "," & MDIR12 & ")"
End Sub
Agradezco tu ayuda.
2

2 respuestas

Respuesta
1
Aparentemente esta función sólo está disponible en Office 2003, por lo que no pude hacer pruebas para poder darte una respuesta más concreta.
Sin embargo, consulté en la red acerca de la función y encontré que lo que estás haciendo es válido, es importante tener en cuenta que el valor que está en T5 debe ser un valor entre 0 y 1 pues corresponde a una probabilidad, y el valor de DIR12 debe ser mayor que 0 porque es la desviación estándar.
Por otro lado, supongo que cuando te presenta errores al colocar cifras decimales es porque el formato de decimal no es el mismo cuando trabajas con excel (por ejemplo usa "," en lugar de "."), te propongo que revises si este es el problema.
Espero haberte ayudado en algo, si puedo hacer algo más, no dudes en preguntar.
Te toca echar mano de todas tus habilidades en programación, usando las funciones para manejo de texto.
En primer lugar, tienes que determinar el lugar donde está la coma (","), entonces haces un loop que recorra toda la palabra hasta encontrarla, luego divides la palabra en dos partes, antes y después de la coma y finalmente la unes nuevamente, concatenando los valores con el signo correcto, es decir el punto (".").
De todas formas, antes de ponerte en estas, revisa si hay forma de convertir el dato que se está escribiendo en la hoja de cálculo y cambiar el signo de decimal, para que sea igual al de vba.
Sí, ese es el problema, los decimales, no sé como manejarlo.
Tengo varias dudas sobre tu macro:
1. ¿Qué información colocas en T5? ¿La dirección de otra celda?
2. ¿Igualmente qué colocas en D5 y E5?
3. ¿Las variables MDIR11 y MDIR12 que datos deberían tener?
Cuéntame esto para ver si puedo ayudarte.
Respuesta
1
Si cambias:
ActiveCell.Value = "=NORMINV(RAND()," & MDIR11 & "," & MDIR12 & ")"
Por:
ActiveCell.Value = "=NORMINV(RAND()," & DIR11 & "," & DIR12 & ")"
Funciona Correctamente..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas