funcion sumar.si en una macro

Anuncio
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
EJEMPLOS DE MACROS
OMAR ALBEIRO CARMONA SOSA
CC.Nro. 71172622 DE CISNEROS ANT.
APRENDIZ TECNICO EN SISTEMAS FICHA Nro. 299550
INSTRUCTOR:
JHON JAIRO ALBA NORIEGA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
CISNEROS – ANTIOQUIA
AÑO: 2012
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
TABLA DE CONTENIDO
INSERTAR UNA FUNCIÓN CON MACROS....................................................................................... 3
FUNCION SUMAR.SI EN UNA MACRO ........................................................................................... 5
NUEVA FUNCIÓN SUMAR.SI.CONJUNTO ...................................................................................... 6
FUNCION ENCONTRAR ................................................................................................................ 10
SUMAR VALORES EN NEGRITA EN EXCEL. ................................................................................... 13
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
INSERTAR UNA FUNCIÓN CON MACROS.
Para insertar una función en una macro realizamos el siguiente proceso:
Si tengo la formula ActiveCell.Formula = "=SUBTOTAL(9,I3,I500)" , resulta que quiero cambiar
en el valor I500 , el 500 por el valor que traiga una variable, (I&variable) si variable tiene el
valor de 501, quedaría I501, me funciona en los rangos la siguiente formula Range("A" &
variable).Select, pero en la anterior formula no he podido cambiar el 500 por el valor de una
variable....
Efectivamente es posible incluir funciones o fórmulas en nuestras hojas de cálculo, a través de
una macro, de esta manera tan directa. Lo único que hacemos realmente es determinar que
queremos que se escriba en la celda deseada; todo lo que vaya entrecomillado se añadirá
simplemente en esa celda elegida.
Si tenemos claro esta clave, será fácil hacer el procedimiento.
ActiveCell.Formula = "=SUBTOTAL(9,I3:I" & variable & ")"
Desarrollémoslo con un ejemplo muy sencillo. Disponemos en nuestra hoja de cálculo de un
listado de importes en el rango A1:A11, aunque sabemos que éste variará según crezca
nuestra base de datos. Queremos conocer en cada momento cuál es la suma del rango vivo
con el que trabajamos, en la celda C1.
Nuestros valores actuales:
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
el código VBA de nuestra macro:
'macro que calcula la suma de todas las entradas de datos para
el rango vivo A1:A??.
Sub introducir_formula()
'con UsedRange determinamos el rango empleado actual en nuestra
hoja de calculo.
'con .Rows.Count conocemos el total de filas del rango.
ultfil = ActiveSheet.UsedRange.Rows.Count
'¡¡cuidado ya que las funciones incluidas deben ir en Inglés!!
Range("C1").Formula = "=SUM(A2:A" & ultfil & ")"
End Sub
'macro que calcula la suma de todas las entradas de datos para el rango vivo A1:A??.
Sub introducir_formula()
'con UsedRange determinamos el rango empleado actual en nuestra hoja de calculo.
'con .Rows.Count conocemos el total de filas del rango.
ultfil = ActiveSheet.UsedRange.Rows.Count
'¡¡cuidado ya que las funciones incluidas deben ir en Inglés!!
Range("C1").Formula = "=SUM(A2:A" & ultfil & ")"
End Sub
Muy importante, no olvidar que las funciones empleadas dentro de este código deben
aparecer escritas como en su versión en inglés!!!; ya que si no nos devolvería un error de
#¿NOMBRE?.
Al emplear, en este caso .UsedRange nos debemos asegurar que no existe ningún otro valor de
en la hoja de cálculo, además de los necesarios para la suma. Si fuera así, tendríamos que
emplear alguna otra instrucción o variable para determinar cual es la última celda de nuestro
rango.
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
FUNCION SUMAR.SI EN UNA MACRO
La función SUMAR.SI permite sumar valores de un rango de acuerdo a un criterio o condición.
La función SUMAR.SI tiene 3 parámetros:
1. El primero es la referencia o el rango que contiene los valore sobre los que se evaluará
la condición.
2. El segundo es el que contiene el criterio a aplicar con el objeto de determinar que se
suma y que no
3. El tercero es opcional, esto quiere decir que si la condición esta en el mismo rango
donde se efectúa la suma, no hace falta el tercer parámetro, pero si el criterio esta en
un rango y donde se hace la suma en otro (u otros )rangos, entonces tiene que
colocarse el tercer parámetro.
Para aclarar las cosas que mejor que un ejemplo: Supongamos que una inmobiliaria tiene un
listado con el valor de las propiedades que se vendieron en Enero y quiere saber la suma de
aquellas que superaron los $160.000, para obtener la respuesta se emplea la función
SUMAR.SI como se muestra en el gráfico
En este caso con dos parámetros alcanza puesto que el criterio esta en la rango E2:E5, que el
mismo rango donde se efectúa la suma con la condición dada y no hace falta poner
=SUMA(E2:E5;">160000";E2:E5)...Si en cambio tenemos esta otra tabla
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
Aquí si hace falta el tercer parámetro ya que el rango donde se efectúa el criterio (D2:D5) no es
el mismo que el rango donde se efectúa la suma (E2:E5).
NUEVA FUNCIÓN SUMAR.SI.CONJUNTO
La función =SUMAR.SI.CONJUNTO que permite una suma condicional en base a varios criterios.
Es similar a la función SUMAR.SI, pero en el caso de la nueva función se pueden utilizar hasta
127 nuevos criterios simultáneamente.
=SUMAR.SI.CONJUNTO(rango_suma; rango_criterios1; criterios1; [rango_criterios2; criterios2];
…)
El orden de los argumentos no es similar al de la función SUMAR.SI, por lo que se ha de tener
cuidado si se reutiliza la fórmula antigua para introducir nuevos criterios.
Veamos un caso práctico donde pretendemos determinar el importe comprometido en avales
en el día de hoy. Disponemos de 25 proyectos de inversión o de ejecución de obra. Por cada
proyecto pueden existir tres tipos de avales (A, B y C), y por cada uno de ellos existe una fecha
de inicio, una fecha de finalización del aval y su importe. Puesto que cada día varía la fecha
actual, se ha de recalcular diariamente.
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
La fórmula aplicada en I4 es:
=SUMAR.SI.CONJUNTO(E14:E38;C14:C38;"<="&B8;D14:D38;">="&B8)
Contestaré hoy a una petición curiosa que me ha llegado a través del mail. Un usuario quería
que en una tabla definida en un rango concreto (A2:C5) se fueran acumulando cantidades
según introducía entradas de datos:
...Quiero que en cada fila de concepto, pueda meter una cantidad y que se sume en
acumulado, luego, en una 2ª entrada meter en otra cantidad y que acumule la de la 1ª entrada
y la de la 2ª y así sucesivamente. Y todo esto que se pueda hacer en cada fila de conceptos.
Como puedes ver en el siguiente ejemplo en la fila leche en la primera entrada meto 20 y
acumula 20. En la segunda entrada en la misma casilla borro 20 y meto 30 y en acumulado
debe quedar 50. En la tercera entrada en el concepto leche, en la misma casilla borro 30 y
meto 40, acumulándose en la misma fila de acumulado 90. Así con el resto de filas: pan,
tomate...
Entrada 1
Concepto cantidad acumulado
Leche 20 20
Pan 10 10
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
Tomate 40 40
Entrada 2
Concepto cantidad acumulado
Leche 30 50
Pan 15 25
Tomate 25 65
Entrada 3
Concepto cantidad acumulado
Leche 40 90
Pan 25 50
Tomate 5 70
Veamos cuál es la plantilla sobre la que volcaremos nuestra programación:
La idea es que cada vez que el usuario introduzca los nuevos valores para la Leche, Pan y
Tomate, podamos ejecutar nuestra macro, para que automáticamente genere la suma
acumulada de esta entrada con todas las anteriores.
Para ello he construido una macro muy sencilla, que ejecutaremos tras la introducción de los
nuevos datos para los distintos conceptos de cada entrada.
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
Abrimos el Editor de VBA (Alt+F11) e insertamos un nuevo Módulo, en el cuál incluiremos el
siguiente código:
'macro que calcula el acumulado de todas las entradas de datos.
Sub acumular()
Dim iAs Integer
x=1
For i = 3 to 5
'realiza la suma acumulada del valor anterior mas el nuevo
'para cada concepto (Leche, Pan, Tomate).
Cells(i, 3).Formula = Cells(i, 3).Value + Cells(i, 2).Value
'limpia los campos para poder introducir los nuevos valores
'para cada concepto (Leche, Pan, Tomate).
Cells(i, 2).ClearContents
Next i
'Da formato personalizado, añadiendo el texto Entrada
Range("A1").NumberFormat = """Entrada ""0"
'genera un autonumérico en la celda A1
'que nos indicará qué entrada es la última introducida.
Range("A1").Value = Range("A1").Value + x
End Sub
Para ejecutar de manera cómoda nuestra macro, la asignaremos a un botón.
Al ejecutar nuestra macro acumular conseguimos identificar la última entrada editada (celda
A1), así como el último valor acumulado (rango C3:C5).
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
Tras 5 entradas de valores hemos obtenido un acumulado de Leche 50, Pan 100 y Tomate 150,
quedando lista la tabla para la edición de los valores de la siguiente entrada.
FUNCION ENCONTRAR
La función ENCONTRAR la puedes hallar dentro del grupo de las funciones de Texto como se ve
en la imagen anexa:
Importante tener en cuenta para su consideración:
ENCONTRAR se utiliza con idiomas que emplean un conjunto de caracteres de un byte (SBCS)
(SBCS) Single Byte Character Set: se utiliza para referirse a conjuntos de caracteres que utilizan
exactamente un byte por cada carácter gráfico.
ENCONTRAR siempre cuenta cada carácter como 1, ya sea de un byte o de doble byte,
independientemente de la configuración predeterminada de idioma.
En la imagen anexa se encuentra en detalle la sintaxis de la función ENCONTRAR:
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
Texto_buscado: se refiere al texto que se desea encontrar.
Dentro_del_texto: es el texto que a su vez contiene el texto que desea encontrar.
Núm_inicial: especifica el carácter a partir del cual comenzará la búsqueda. El primer carácter
de dentro_del_texto es el carácter número 1. Si omite núm_inicial, se supone que es 1.
Importante para su consideración
Las función ENCONTRAR distingue entre mayúsculas y minúsculas y no permiten el uso de
caracteres comodín.
Texto_buscado no puede contener ningún carácter comodín.
Si texto_buscado no aparece en dentro_del_texto, ENCONTRAR devuelve el valor de error
#¡VALOR!.
Si núm_inicial no es mayor que cero, ENCONTRAR devuelve el valor de error #¡VALOR!.
Si núm_inicial es mayor que la longitud de dentro_del_texto, ENCONTRAR y devuelve valor de
error #¡VALOR!.
Para que tengan un mejor entendimiento de la función ENCONTRAR planteamos el siguiente
ejemplo:
Supongamos que tenemos agrupados un cierto número de datos en una tabla y queremos
encontrar la posición de un carácter en especifico dentro de una celda, los caracteres a
encontrar son los siguientes: “ ; ”, “ , ”, “ . ”, “ / “, “ < “, “ ‘ “ , en la siguiente imagen anexa se
detalla la tabla de datos donde se van a encontrar los datos:
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
En este caso como se observa en la imagen la sintaxis de la función quedaría de la siguiente
manera:
=ENCONTRAR(C11;B11;1)
C11: Corresponde al texto buscado que en este caso es el carácter.
B11: Corresponde a la celda donde se está buscando el texto a encontrar.
1: Corresponde al carácter a partir del cual comenzará la búsqueda.
El resultado obtenido para este caso es 16 ya que esa es la posición en donde se encuentra el
carácter.
Cuando se ejecuta la función para todos los caracteres a encontrar en efecto se obtienen los
resultados requeridos.
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
La función ENCONTRAR puede ser anidada con otras funciones de Excel esto va a depender de
los resultados que ustedes requieran, no duden en practicar y utilizar esta función en casos en
que lo amerite.
SUMAR VALORES EN NEGRITA EN EXCEL.
En la entrada de hoy veremos cómo realizar la misma operación empleando las
macrofunciones de Excel 4.0 o funciones GET. (INDICAR.). Para esta labor utilizaremos la
función:
=INDICAR.CELDA(58;celda)
que nos indica el tipo de estilo de la fuente de la celda seleccionada.
Partimos del siguiente rango de celdas, donde tenemos algunos valores en negrita:
Para poder trabajar con estas macrofunciones de Excel4.0 deberemos Crear un nombre
definido, que llamaremos rngnegrita:
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
Si aplicamos esta macrofunción a nuestros elementos del rango A2:A11 obtendríamos
Ya sólo nos quedaría trabajar sobre el conjunto de datos obtenidos mediante una función
SUMAR.SI o bien sobre una suma condicional matricial:
OMAR ALBEIRO CARMONA SOSA
COMPLEJO TECNOLOGICO MINERO AGROEMPRESARIAL
OMAR ALBEIRO CARMONA SOSA
Descargar