EXCEL - Aplicaciones de Software Minero
-
Upload
felipevidalibarra -
Category
Documents
-
view
19 -
download
0
description
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