Otro ejemplo del objeto Rango

Hemos dicho que, la referencia a las celdas y rango de celdas, se puede realizar de dos maneras:

Celda D5: Range(“D5”)

Celda D5: Cells(5,4)

La primera no es cómoda para el manejo de celdas variables. La segunda resuelve dicho problema y le de el carácter de matriz bidimensional a una hoja de cálculo.

Por ejemplo: Si quisiéramos escribir un procedimiento para sumar un rango de 20 celdas: D7:D26, usar Range() no tiene sentido. El uso de Cells(i,j) sí se presta para ello:


Stot = 0
For I = 1 To 20
Stot = Stot + Cells(i+6,4)
Next

De manera que, en lo sucesivo, en donde podamos hacer referencia a celdas o rango de celdas con Cells, lo haremos.

Primer Ejemplo:

En este ejemplo vamos a ingresar un conjunto de datos numéricos y luego vamos a obtener su suma de tres maneras:

- Mediante una suma directa como el manejo de variables, en cuyo caso no hay fórmulas
- Mediante la técnica del uso de fórmulas: Celda = “=expresion”
- Mediante la técnica del uso de celdas RC
 

Abra su libro de macros MisMacros03.xlsm; si no lo tiene, haga clic aquí

Luego vaya al editor, abra el módulo ModRango y digite a la derecha y al final, el procedimiento que daremos a continuación.

El procedimiento contiene los comentarios necesarios en cada paso.


Sub Rango03()
' Usaremos las hojas del libro activo (MisMacros03.xlsm)
' Vamos a insertar dos hojas
Worksheets.Add
Sheets.Add
' Seleccionemos la hoja 1
Sheets("Hoja1").Select
' Vamos a ingresar 12 datos numéricos en la columna C, a partir de la fila 5
'
For J = 1 To 10
Cells(J + 4, 3) = Val(InputBox("Ingrese el dato numérico"))
Next
'
' Ahora vamos a sumar de tres maneras
' Usando Cells, Sum y usando R[]C[].
' El resultado lo dejaremos en C15, C16 y C17, respectivamente
' Usando Cells
S = 0
For I = 1 To 10
S = S + Cells(I + 4, 3)
Next
Cells(15, 3) = S
'
' Usando Sum
Cells(16, 3) = "=Sum(C5:C14)"
'
' Usando R[]C[]
Range("C17") = "=Sum(R[-12]C:R[-3]C)"

End Sub

En el siguiente procedimiento haremos usa del Copy – Paste pero cuando se trate de ciertas series que maneja el Excel como meses, días, etc.

Aquí también generaremos datos numéricos de forma aleatoria para no perder el tiempo de ingresarlos desde el teclado.


He aquí el procedimiento:

Sub Rango04()
' Ahora vamos a ingresar las ventas mensules de un cierto producto
' En los 12 meses del año 2015
' Para ello usaremos la "suma" de ciertas series que maneja el Excel
'
' Ingresamos los encabezamientos a partir de A2
Range("A2") = "VENTAS Y PROYECCIÓN MENSUALDE ARROZ EN EL NORTE (TM)"
Range("A3") = "MES"
Range("B3") = "Año2015"
Range("A4") = "Enero"
Range("A4").Select
Selection.AutoFill Destination:=Range("A4:A15")

' Ahora vamos a simular las ventas
' En lugar de ingresarlas por teclado, vamos a generarlas aleatoriamente
Range("B4").Select

Range("B4") = "=RandBetween(1200,4500)"
ActiveCell.Copy
Range("B4:B15").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A2").Select
'
' Ahora vamos a proyectar las ventas en 8% cada año hasta el 2018
'
' Primero copiamos los años como cabecera
Range("B3").Select
Selection.AutoFill Destination:=Range("B3:E3")
'
' Seleccionamos los datos del 2015 y lo copiamos
Range("B4:B15").Copy
' Pegamos en el rango B4:E15
Range("B4:E15").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("F2").Select

End Sub

En la siguiente imagen se tiene una parte de esteprocedimiento.

Guarde su libro MisMacros03.xlsm. En la siguiente sesión haremos uso de otros ejemplos con el objeto RANGO

haga clic aquí