Forum Discussion
Promedio dentro de rango dinamico
Necesito ayuda con el desarrollo de un codigo vba que haga esto:
Definir un rango c2:c1001
Definir un subrango dinámico de 96 filas que inicie en la celda c2 y termine en la celda c96.
Dentro de este subrango; identificar los 32 valores más altos.
Calcular el promedio de estos 32 valores.
Escribir este resultado en la celda M96
Reiniciar el proceso desde el rango c3:c101 y repetirlo hasta llegar a c1001; los resultados los escribe a partir de m97 hasta m1001. Gracias de antemano por cualquier comentario
- NikolinoDEGold Contributor
Puedes lograr esto utilizando un bucle en VBA para recorrer los diferentes rangos y realizar los cálculos necesarios. Aquí tienes un ejemplo de cómo hacerlo:
El código Vba no está probado, haga una copia de seguridad de su archivo.
Sub CalcularPromedio() Dim ws As Worksheet Dim i As Long Dim j As Long Dim rng As Range Dim subrng As Range Dim cell As Range Dim maxValues As Variant Dim sumValues As Double Dim promedio As Double ' Establecer la hoja de trabajo Set ws = ThisWorkbook.Sheets("Nombre de tu hoja de trabajo") ' Definir el rango principal Set rng = ws.Range("C2:C1001") ' Bucle para recorrer los diferentes rangos For i = 2 To 1001 Step 96 ' Definir el subrango dinámico Set subrng = ws.Range(ws.Cells(i, 3), ws.Cells(i + 95, 3)) ' Inicializar el array para almacenar los valores máximos ReDim maxValues(1 To 32) ' Identificar los 32 valores más altos dentro del subrango For j = 1 To 32 maxValues(j) = WorksheetFunction.Large(subrng, j) Next j ' Calcular el promedio de los 32 valores más altos sumValues = WorksheetFunction.Sum(maxValues) promedio = sumValues / 32 ' Escribir el resultado en la celda correspondiente en columna M ws.Cells(i + 94, 13).Value = promedio Next i End Sub
Asegúrate de reemplazar "Nombre de tu hoja de trabajo" con el nombre de la hoja de trabajo en la que estás trabajando. Este código recorre el rango C2:C1001 en incrementos de 96 filas, identifica los 32 valores más altos en cada subrango dinámico de 96 filas, calcula su promedio y escribe el resultado en la columna M (columna 13) comenzando desde la fila 97. El texto, los pasos y el código vba se crearon con la ayuda de IA.
Este texto está incluido en el software, es posible utilizar gramáticamente o en un formato externo.
¡Mis respuestas son voluntarias y sin garantía!
Espero que esto te ayudará.
¿Fue útil la respuesta? Marca como mejor respuesta y dale me gusta!
Esto ayudará a todos los participantes del foro.
- a7024782Brass ContributorGracias por su aporte, probare a partir de este codigo