Hay dos variantes de esta estructura
1-En el primer tipo debemos especificar el rango en el que se realiza la iteración
Como ejemplo hallaremos el promedio del rango A1:D4,dejando el resultado en la celda C7, para este ejemplo pondremos valores enteros
Código:
La parte más importante del código es
que significa: para cada celda del rango A1:D4 ejecutar el bloque
y cuando se llega a la última celda del rango, automáticamente se hace la cuenta
luego se coloca el resultado en la celda C8
Código para copiar y pegar
Sub PromedioRango()
Dim cell As range
Dim sum As Integer
Dim cant As Integer
Dim prom As Variant
For Each cell In range("A1:D4").cells
sum = sum + cell.Value
cant = cant + 1
Next cell
prom = sum / cant
range("C8").Select
ActiveCell.Value = prom
End Sub
2-El segundo tipo utiliza la propiedad CurrentRegion, esta propiedad es muy interesante pues nos permite seleccionar un rango cuyos límites no se conocen ya que CurrentRegion devuelve el rango que rodea a una celda seleccionada.
Podemos decir que CurrentRegion es un rango rodeado por filas y columnas en blanco. En la figura se puede ver dos regiones de este tipo.
Utilizaremos estas regiones para obtener el promedio de las mismas, para lo cual empleamos el código
Este código sirve para las dos regiones, siempre y cuando se seleccione una celda de una u otra de acuerdo en cual se quiera calcular el promedio. Por ejemplo si queremos calcular el promedio del rango de la zona de contorno verde el resultado seria
En este caso hemos seleccionado la celda “ H3”, pero se podría haber seleccionado cualquier otra
La diferencia con el caso 1 es
en la que
devuelve el rango de la región actual.
Código para copiar y pegar
Sub PromedioRegion()
Dim cell As range
Dim sum As Integer
Dim cant As Integer
Dim prom As Variant
For Each cell In ActiveCell.CurrentRegion.cells
sum = sum + cell.Value
cant = cant + 1
Next
prom = sum / cant
range("D8").Select
ActiveCell.Value = prom
End Sub