Feb 18 2024 03:23 PM - edited Feb 18 2024 03:24 PM
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
Feb 18 2024 11:10 PM
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.
Feb 19 2024 03:51 AM