21.12.2012 Views

Programación Visual Basic (VBA) para Excel y Análisis ... - TEC-Digital

Programación Visual Basic (VBA) para Excel y Análisis ... - TEC-Digital

Programación Visual Basic (VBA) para Excel y Análisis ... - TEC-Digital

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>VBA</strong> <strong>para</strong> <strong>Excel</strong> M.Sc. Walter Mora F., M.Sc. José Luis Espinoza B. 22<br />

1.5.4 Manejo de rangos<br />

Una rango en <strong>Excel</strong> corresponde a una selección de celdas. Una selección de las celdas de una fila o una columna<br />

se maneja en <strong>Excel</strong> como una matriz de orden 1 × n o de orden n × 1 (un vector). La selección de un bloque<br />

de celdas se maneja como una matriz n × m. Si una celda está en blanco, se lee un cero.<br />

Ejemplo 4<br />

Promedio simple. Consideremos una tabla con 5 notas, todas con igual peso.<br />

Figure 1.22: Promedio simple.<br />

Para calcular el promedio simple, en cada fila, vamos a hacer una macro que recibe un rango, cuenta las notas,<br />

suma y divide entre el número de notas.<br />

Function PromedioSimple(R As Range) As Double ’R es la variable<br />

que recibe el rango<br />

Dim n As Integer<br />

Dim sump As Double<br />

sump = 0<br />

n = R.EntireColumn.Count ’cantidad de notas en el rango<br />

For Each x In R ’suma de las notas<br />

sump = sump + x<br />

Next x<br />

Sume = sump / n ’promedio simple<br />

End Function<br />

En primera celda de la columna Promedio, llamamos a la macro con: PROMEDIO(C52:G52) pues en este caso el<br />

rango es C52:G52.<br />

Ejemplo 5<br />

El Promedio eliminando las dos notas más bajas. En este caso, a un conjunto de notas les calculamos el<br />

promedio simple pero eliminando las dos notas más bajas. El programa PromedioQ suma las n notas de una<br />

fila (rango), localiza la posición (en el vector R) de las dos notas más bajas y luego le resta a la suma estas dos<br />

notas <strong>para</strong> luego dividir entre n − 2. En este caso, el rango R es una matriz 1 × n, o sea, se puede ver como un<br />

vector de n componentes.<br />

Function PromedioQ(R As Range) As Double<br />

Dim n, i, Imin1, Imin2 As Integer

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!