mejorar mi codigo

02/07/2009 - 19:34 por j_lete | Informe spam
Hola grupo, tengo la siguente funcion que utilizo para actualizar cantidades
a disttintos tipos de interes de forma acumulada.
Las cantidades son datos que tengo e una hoja de calculo y se las paso a la
funcion.
Me gustaria saber como poder hacer esta funcion utilizando arrays, es decir,
un aray para los importes y otro para los porcentajes.

Gracias anticipadas por la ayuda que me puedan prestar.

Function ActualizaImp (imp1, imp2, imp3, imp4, imp5, imp6, imp7, imp8 As
Double) As Double

Dim A As Double, B As Double, C As Double, D As Double, E As Double, F As
Double, G As Double
Dim H As Double

PORC1 = 0.016
PORC2 = 0.027
PORC3 = 0.022
PORC4 = 0.017
PORC5 = 0.012
PORC6 = 0.012
PORC7 = 0.014
PORC8 = 0.021

A = ((((((((imp8 * (1 + PORC8)) * (1 + PORC7)) * (1 + PORC6)) * (1 + PORC5))
* (1 + PORC4)) * (1 + PORC3)) * (1 + PORC2)) * (1 + PORC1))
B = (((((((imp7 * (1 + PORC7)) * (1 + PORC6)) * (1 + PORC5)) * (1 + PORC4))
* (1 + PORC3)) * (1 + PORC2)) * (1 + PORC1))
C = ((((((imp6 * (1 + PORC6)) * (1 + PORC5)) * (1 + PORC4)) * (1 + PORC3)) *
(1 + PORC2)) * (1 + PORC1))
D = (((((imp5 * (1 + PORC5)) * (1 + PORC4)) * (1 + PORC3)) * (1 + PORC2)) *
(1 + PORC1))
E = ((((imp4 * (1 + PORC4)) * (1 + PORC3)) * (1 + PORC2)) * (1 + PORC1))
F = (((imp3 * (1 + PORC3)) * (1 + PORC2)) * (1 + PORC1))
G = (imp2) * 1
H = (imp1) * 1

ActualizaImp = A + B + C + D + E + F + G + H
End Function

Preguntas similare

Leer las respuestas

#16 Héctor Miguel
06/07/2009 - 01:21 | Informe spam
hola, Alexander !

Tienes toda la razón, dudar o conocer es una opción personal y ya tomé mi dicisión al respecto



=> me parece mas que suficiente (ademas de que estas en tu derecho) ;)

sin embargo me gustaría saber que estás considerando, envíame tus puebas y sigerencias a este foro



=> (creo que) seria mas practico (y facil/rapido) si TU haces las pruebas con base en los "arreglos" (sugeridos)

lo que envies a m dirección personal será publicado aquí, la idea es discutir y que todos participen, no es cierto?



=> muy cierto... siempre y cuando NO fuera posible reproducir el arreglo sugerido (y algun interesado lo solicitara, no ?)

Quiero hacer émfasis en algo, inicialmente haces este comentario
2) pero... "trabaja" los argumentos de forma inversa (descendente):
A = ((((((((imp8 * (1 + PORC8)) * (1 + PORC7)) .
B = (((((((imp7 * (1 + PORC7)) * (1 + PORC6)) .
y ahora haces este
- uno en ascendente: [A1] "imp1"... [A8] "imp8*
- y otro descendente: [D1] "imp8"... [D8] "imp1"


el primero se refiere a iniciar los índices de los arreglos en 1 ó 0, lo cual es irrelevante porque las operaciones son las mismas
en el segundo caso inviertes los imp's pero no las celdas [A1] vs [D1]



=> esta "inversion" es en relacion directa con los puntos 4 y 5 de mi mensaje anterior (cual pones primero: [A1]=imp1 o [A1]=imp8 ?)
(los cuales no creo que sea "irrelevante" si los dejas "fuera de la jugada" y -al parecer- aun no haces esas pruebas ???)

si miras mi codigo, invertí los dos rangos, no uno solo, de hecho ese ejemplo no lo entiendo
parece no representar el algoritmo original, tal vez eso y una posible confución con los paréntesis anidados
que son innecesarios, sea lo que no permita tener un acuerdo entre ambos.



=> es cierto que los parentesis (en exceso) son innecesarios, de hecho, desde la primer prueba/correccion/... que hice -> los elimine
pero (creo que) lo que no "permite" llegar a un punto de concordia es que (aun) no haces la prueba con los arreglos sugeridos (?)

Lo que llama la atención es que usas los ejemplos que señalé anteriormente, para referirte a una misma condición
a pesar de que evidentemente son distintos



=> me espero para que (si tienes tiempo) hagas pruebas con los dos arreglos "sugeridos"

saludos,
hector.
Respuesta Responder a este mensaje
#17 KL
06/07/2009 - 03:18 | Informe spam
Hola chicos,

Me vais a perdonar, pero...

Introduzco valores de 1 a 8 en A1:A8 y =ActualizaImp2(A1:A8) me devuelve
39.7720491242448
Introduzco valores de 8 a 1 en B1:B8 y =ActualizaImp2(B1:B8) me devuelve
37.9455311958239

Que es lo que hago mal? :-))))

Saludos,
KL
Respuesta Responder a este mensaje
#18 Héctor Miguel
06/07/2009 - 05:52 | Informe spam
hola, KL !

Hola chicos,
Me vais a perdonar, pero...
Introduzco valores de 1 a 8 en A1:A8 y =ActualizaImp2(A1:A8) me devuelve 39.7720491242448
Introduzco valores de 8 a 1 en B1:B8 y =ActualizaImp2(B1:B8) me devuelve 37.9455311958239
Que es lo que hago mal? :-))))



(segun yo ?)... nada hay que hagas "mal", (solamente) estas comprobando lo que Alexander no ha entendido:
que "el orden de los factores (en este caso)... SI altera el producto" (de la funcion personalizada) es decir...

- no es lo mismo si los importes se registran en un rango en orden ascendente o descendente (por antiguedad)
- si 1 es el mas actual... donde lo pondrias ? (A1 o A8, sabiendo que el siguiente "mas actual" reemplazara al "1" anterior)

saludos,
hector.
Respuesta Responder a este mensaje
#19 KL
06/07/2009 - 11:38 | Informe spam
Hola HM,

- si 1 es el mas actual... donde lo pondrias ? (A1 o A8, sabiendo que el
siguiente "mas actual" reemplazara al "1" anterior)



Salvo alguna consideracion especial y por defecto - en A1

Saludos,
KL
Respuesta Responder a este mensaje
#20 Héctor Miguel
06/07/2009 - 19:44 | Informe spam
hola, KL !

- si 1 es el mas actual... donde lo pondrias ? (A1 o A8, sabiendo que el siguiente "mas actual" reemplazara al "1" anterior)



Salvo alguna consideracion especial y por defecto - en A1



- seria la inversa de un proceso tradicional/practico/... de registro de datos
donde siempre el "mas actual" es el que se va poniendo al final del listado (p.e.)
ventas (ene...dic), inventarios (el ultimo registro es el mas reciente), etc.

- implica insertar una fila y modificar toda formula que "tenia" una referencia inicial
(cada vez y a partir de A1, a menos que utilices referencias indirectas)

- salvo alguna consideracion especial, lo presentaria en orden inverso (?)

por esto es que hacia el comentario del orden de registro (usos y costumbres, quizas ?)

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida