Como aplico una macro por cada linea de una hoja

Me pregunto sí pudieras ayudarme con el siguiente problema. En una hoja recibo información con una posibilidad de 5000 registros, los cuales debo revisar en primer lugar sí las 5000 líneas poseen información. Luego debo recalcular, en campos diferentes, los valores recibidos de las líneas activas, de manera que se observe valor recibido y otra columna el valor recalculado y así establecer la diferencia entre ambos. Agradecido de antemano cualquier ayuda al respecto. Saludos

1 Respuesta

Respuesta
1
Lo siento no entiendo lo que necesitas, trata de poner un ejemplo más especifico.
Primero debo agradecer la pronta atención a mi solicitud se ayuda, a continuación tratare de ser mas explícito en mi problema;
"Transfiero en desde una hoja origen una alta cantidad de registros (con un máximo de 5000 reg.), estos registros contienen un campo con un valor, el cual llamaremos valor de compra en dólares, en otro campo tenemos el valor del dólar con respecto a la moneda local, y también tenemos la fecha de compra, Ahora bien, al final del mes se promedia el valor del dólar y con ese valor promediado se debe recalcular el valor de la compra de cada registro y colocarlo en la hoja que previamente recibió los registros para ajustar el valor original por el valor ajustado."
Espero haber explicado mi situación con mayor claridad, a los efectos de recibir la ayuda altamente requerida, Saludos Cordiales
Listo, este código hace lo que necesitas.
Sub Convierte()
Dim Comprobar, Contador
Comprobar = True: Contador = 1 ' Inicializa variables.
Range("E2").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT(R[1]C[-4]:R[4999]C[-4],R[1]C[-3]:R[4999]C[-3])/SUM(R[1]C[-4]:R[4999]C[-4])"
a = Range("E2").Value
Range("E2").ClearContents
Do ' Bucle externo.
Do While Contador < 5000 ' Bucle interno.
Contador = Contador + 1 ' Incrementa el contador.
If Range("A" & Contador).Value <> "" Then ' Si la condición es verdadera.
Range("D" & Contador).Value = Range("A" & Contador).Value * a
Else
Comprobar = False ' Establece el valor a False.
Exit Do ' Sale del bucle interno.
End If
Loop
Loop Until Comprobar = False ' Sale inmediatamente del bucle externo.
End Sub
Siguiendo tu ejemplo, el valor en dólares comienza en A2, el factor de conversión comienza en B2, la fecha comienza en C2, y por ende el valor recalculado empieza en D2.
Ojo dado que me diste un limite de operaciones lo puse como condición, por tanto la macro solo llega hasta 5,000 filas, luego de eso se cancela.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas