miércoles, 29 de febrero de 2012

Macro Escrita

En esta ocasion vamos a ver otro tipo de programacion de excel...

En el cual usaremos las llamadas "macros" .

para crear una macro en excel tenemos 2 formas de hacerlo la primera es desde un acceso rapido en la parte baja de nuestra hoja. en cual le damos click y con mucho cuidado realizamos lo que queremos grabar y detener nuestra macro.
Y la otra forma que existe de grabar una macro es presionando las teclas "alt + f11" y escribirla con codigos.

Esto de la macro escrita puede ser un poco larga pero con esto tenemos la posibilidad de escribir solo que necesitamos que haga nuestra macro y evitarnos todos los codigos que nos agrega excel a la hora de hacerla del modo sencillo.

para este ejemplo usaremos un simple formato para que sepan algunos de los codigos que usan para que excel por medio de codigos visual basic haga lo que nosotros queremos.

este sera nuestro modelo:

Para escribir los codigos que se usan para crear esta macro y para que funcione vamos a presionar las teclas "alt + f11" 





Los codigo para hacer que nuestra macro funcione son:
para crear nuestro encabezado:
Sub macroprueba( )
Range("a1").Select
ActiveCell.FormulaR1C1 = "NO."
Selection.Font.Bold = True
 With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 49407
 End With 
Con este codigo creamos esta pequena celda con lo que tiene escrito y el color que ven.
para crear las demas usamos el mismo codigo solamente que el lugar de escribir "NO." escribimos lo que necesitamos que es 
  • nombre
  • sueldo
  • bonificacion
  • sueldo total
Y en lugar de escribir en range "a1" escribiremos "b1" y seguiremos asi hasta haber escrito los campos en listados arriba.
(al ejecutar) en nuestra hoja de excel algo asi:


para el siguiente paso necesitamos este codigo: 
 Range("A1:E1").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    Range("A1:E1").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With



codigo que a decir verdad es muy largo para la funcion que tiene..  (simplemente copien y peguenlo)
este codigo lo que hace es dar borde a todas las celdas en las que hemos escrito asi:
Lo siguiente que haremos sera escribir los codigos y los nombres de las personas de esta base de datos...
Y para hacerlo mas facil solo seran 5 nombres.
Y para eso el codigo es este:
Que es el que se utiliza para escribir el no.
Range("a2").Select
ActiveCell.FormulaR1C1 = "1"

Para escribir los de mas numero es es el mismo codigo, solamente que con un numero diferente.
With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
         Range("A2:A6").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

y este otro codigo es para centrar todos los campos que escribimos. (numeros)


Para escribir los nombres es el mismo codigo que utilizamos para escribir los nombre, solamente que en lugar de numeros escribiremos los nombres.
y al igual que los numeros los vamos a centrar con el mismo codigo de centrado, solo que cambiamos el rango de celdas a centrar.
para escribir el sueldo y la bonificacion son los mismos codigos entonces creo que sera mas facil seguir desde aqui.

luego de tener todo esto usaremos de nuevo el codigo de borde que usamos arriba, pero seleccionando todas las celdas que tenemos que seria de A1 a A6

hasta aqui esperia lleven muy bien su proyecto. Porque en esta parte que sigue tendremos que lograr por medio de codigos que nuestra macro nos sume el sueldo mas la bonificacion. entonces usaremos el siguiente codigo.
  Range("E2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
    Range("D2").Select

en este codigo como en los otros cambiaremos los rangos dependiendo de la celda que siga de sumar.
Y al final de que escriban todos los codigos tendras (al momento de correr tu macro) una hoja de calculo como esta. 

Asi deberia verse todo el codigo que escribiste.


Y solo te recuerdo lo siguiente :D
Recuerda guardar tu archivo como "libro de excel habilitado para macros"

lunes, 27 de febrero de 2012

Formulas de Buscarv, Suma y Si

Bueno Hoy Aprenderemos algo mas basico

Buscarv
Suma
Si

Y algunas otras que iremos agregando durante este ejemplo...

Vamos a suponer que tenemos un almacen con varios clientes que aun nos deben. Tenemos varios pedidos de esas personas y necesitamos extraer de nuestra base de datos la suma de la deuda de un solo cliente.
Entonces como lo acemos de una forma rapida; efectiva y confiable?

PROCEDIMIENTO:

Empezamos por abrir excel y en una nueva hoja escribimos nuestra base de datos:


Despues de que ya tenemos esto vemos el problema de no poder sumar todos porque tenemos diferentes clientes, entonces es aqui donde entran nuestras funciones de excel.
Trabajaremos con estos 3 simples campos porque asi es mas facil.
 

Antes de empezar con las formulas y la programacion nombraremos una matriz para que sea mas facil trabajar.

Para nombrar una matriz seleccionamos las casillas que vamos a nombrar y como lo indica la imagen, nombramos nuestra matriz.
 

segun nuestro esquema en la casilla "D13" (SIGUIENTE IMAGEN) escribiremos la siguiente formula:

 =SI(B13="","",BUSCARV(B13,DATOS,2,FALSO))
(cuando terminamos de escribir la formula presionamos enter)

Con esta formula vamos a lograr que cuando en la casilla de codigo ingresemos uno de los codigos de nuestra base de datos nos aparesca el nombre del cliente del que queremos saber a cuanto asciende su deuda. el sig. paso seria este:

Tendremos que nombrar 2 matrices mas que en este caso serian de las celdas "A2 a la A8" se llamara CODIGOS


Y  de "C2 a la C8" sera VALORES



luego de eso vamos a la formula.

=SUMAR.SI.CONJUNTO(VALORES,CODIGOS,B13)


Luego de terminar la Formula podemos decorar o ponerle un formato muy bonito a nuestro ejercicio asi como yo lo decore :D

Y aqui esta nuestro ejercicio terminado.:

Recuerdenque siempre resolvere sus dudas en @SelVin_Ro


Nos Vemos Hasta la Proxima (Y)

Funcion Indice y Botones de Control

Como Estan ?
En esta ocasión vamos a aprender como usar los botones de control de excel y la función índice..
y practicaremos un poco las funciones que ya aprendimos...
Para este ejercicio supondremos que tenemos un concesionario de vehículos y necesitamos de una forma mas directa y facil saber la información del vehiculo
Lo Que Nesecitamos : Debemos darle un lindo formato a nuestra hoja de calculo ya que no solamente debe ser funcional tambien debe ser llamativo.

 
Bueno ya que tenemos este formato empesaremos a trabajar.  Con estos campos lo que haremos es darle un mejor modo de busqueda al las caracteristicas del carro El nombre El precio y La existencia.

Ahora crearemos la base de datos de nuestro consesionario:



Ahora nombraremos todas las filas y columnas con una matriz a la cual le pondremos datos.
Luego a la columna de carros llamaremos a la matriz Carros.
Luego a la columna de Precio llamaremos a la matriz precios.
Y luego a la columna de Existencias llamaremos a la matriz Existencias.

Lo cual mostrare a continuacion con imagenes en orede de como lo escribi.

1.
2.
3.


4.
Siguiendo con esto regresamos a nuestra hoja 1. y empesamos a programar.
1. Vamos a la ficha programador y ahi seleccionamos la opcion insertar boton.
2. Seleccionamos la ficha insertar boton.
3. Luego el boton a insertar es el de cuadro convinado.
4. Luego de que le dimos incertar boton trazamos el boton en nuestra hoja de calculo.
5. Seguido le damos click derecho al boton y le damos en Formato de Control
6. Le colocamos la matriz carros ya que ahi sera deonde buscaremos los vehiculos. Y si bajan podran observar que se selecciona la matriz carros.
7. Le colocamos una selda aledaña para que en ella podamos ir contrlando que vehiculo es.
8. Por ultimo le colocamos la cantidad de lineas ke keremos observar en mi caso yo le puse 5.

Ahora les mostrare las imagenes:
1.

2.

3.


4.

5.
6.

7.

8.

Luego de esto vamos a escribir en la celda D9 la siguiente formula: =INDICE(CARROS,O1)

Luego de esto vamos a escribir en la celda D11 la siguiente formula: =INDICE(Precios,O1)

Y por ultimo escribimos la formula: =BUSCARV(D9,DATOS,3,FALSO)

Ahora lo veremos en imagenes
1.

2.
3.



Y asi es como deveria verse su ejercicio terminado:


Bueno eso fue todo para enseñarles la funcion indice y Botones de control.
No se les olvide Comentar o sugerir algo nuevo para el bolg.
Tabien pueden dejar sus dudas o comentarios en @SelVin_Ro