EXCEL - Aplicaciones de Software Minero

Post on 02-Feb-2016

19 views 0 download

description

introducción a las aplicaciones de excel, desde nivel básico a intermedio, incluyendo aplicaciones macro.

Transcript of EXCEL - Aplicaciones de Software Minero

APLICACIONES DE SOFTWARE MINERO: Aplicaciones en Excel

SEBASTIAN CASTILLO

Que es Excel?Para que sirve?

Cuando ocupar Excel?Que puedo hacer con Excel?

Que NO puedo hacer con Excel?Que elementos puedo utilizar para

solucionar problemas en Excel?

Vista de Excel

Ingresar una fórmula

Fórmulas

• Operaciones matemáticas simples(+,-,*,/)• Números negativos?• Cálculo de las raíces de una ecuación de segundo grado?• Cálculo de distancia entre dos puntos en tres dimensiones?• Cálculo de media, desviación estándar y otras estadísticas?• Regresión Lineal?• Operaciones con matrices?• Cálculo de probabilidades(Normal, Binomial, Exponencial, Poisson,

Etc?

ABURRIDO?Seeeee

Algunas situaciones

• Podemos “arrastrar” una fórmula un número determinado de filas o columnas?

• Podemos decidir el valor de una celda, dado un determinado valor en otra celda?

• Que ocurre cuando hay varias condiciones que debemos tomar en cuenta?

Ejercicios

• Elabore una hoja de cálculo que permita obtener el promedio de 3 notas de un curso.

• De acuerdo al promedio de notas del ejercicio anterior, determine lo siguiente– Nota < 3.0 -> Reprobado (ROJO)– Nota >= 3.0 y Nota < 5.0 -> Examen (MORADO)– Nota >= 5.0 -> Aprobado (AZUL)Aplique formato condicional para cada nota.

Funciones útiles de Excel• Sumaproducto• Contar.si.conjunto• Sumar.si.conjunto• Indice• Coincidir• Buscarv• Si• Y• O• Entre MUCHAS otras

Megafórmulas

Situaciones mas complejas

• Cómo podemos tomar una decisión en base al color de una celda?

• Cómo podríamos poner un borde a la celda automáticamente dada una condición?

• Qué ocurre cuando tenemos un número no definido de datos?

• Que tal si queremos poner bordes a las celdas de un número no definido de datos

• Que tal si tenemos que hacer la misma tarea 200 veces con miles de datos

Situaciones mas complejas

• Que pasaría si se dieran todas las situaciones anteriores a la vez en el mismo problema…?

• Podemos solucionar todos estos problemas de una forma manual, pero… cuanto tiempo le tomará?

Macros

• Excel es un programa que tiene un gran potencial, pero la mayoría de la gente lo maneja de una forma muy simple, utilizando solo opciones básicas, pero hay algo muy importante que tengo que decirles. Excel cuenta con un lenguaje muy poderoso llamado Visual Basic(VBA), este es solo una parte del lenguaje, pero permite hacer o resolver los problemas mas fácilmente, solo debemos aprender a programarlo y para eso es este curso, podría la gente decir que este curso es un nivel muy alto de Excel y quizás si lo sea, pero es fácil de aprender ya que se manejaran términos sencillos. La programación que emplea en este curso o las estructuras que aparecen son creadas por nosotros mismos. Para manejar la programación de Visual Basic con Excel es necesario tener mucha creatividad, cada persona puede crear estructuras diferentes pero que trabajen igual.

Porqué conviene hacer un programa en Excel

• Excel es un producto altamente programable, y definitivamente es la mejor opción para desarrollar aplicaciones basadas en hojas de cálculo.

• Permite hacer aplicaciones que de otro modo, serías muy tediosas de elaborar.

Una buena aplicación debe contener las siguientes características:

• Esta permite al usuario final desarrollar una tarea que podría no ser capaz de hacer por si solo.

• Provee una solución apropiada al problema• Produce resultados precisos y libre de errores• Utiliza metodos eficientes y apropiados además de algoritmos que

acompañen al trabajo.• Captura los errores antes de que el usuario “pelee” con ellos.• Provee una interfaz clara y consistente que permite al usuario saber

como proceder.• Puede correr en diferentes sistemas que tengan el software

apropiado.• Debe facilitar las modificaciones ya sea en la planilla misma o en el

código escrito por el programador.

Metodología de trabajo

• Determinar las necesidades del usuario• Planificar una habilidad que resuelva las necesidades del usuario• Determinar la interfaz de usuario mas apropiada• Crear las fórmulas, macros e interfaz de usuario• Testear la aplicación bajo un conjunto razonable de condiciones• Hacer la aplicación amigable al usuario (a menudo basado en los

resultados del testeo)• Hacer una aplicación estéticamente agradable e intuitiva• Documentar la aplicación• Distribuir la aplicación a los usuarios• Actualizar la aplicación siempre y cuando sea necesario

Entendiendo VBA• Modelo de objetos

– El secreto para usar VBA radica en el entendimiento del modelo de objetos. Es posible programar una aplicación a través de los objetos que la aplicación utilice.

– El modelo de objetos de VBA, posee varios objetos que permiten realizar los análisis, tales como: Hojas de cálculo, gráficos, tablas dinámicas y un gran conjunto de funciones matemáticas, financieras, de ingeniería, entre otras. Con VBA es posible trabajar con esos objetos y desarrollar procedimientos automatizados. A medida que se trabaja con VBA, gradualmente aumentará el entendimiento del modelo de objetos.

“La práctica hace al maestro”

Aspectos básicos de VBA• Antes de comenzar, es recomendable familiarizarse con

algunos conceptos.– Código: Es básicamente texto, pero que VBA lo interpreta

para desarrollar acciones. Es guardado en un módulo– Módulo: Un módulo VBA es guardado en un archivo Excel.

Se puede visualizar y editar con el editor de VBA. Está compuesto de procedimientos.

Aspectos básicos de VBA– Procedimientos: Es una unidad de código que desarrolla

alguna acción. Existen dos tipos de procedimientos:• SUB: Un Sub consiste en una serie de sentencias que

serán ejecutadas.• Función: Una función es similar a un sub, pero devuelve

un valor, asociado a un tipo de dato

Aspectos básicos de VBA• Objeto Activo: Si se omite una referencia específica a un objeto, Excel

utiliza el “objeto activo”. Ejemplo: Si se desea referir a la celda A1 ubicada en la hoja1 podemos escribir:

Worksheets(“Hoja1”).Range(“A1”)

Pero si sabemos que la hoja1 está activada podemos simplificar el código a

Range(“A1”)

• Propiedades de los objetos: Los objetos tienen propiedades. Por ejemplo el objeto Range, tiene propiedades tales como: Text, Value, Address, etc.

Aspectos básicos de VBA• Variables: Sirven para asignar valores y almacenarlos en la

memoria. Por ejemplo para guardar el valor de la celda A1 de la hoja1 en una variable “a”, podemos escribir:

a = Worksheets(“hoja1”).Range(“A1”).Value• Métodos: Un método es una acción que se puede aplicar a un

objeto, un ejemplo de ellos es el de eliminar el valor de la celda A1.

Range(“A1”).ClearContents• Eventos: Es posible escribir código para que se realice una

acción cuando un determinado evento ocurre: Por ejemplo si cambia el valor de una celda, es posible activar una macro, sin necesidad de ejecutarla manualmente.

Aspectos básicos de VBA• Objetos: Excel posee mas de 100 clases de objetos disponibles para

“manipular”. Ejemplos de objetos son: Excel(en si es un objeto), Libros, Hojas, gráficos, celdas, tablas dinámicas.Los objetos van organizados en una jerarquía, y un objeto puede contener varios tipos de objeto.

• Colecciones: Un conjunto de objetos del mismo tipo forman una colección. Por ejemplo la colección Worksheets representa todo el conjunto de hojas que existan en un libro. Una colección es un objeto.

• Jerarquía de objetos: Para referirse a un objeto en particular debemos respetar la jerarquía existente. Por ejemplo:

Application.Workbooks(“Libro1”).Worksheets(“Hoja1”).Range(“A1”)

Macros en Excel

• Pero vamos a lo que vinimos…

• Active la ficha programador… Heche un vistazo a los elementos disponibles.

• Presione Alt + F11

FUNDAMENTOS DE PROGRAMACION EN VBA

Macros en Excel

• Objetivos de este capítulo– Comprender los elementos del lenguaje, incluyendo

variables, tipos de datos, constantes y arreglos.– Usar funciones predefinidas de VBA– Manipulación de objetos– Controlar la ejecución de sus procedimientos.

Nuestro primer programa• Inserte un módulo y escriba lo siguiente:

• Presione Play o F5

AnálisisDeclara el inicio de un programa

Comentario: Comienza con un apóstrofe ( ‘ ), y VBA no lo considera en la ejecución

Cuadro de mensajes, indicando el mensaje “Hola”

Fin del programa

Todo programa comienza con Sub y termina con End Sub

Variables, tipos de datos y constantes

• Una variables es simplemente un nombre guardado en alguna ubicación de la memoria. Las variables se acomodan a una amplia variedad de tipos de datos.

• Para simplificar el desarrollo de aplicaciones es conveniente usar los nombres de las variables tan descriptivas como sea posible. Sin embargo existen algunas reglas

Variables, tipos de datos y constantes

• Reglas para nombrar variables.1. Se pueden usar caracteres alfabéticos, números y algunos

caracteres de puntuación, per el primer carácter debe ser siempre alfabético.

2. VBA no distingue entre mayúsculas y minúsculas. Para hacer los nombres más legibles los programadores acostumbran a utilizar letras mayúsculas en cada nueva palabra. (Ej: NombreAlumno)

3. No se pueden utilizar espacios, a menudo se utiliza el guión bajo. (Ej: Nombre_Alumno)

4. No se pueden emplear caracteres especiales como #, $, %, &, !5. Los nombres de variables pueden contener hasta 254

caracteres, pero no es muy recomendable utilizar nombres tan largos

Variables, tipos de datos y constantes

• Ejemplos de asignación de valores a variables de varios tipos de datos.

• VBA tiene palabras reservadas (no se pueden declarar como nombres, ya que son de uso interno). El ejemplo siguiente dará un error.

Variables, tipos de datos y constantes

• Tipos de datos admitidos en VBA.

Variables, tipos de datos y constantes

• Las variables se declaran de la siguiente manera:• Dim NombreVariable As Tipo

• Si una variable no es declarada entonces el programa la reconoce como tipo Variant, y de ese modo “sirve” para cualquier tipo de dato, aunque ocupa mas espacio en la memoria. Eso a su vez puede conllevar riesgos en la ejecución. Pero RECUERDE: se sacrifica velocidad en la ejecución.

Variables, tipos de datos y constantes

• Declarar cada variable es un excelente hábito, y le provee de dos beneficios:– Sus programas correrán más rápido y usan la memoria de

una forma mas eficiente.– Se evitan problemas involucrados con variables “mal”

nombradas.• Si utiliza Option Explicit al inicio de cada programa, VBA lo

fuerza a declarar TODAS las variables.

Variables, tipos de datos y constantes

• Alcance de una variable: Determina en donde será utilizado el valor de una variable

Alcance Como se declara la variable

Dentro de un procedimiento Incluye una sentencia Dim o Static dentro del procedimiento

Dentro de un módulo Incluye una sentencia Dim o Private antes del primer procedimiento en un módulo

Todos los módulos Incluye una sentencia Public antes del primer procedimiento en un módulo

Operadores Aritméticos• Suma: +• Resta: -• Multiplicación: *• División: /• Potencia: ^• División entera: \ (Ej: 16\3 = 5)• Resto: Mod (Ej: 4 Mod 3 = 1)

Métodos de entrada y salida de datos• Entradas:

– Inputbox: Cuadro de diálogo– Celdas: Celdas de excel

• Salidas:– MsgBox: Cuadro de diálogo (Mensajes)– Celdas: Celdas de excel

¿Como se utiliza cada uno?… veamos algunos ejemplos

Ejemplos: Operaciones Aritméticas• Ejemplo 1: Dados dos números enteros, hallar la suma

• Escoja la alternativa que más le acomode… esto sólo dependerá de sus necesidades y gustos.

Observe la concatenación (&)

Ejercicios

1. Hallar la suma de tres números enteros.2. Hallar el cociente y el resto de dos números enteros.3. Dado el valor de venta de un producto hallar el valor del impuesto (19%) y el

precio de venta final.4. Hallar la potencia de an Donde a y n sean enteros.(Observe que pasa con el tipo

integer con valores mayores a 32,767, Use el tipo LONG para almacenar el resultado en ese caso)

5. Hallar la raíz enésima de un número, Use el tipo Single o Double.6. Utilizando la división de enteros y el resto, escriba un programa que ingrese un

número de 5 dígitos y lo entregue en orden inverso. (Concatene (&) para obtener el resultado final)

7. Determine la suma de los N primeros números enteros ( S = N*(N+1)/2)

8. Calcule el valor futuro de una inversión C, dada una tasa de interés i%, en n periodos. (VF = C*(1+i)^n)

Ejercicios

9. Cree un programa para calcular el área de un círculo. Investigue como manejar el número pi.

10. Cree un programa que permita convertir una cantidad de segundos a un formato “hh:mm:ss”. (Utilice resto, división de enteros y concatenación).

11. Dado 4 números, obtener el porcentaje de cada uno en función a la suma de los 4 números ingresado.

12. Hallar el área y perímetro de un triángulo.13. Dada una cantidad de horas obtener su equivalente en

minutos y segundos.

Arreglos (Arrays)

Arrays

• Un array es un conjunto de elementos (Cualquiera sea su tipo), que tienen el mismo nombre en común. Por ejemplo “Meses del año”, el cual tendría 12 elementos.

Arrays

• Declarando un Array– Se declara de la misma forma de una variable regular. Pero

también se debe especificar el número de elementos que contendrá el array.

Dim MiArray(5) as Integer

Contiene 6 elementos ya que el primer elemento es MiArray(0), y el último elemento es MiArray(5).

Arrays

• Existen Arrays Multidimensionales y pueden contener hasta 60 dimensiones.

• Ejemplo:

Dim MiArray(1 to 10, 1 to 10) as IntegerDim MiArray(1 to 10, 1 to 10, 1 to 10) as Integer

• Todos los arrays mostrados hasta el momento tienen la característica de ser estáticos, es decir tienen un tamaño fijo.

Arrays

• Arrays Dinámicos: Un Array dinámico no tiene un número prefijado de elementos. Se declara de la siguiente forma.

Dim MiArray() as Integer

• Antes de poder utilizar el array dinámico sin embargo debemos usar la sentencia ReDim, para indicarle a VBA cuantos elementos contendrá finalmente el array.

Redim MiArray(n)

Arrays Ejemplo• Cree un Programa que tome tres valores del rango A1:C1, y en

el rango A2:C2, ponga los valores multiplicados por un factor X

Variables Objeto

Variables Objeto• Una Variable Objeto es una variable que representa un objeto, tal como

un rango o una hoja. Son importantes por dos razones:– Simplifican el código significativamente, haciéndolo más legible.– El código puede ejecutarse más rápido.

• Las variables objeto se declaran tal como las variables normales. Por ejemplo

Dim InputArea as Range

• Utilice la sentencia Set para poder asignar el rango a la variable.

Set InputArea = Range(“C16:E16”)

Variables Objeto• Para ver como las variables objetos simplifica el código,

veamos un ejemplo

Observe que MyCell reemplaza a Worksheets(“Sheet1”).Range(“A1”)

Funciones de VBA

Funciones de VBA

• VBA tiene una variedad de funciones propias del lenguaje que simplifica los cálculos y operaciones. Muchas funciones de VBA son similares ( o idénticas ) a las de excel. Por ejemplo la función de VBA Ucase, es similar a la función MAYUSC de excel, la cual convierte una cadena de texto a mayúsculas.

Funciones de VBA

• Ejemplo de función interna de VBA

• En este caso se muestra el uso de la función Sqr que es similar a la función RAIZ de Excel. El resultado se muestra a través de un cuadro de mensajes.

Funciones de VBA

• Se pueden utilizar muchas (no todas) de las funciones de Excel en el código VBA. El objeto WorksheetFunction almacena todas las funciones disponibles para poder utilizar. Se debe utilizar la siguiente sentencia para llamar a las funciones de excel.

Application.WorksheetFunction

Funciones de VBA: MSGBOX

La función MsgBox:• No sólo es un cuadro de diálogo, si no que también nos puede

devolver un valor de tipo String, para poder realizar alguna consulta al usuario.

• Más adelante veremos aplicaciones sobre este tema.

Manipulando Objetos y Colecciones

Manipulando Objetos y Colecciones

• Existen formas eficientes de escribir el código para poder manipular objetos y colecciones. VBA nos ofrece dos construcciones que simplifican ese trabajo:

With – End With For Each - Next

With – End With• Permite ejecutar múltiples acciones sobre un objeto.

• Ambas alternativas ejecutan la misma acción, la segunda es más legible que la primera y se ejecuta más rápido.

For Each - Next• Recuerde el concepto de colección• Suponga que desea desarrollar una acción en todos los

objetos de una colección bajo ciertas condiciones. Esa es la ocasión perfecta para esta construcción, porque no debe saber cuantos objetos existen en una colección ya que el bucle ejecutará la acción sobre todos los objetos.

• Los objetos pueden ser, celdas, hojas, gráficos, etc.

For Each - Next• La siguiente macro, muestra todos los nombres de las hojas

existentes en el libro activo.

Controlando la ejecución del código• Algunos procedimientos en VBA se ejecutan linea por linea de

inicio a fin y completan una determinada tarea que queremos realizar… Sin embargo, a menudo se necesita controlar el flujo de tus rutinas, ya sea para testear alguna condición o ejecutar alguna sentencia en múltiples ocasiones.

Controlando la ejecución del código• En está sección veremos las siguientes estructuras de control

del código: If – Then – Else Select – Case For – NextDo – WhileDo – Until

If – Then - Else• Quizás el tipo mas utilizado, está especialmente diseñado

para tomar decisiones. Un programa que toma decisiones de seguro nos aliviana la tarea a realizar.

• Sintaxis Básica: Permite evaluar una condicion y ejecutar una acción en una sola línea de código

• Sintaxis mas utilizada: Básicamente lo mismo que la sintaxis básica, pero se pueden realizar múltiples acciones dependiendo de una condición

If – Then - Else• Sintaxis generalizada: Permite evaluar tantas condiciones

como se desee con sus consiguientes acciones a realizar.

If – Then – Else: Ejemplos• Macro que evalúa la hora del día y dice Buenos Días.

If – Then – Else: Ejemplos• Una versión mas completa sería la siguiente:

If – Then – Else: Ejemplos• Ahora si quisiéramos indicar al usuario las frases, Buenos Días,

Buenas Tardes y Buenas Noches tenemos las siguientes alternativas.

La función VBA IIF• Trabaja de forma similar a la función “Si” de excel.• Sintaxis:

IIf(Condicion, Valor si condicion = true, Valor si condicion = False)

• Ejemplo: Función que evalúa si la celda A1 contiene valor cero o no.

• Es importante tener en cuenta que el tercer argumento SIEMPRE se evalúa

IF – THEN – ELSE: Ejercicios1. Determinar si un número es positivo, negativo o neutro2. Dado un caracter determinar si es una vocal (Utilice el

comando “Or” (si es “a” Or “A”))3. Determinar si un número es múltiplo de 3 y de 5 a la vez.4. Determinar si un numero es par o impar5. Dados tres números, devolver el mayor.6. Dado un numero, devolver el doble si el número no es par,

caso contrario el triple.

IF – THEN – ELSE: Ejercicios• Un restaurant desea aplicar descuento dado un cierto nivel de

consumo con las siguientes condiciones.

Consumo DescuentoHasta $ 10.000 10%Hasta $ 20.000 20%Hasta $ 30.000 30%

Mayor 40%

IF – THEN – ELSE: Ejercicios• Elabore una macro que permita decidir si un bloque es

mineral (Ley > 0.5), lastre (Ley < 0.4) o marginal (entre 0.4 y 0.5), y además indique su destino según corresponda (Planta, Botadero, Stock). Utilice “And” para evaluar si el bloque es marginal (ley < 0.5 And ley > 0.4).

SELECT - CASE• La instrucción Select Case es útil cuando deseamos escoger

entre 3 o mas opciones, es una buena alternativa al uso de If – Then – Else. La Sintaxis es la siguiente.

SELECT – CASE: Ejemplos• Alternativa al caso del saludo visto con If

SELECT – CASE: Ejemplos• Detectando un día de semana o fin de semana

SELECT – CASE: Ejemplos• Estimando el valor de descuento de acuerdo a una cierta

cantidad:

SELECT – CASE: Ejemplos• Esta estructura también puede ser anidada, observe el siguiente ejemplo:

Se utiliza la función de VBA TypeName para determinar si se está seleccionando un rango (1 celda o más de una) o no ha nada seleccionado, o si se está seleccionando otro objeto.

SELECT – CASE: Ejercicios1. Elabore una macro que permita decidir si un bloque es

mineral (Ley > 0.5), lastre (Ley < 0.4) o marginal (entre 0.4 y 0.5), y además indique su destino según corresponda (Planta, Botadero, Stock).

2. De acuerdo al índice RDQ indique la calidad del testigo.

RQD Calidad de la roca

<25% muy pobre25-50% pobre50-75% normal75-90% bueno

90-100% muy bueno

SELECT – CASE: Ejercicios• Haga un programa que de acuerdo a la calidad de un

determinado producto señale el precio de venta.

• Sugerencia: Desarrolle una estructura anidada.

Calidad

1 2 3

Producto

1 5000 4500 4000

2 4500 4000 3500

3 4000 3500 3000

Estructuras Repetitivas - Loops

LOOPS• Un Loop es el proceso de repetir

un bloque de instrucciones. Puede tener dos opciones:

– Se conoce el número de repeticiones a priori.

– El número de repeticiones viene dado por una condición.

FOR - NEXT• Es el tipo más simple de

loop. Su sintaxis es la siguiente:

FOR – NEXT: Ejemplos• El siguiente ejemplo suma las raíces cuadradas de los

primeros 100 enteros:

Analice el mecanismo de esta instrucción

FOR – NEXT: Ejemplos• Es posible incorporar una instrucción STEP, para poder realizar

un “Salto” en el contador. El siguiente ejemplo elimina las 5 primeras filas pares:

Note que se utiliza un valor negativo… Pruebe poniendo un valor positivo, y encuentre la razón de porqué no funciona.

FOR – NEXT: Ejemplos• La siguiente macro encuentra el valor máximo en la columna A, Cuando el

programa encuentra el valor máximo se termina el loop, con el uso de Exit For:

Esta forma es más eficiente.

FOR – NEXT: Ejemplo• Observe el siguiente ejemplo, en el que se emplea una

estructura for – next anidada.

• En este ejemplo cada uno de los 1000 elementos del array contienen el valor -1.

FOR – NEXT: Ejercicios• Obtener la cantidad de los N primeros múltiplos de 5.• Calcular la suma y el producto de los N primeros números

naturales múltiplos de 3.• Dado una base de datos de 100 leyes, indicar para cada bloque

si es mineral lastre o marginal, dados ciertos rangos.

• RESOLVER EN CLASE: Elabore una base de datos para un modelo de bloques bidimensional, Los bloques deben contener iguales dimensiones y deben tener una ley asignada. La primera columna debe corresponder a la coordenada X, la segunda a la Y, la tercera a la ley. Represente dichos datos bidimensionalmente.

Do While• Este es otro tipo de estructura de loop disponible en VBA. A

diferencia de la estructura For – Next, Do While ejecuta un conjunto de acciones hasta que una condición es conocida.

En este caso la condición se evalúa al INICIO del Bucle

En este caso la condición se evalúa al FINAL del Bucle

Do While: Ejemplos• Si deseamos seleccionar la primera celda vacia en la columna

de la celda activa podríamos utilizar la siguiente macro.

Do While: Ejemplos• Este es un ejemplo en el cual se prueba la condición al

comienzo del loop. Se busca un valor mayor a 1.5 en la columna B. Note que lo hace hasta que encuentra la primera celda vacía, una vez encontrada termina el Loop. En el caso de encontrar un valor mayor que 1.5, con la sentencia Exit Do, termina el Loop.

Do While: Ejemplos• El siguiente procedimiento escribe las fechas del mes actual

en una columna comenzando desde la celda activa.

Do While: Ejemplos• El mismo ejemplo anterior pero ahora la condición se evalúa

al final del loop.

Do While: Ejemplos• Un ejemplo bastante útil se encuentra en la lectura de

archivos de texto, cuyos datos pueden ser almacenados en las celdas, observe el siguiente ejemplo.

El archivo debe estar almacenado en una ubicación fija. A través del método GetOpenFileName, podemos hacer variable la ubicación de los archivos.

While – loop: Ejercicios:• Dado 2 números diga si son amigos. Dos numeros son amigos

si la suma de los divisores de uno es igual al otro y viceversa. Por ejemplo 220 y 284 son amigos:

– Divisores de 220 son: 1+2+4+5+10+11+20+22+44+55+110 = 284

– Divisores de 284 son: 1+2+4+71+142 = 220

Una última herramienta.• La grabadora de macros.

• Nos sirve para grabar cualquier operación que realicemos, esta herramienta generará el código requerido, pero es un código que muchas veces es excesivo, por lo que debe ser tratada con cuidado.

• Cuando nos enfrentemos a la situación de desconocer un determinado código, podremos utilizar la grabadora de macros para poder obtener el código deseado.

• Pruébela!!

Resumen• Hasta ahora hemos visto las principales herramientas que nos aporta VBA para

poder realizar aplicaciones basadas en hojas de cálculo. • Es importante practicar, ya que de ese modo tendremos la soltura necesaria

para poder realizar tareas complejas.• Tenga en cuenta que estos contenidos tienen un carácter básico. VBA tiene un

conjunto mucho mayor de elementos de lo que hemos visto, algunos de los cuales veremos a medida que avanza el curso.

• Con estos elementos a mano y otros que iremos viendo en el camino comenzaremos a realizar tareas aplicadas a nuestra especialidad, la ingeniería de minas.

Si aprovechamos bien estas herramientas podríamos crear aplicaciones que serían o imposibles o muy tediosas de realizar en condiciones normales.

Leer un archivo de texto• Una herramienta importante es el hecho que podemos leer

archivos de texto que contengan valores separados por comas o por espacios.

• Los modelos de bloques vienen generalmente en archivos de valores separados por comas, espacios o tabulaciones.

Desarrollar ejercicio en clases

Ejercicio• Cree un archivo de valores separados por comas. Que tenga 4

filas y 3 columnas de números.• Esta macro lee los datos del archivo y los almacena en una

matriz de 4 x 3.

Funciones en VBA

Funciones en VBA• Una función es un procedimiento VBA que desarrolla cálculos

y devuelve un valor.• Las funciones usualmente retornan un solo valor (o un array),

tal como las funciones incluidas en Excel.• Las funciones son bastante versátiles y se pueden utilizar en

dos situaciones– Como parte de una expresión en un procedimiento VBA– En fórmulas para una planilla,

Funciones en VBA• A menudo se pueden crear funciones personalizadas que

pueden simplificar enormemente las fórmulas.• Cuando se crean aplicaciones, podemos notar que algunos

procedimientos repiten ciertos cálculos, en tales casos, es bueno considerar crear una función personalizada que desarrolle esos cálculos.

• Una función personalizada puede eliminar la necesidad de repetir varias veces un código.

Funciones: Ejemplos• Si deseamos sumar dos valores contenidos en dos celdas

diferentes podemos crear una función tal como la que se muestra a continuación:

• Utilice esta función en una planilla

Funciones: Ejemplos• A continuación se muestra una función que permite eliminar

las vocales de un texto.• Utilice esta función en una planilla.

Funciones: Ejemplos• Funciones sin argumento:

Funciones: Ejemplos• Suponga que desea leer un modelo de bloques que viene en

formato de archivo de texto con valores separados por comas. Se puede crear una función que sea capaz de separar cada dato de una misma línea. De ese modo podemos leer un modelo de bloques que tenga un número de columnas variable.

• Observe el siguiente ejemplo.

• Pruebe esta función paso a paso (F8) para comprobar como funciona

• Ahora creemos un tipo de dato que me permita manejar de una manera mas entendible dicho modelo (ya se conocen las variables del modelo subido al ambiente aprendizaje)

Funciones: Ejemplos

Lectura del modelo de bloques con la función extrae.

Funciones: Ejemplos

Funciones Ejercicios• Elabore una función que permita realizar la valorización de los bloques. Utilice la ley de corte

marginal para poder realizar la distinción entre Lastre y Mineral.• Asuma que los todos los bloques tienen el mismo tamaño por lo tanto tienen el mismo

volumen y que el costo mina para el lastre y mineral son diferentes.• Valor(mineral) = ton * (PCu * 2204 - cfr) * ley / 100 * RPlanta * RRefineria - (mmin + c) * ton• Valor(lastre) = ValorBloque = -mest * ton

Observe las unidades

Solución• Una solución al problema podría ser la siguiente:

Solución

Suponiendo que los valores se encuentran en estas celdas. En una hoja llamada Valorizacion