SlideShare una empresa de Scribd logo
1 de 16
Trucos en Excel
    Para rellenar una Base de Datos
1   podemos pasar de un dato a otro de la misma fila con <TAB> y si después de introducir el último dato Base de Datos
    de la fila pulsamos <INTRO> el cursor se posicionará en el primer dato de la siguiente fila.
    Para separar un sector circular en un gráfico
2   se pulsa con el ratón sobre él y luego se separa. También se puede cambiar el color de un sector          Gráficos
    pulsando sobre él con el botón derecho del ratón y eligiendo 'Formato de punto de datos...'.
    Para incluir una nueva serie de datos en un gráfico
3                                                                                                             Gráficos
    se copia el rango de datos nuevo y se pega sobre el gráfico.
    Para seleccionar una tabla completa
4   basta con posicionarse en cualquier celda de la tabla y pulsar [CTRL]+*. (Si usa el asterisco del teclado Teclado
    general no olvide que se consigue pulsando también la tecla [MAYUSCULAS]).
    Para poder ver las fórmulas de una hoja
    puede hacer lo siguiente: Herramientas, Opciones, pestaña Ver, y en Opciones de Ventana marcar
5   Fórmulas.                                                                                                 Teclado
    Pero también existe un método de Teclado Abreviado que consiste en pulsar [ALT]+º y si se vuelven a
    pulsar estas dos teclas se muestra la hoja como habitualmente la vemos.
6   Auto_Open() y Auto_Close()                                                                                Macros
    Existe una macro de autoarranque que se ejecuta cuando se abre el libro. Se llama auto_open().
    Y existe otra que se ejecuta justo antes de cerrar el libro que se llama auto_close().

    Sub Auto_Open()
      Dim hora As Double
      Dim saludo As String
      hora = (Now - Int(Now)) * 24
      Select Case hora
        Case 6 To 14
           saludo = "Buenos días"
        Case 14 To 21
           saludo = "Buenas tardes"
        Case Else
           saludo = "Buenas noches"
        End Select
      MsgBox saludo & " Amo"
    End Sub

    Equivalente a auto_open existe otra macro Workbook_Open, pero ésta ha de ser guardada no en un
    módulo normal, sino en ThisWorkbook. Pruebe lo siguiente:

    El siguiente procedimiento permite abrir automáticamente el libro Balance.xls al abrir el libro
    Informe.xls. El procedimiento ha de estar en ThisWorkbook del libro Informe.xls.

    Sub Workbook_Open()
      'Apertura de libro Balance
      Workbooks.Open Filename:="C:/Contabilidad/Balance.xls"
      'Activación del libro Informe
      Windows("Informe.xls").Activate
End Sub
  Personal.xls
  Podemos crear una macro para que este disponible en todas las hojas de cálculo. Esto se hace con el
  libro PERSONAL.XLS
  Personal.xls es un Libro que se carga cada vez que se inicia Excel, pero no esta visible ya que tiene el
  atributo de Escondido (Hidden), por lo que si necesitamos modificarlo lo debemos hacer a través del
  comando "Mostrar" del menú "Ventana". En caso que no exista lo podemos crear con un libro de
7 trabajo nuevo, salvarlo con este nombre y dejarlo en la carpeta "InicioXL" (XLStart), que se encuentra Personalización
  en la carpeta "Office" del directorio donde esta instalado MSOffice. Cada vez que dejamos de trabajar
  con este archivo, lo debemos salvar y luego activar el comando "Ocultar" del menú "Ventana", para
  que no se vea cuando iniciamos la aplicación.
  La ruta de mi fichero es:
  C:Documents and SettingsAdolfoDatos de programaMicrosoftExcelXLSTART
  [PERSONAL.XLS]Hoja1
  Saludo al arrancar
  Crear un libro Personal.xls como se ha indicado anteriormente con la macro de autoarranque siguiente:

8 Sub Auto_open()                                                                                             Macros
   MsgBox ("Que tengas un buen día")
  End Sub

    Esta macro creada en el libro Personal.xls hace que al iniciar Excel nos salga un mensaje saludándonos.
    Nombrar Hoja desde una celda
    Esta macro permite asignar el nombre que pongamos en la celda A1 como nombre de la Hoja actual.
9                                                                                                             Macros
   Sub NombreHoja()
     ActiveSheet.Name = Range("A1").Value
   End Sub
   Protección de una hoja
   Las celdas por defecto vienen bloqueadas. Si deseamos desbloquear algunas de ellas debemos hacer lo
   siguiente: Formato, Celda, pestaña Proteger, quitar la casilla de verificación que esta puesta por defecto
   en 'Bloqueada'. Si marcamos 'Oculta' no se verá el contenido de la celda en la barra de fórmulas. Esto
10 se hace cuando no se desea que alguien vea la fórmula de una celda. Después se debe proteger la hoja Personalización
   con: Herramientas, Proteger, Proteger hoja. Se le pueden permitir más o menos acciones al usuario. Si
   no le permitimos seleccionar las celdas bloqueadas y desbloqueadas no podrá posicionarse con el
   cursor sobre ellas. Si únicamente le dejamos seleccionar las desbloqueadas nos encontraremos con algo
   parecido a un formulario.
   Propiedad EnableSelection
   Para reforzar el bloqueo del paso anterior podemos hacer lo siguiente:
   Ir al Editor de Visual Basic. En el Explorador de proyectos ir a la hoja que queramos proteger. En la
   Ventana de propiedades buscar la propiedad EnableSelection y ponerle el valor 1. Cerrar el editor,
11 volver a Excel y grabar la plantilla.                                                                      Personalización
   Con la doble opción (protección de hoja y la propiedad EnableSelection) será imposible seleccionar
   una celda, y por lo tanto copiar o modificar cualquier valor. Este procedimiento no funciona en Excel
   2000 y en las versiones anteriores, porque la propiedad EnableSelection no conserva el valor
   modificado al cerrar la plantilla. Aunque lo cierto es que pocos usuarios conocen la citada propiedad.
12 EnableSelection = xlUnlockedCells                                                                          Personalización
    Para paliar el inconveniente citado anteriormente para las versiones de Excel 2000 y anteriores se
puede hacer lo siguiente:
   Ir al Editor de Visual Basic. En el Explorador de proyectos ir a la hoja que queramos proteger. En la
   Ventana de propiedades buscar la propiedad EnableSelection y ponerle el valor 1. Cerrar el editor,
   volver a Excel y grabar la plantilla.
   Con la doble opción (protección de hoja y la propiedad EnableSelection) será imposible seleccionar
   una celda, y por lo tanto copiar o modificar cualquier valor. Este procedimiento no funciona en Excel
   2000 y en las versiones anteriores, porque la propiedad EnableSelection no conserva el valor
   modificado al cerrar la plantilla.
   Ese procedimiento se puede realizar también mediante una macro:
   Private Sub Workbook_Open()
     Worksheets("Hoja1").EnableSelection = xlUnlockedCells
   End Sub
   El valor por defecto es xlNoRestrictions
   Opciones de Ordenación
   Al ordenar un rango de datos podemos elegir en Opciones que la ordenación sea Normal (alfabética) o
13 según una de las Listas Personalizadas de Excel.                                                      Base de Datos
     Puede distinguir mayúsculas de minúsculas.
     Puede ordenar en vertical (que es lo normal) o en horizontal.
     Criterios utilizados para filtrar una base de datos
     Un criterio está formado al menos por dos celdas. La primera es un nombre de campo y la segunda que
     estará debajo es el criterio propiamente dicho.
           Salario
         >=30.000 Cuando usamos varios criterios estos se relacionan entre si mediante concatenadores lógicos
     Y u O. Por ejemplo, supongamos que deseamos filtrar de una base de datos los registros
     correspondientes a trabajadores que cumplan que su salario esta comprendido entre 30.000 y 40.000
     euros, o bien su edad es de 30 años y se llaman Maria. En ese caso el criterio esta formado por
     múltiples celdas, de forma que los criterios que estan en la misma fila se han de cumplir ambos
     (operador Y), y si están en fila distinta se han de cumplir unos u otros (operador O).
     1
     2
     3
     4
         A
             B
             N
             A
             J
                 B
                  a
                  o
                  n
                  o
                      s
                         C     D

                      m b Sra a d l r
                        E d e
                      a 3 2 1 .
                             0
                      n 2 3 7 .
                             5
                                  a i
                                    o
                                     E
                           e d e D a tB s
                                       o a
                                        N o
                                            F


                                  7 4 6 J Πo
                                  0 0 9 J Πo
                                                      G     H
                                                   s e d e D a t s
                                                   m b Sra a d l r
                                                     E d e
                                                   n 2 3 7 .
                                                          5
                                                   s 2 3 8 .
                                                        e 8
                                                               a i
                                                                 o
                                                                   I
                                                                     o

                                                               0 0 9 Œ
                                                               6 6 7 Œ
                                                                       J
                                                                         F   a
                                                                             r
                                                                             t
                                                                             l
                                                                             i
                                                                                 K
                                                                                     d   a



     5       J    o   s 2e 3 8 .
                             8    6 6 7 MΠa       a
                                                   i
                                                   r 3 2 9 .
                                                          0    7 4 1 Œ
     6       J    u   a
                      i
                      l 3 4 0 .
                             4    3 8 0 Œ
     7       L    u   s
                      i 3 4 7 .
                             4    1 9 6 Œ
     8       M    a   a
                      i
                      r 3 2 9 .
                             0    7 4 1 Œ
     9
     1   0C      e
                 t
                 i
                 r    o
                      i
                      r      s
     1   1S      a      a
                        l
                        E    o
                             i
                             r Sa a d l N ro m b
                             d        a i o        e
                                                   r
     1   2>      =    3      0< 0 4 00 0 0 0 0
     1   3                  3 0        M a r a
                                             i
     1   4
             H   o    a
                      j     1




14                                                                                                                               Base de Datos




   Varias líneas en una celda
15 Para escribir varias líneas en la misma celda puedes escribir lo que quieras y para abrir un espacio hacia abajo en la misma Personalización
     celda pulsar Alt+Enter.
16 Mover celdas entre hojas                                                                                                      Personalización
     Seleccione el rango a mover. Llévelo hasta la pestaña de la hoja de destino, presione ALT y mantenga presionado hasta que
deje el rango en la parte de la hoja de destino que desee.
   Insertar filas o columnas rápidamente
   En una hoja de Excel que ya tengas rellena, prueba a hacer esto:
   Vete al principio de lo que tengas escrito
17 Pon el ratón sobre el control de relleno (es el puntito negro que tiene el cursor abajo a la derecha).    Personalización
   Sabes que estás encima del control de relleno, porque la cruz blanca que es normalmente el ratón se
   cambia a color negro
   Ahora pulsa la tecla de mayúsculas (no la de bloq. mayús) y sin soltarla pulsa el botón izquierdo del
   ratón y arrástralo hacia abajo o hacia la derecha, verás que se insertan filas o columnas.
   Copiar en Excel XP arrastrando con Ctrl
18 Se puede copiar una celda arrastrando con Ctrl desde alguno de los 4 lados del borde de la celda activa. Personalización
   Si no se emplea el Ctrl la celda no se copia, se mueve.
   Edición, Rellenar, Series
19 Poner el primer número y arrastrar el controlador de relleno con la tecla Ctrl pulsada. Esto nos dará una Personalización
   serie con incrementos unitarios.
   Algunas teclas de navegación
   Ctrl + Intro                                                  Ir a A1
   Fin - Flecha abajo                                            Última celda de un rango.
   Ctrl + Flecha abajo                                           Última celda de un rango.
   Ctrl + Fin                                                    Celda inferior derecha al área activa
20 Alt + AvPg                                                    Página a la derecha                                                 Teclado
   Shift + Barra de desplazamiento vertical u
                                                                 Permite desplazamientos más rápidos
   horizontal
   Ctrl + AvPg                                                   Avanza entre las hojas de un libro                            Par
    a ir al extremo superior de un bloque de datos, haga doble clic en el extremo superior de la celda seleccionada. Con los
    demás bloques puede ir a los demás extremos del bloque. Y si lo hace mientras presiona la tecla Shift podrá seleccionar
    rangos.
    Algunas abreviaturas de teclado
   Ctrl + C                                        Copiar
21 Ctrl + V                                        Pegar                                                                             Teclado
   Ctrl + X                                        Cortar
   Ctrl + Z                                        Deshacer
   Al pulsar Intro se desplaza el cursor hacia abajo, pero se puede cambiar
22                                                                                                                                   Teclado
    Puede cambiarlo en Herramientas, Opciones, Modificar, Mover selección después de ENTRAR.
23 Cálculo automático en la barra de estado                                                            Personalización
   Al seleccionar un rango de números vemos su suma en la barra de estado (abajo). Pulsando sobre ella
   con el botón derecho del ratón podemos cambiar la suma por un promedio, el máximo, el mínimo o
   contar los elementos seleccionados en el rango.
<!--[if !
     vml]--><!--[endif]-->


     F11
24                                                                                                                                 Gráficos
     Pulsando F11 sobre una serie de datos se construye un gráfico completo y de forma automática.
   Proteger celdas
   Con Formato, Celda, Protege, quitar la casilla de verificación en Bloqueada se consigue que en estas
25 celdas se pueda escribir después de ejecutar Herramientas, Proteger, Proteger hoja.                                        Personalización
   Con TAB se puede saltar de una a otra celda de las desbloqueadas. Y con Mayúsculas + TAB se salta
   hacia atrás.
   Ocultar la formula en una celda
26 Con Formato, Celda, Proteger, Oculta se marcan las celdas cuyas fórmulas o contenido visto en la línea de edición se desee Personalización
     ocultar. Después se ha de proteger la hoja, con Herramientas, Proteger, Proteger hoja.
   Copiar una hoja
   Para copiar una hoja completa dispone de dos sistemas:
   El primero y más fácil es señalar con el ratón la pestaña de la hoja a copiar, pulsar Ctrl y sin soltar
   arrastrar la pestaña con el ratón. Al soltar se habrá duplicado completamente la hoja. Si la hoja a copiar
27                                                                                                            Personalización
   se llamaba 'Hoja 1', la nueva hoja se llamará 'Hoja 1 (2)'
     Es segundo método consiste en situar el ratón en el cuadradito que queda como intersección del indicador de filas y
     columnas. Esto selecciona la hoja completamente. Seguidamente se copia al portapapeles, por ejemplo con Ctrl + C. Se
     inserta una hoja nueva y pulsando sobre ella en el citado cuadradito se pega el contenido del portapapeles, por ejemplo con
     Ctrl + V.
     Insertar Comentarios
28 Se pueden insertar comentarios en las celdas. Para ello, pulse con el botón derecho del ratón y elija 'Insertar Comentario'.    Personalización
     Puede verlos completamente, solo la indicación de que la celta tiene un comentario, o no verlos en absoluto según elija una
     opción u otra en Herramientas, Opciones, Ver, Comentarios.
29 Texto con diversos formatos en una misma celda                                                                                  Personalización
   Se pueden dar distintos formatos a los caracteres o palabras de una misma celda.
   Por ejemplo: puede poner en una celda la siguiente expresión: Volumen (m3)
   Véase el distinto color de la fuente y el 3 como superíndice.
Volumen
                       (m3)
                                       Esto se consigue señalando en la barra de fórmulas el carácter o
   caracteres que se quieren cambiar y aplicándoles el formato deseado.
   Trabajar simultáneamente en varias hojas
   Antes de escribir texto, formulas, dar formato, etc.. en varias hojas simultáneamente ha de señalarlas
   primero.
   Si son un conjunto de hojas correlativas, señale la primera haciendo clic con el ratón sobre la pestaña
30 que indica el nombre de la primera y haga Mayúsculas + clic en la última.                                 Personalización
   Si las hojas no son consecutivas selecciones la primera con un clic y las restantes con un Ctrl + clic en
   cada una.
     Cuando haya terminado de introducir la información y formatos comunes haga clic en cualquier pestaña y así se desactivará
     el modo de trabajo conjunto.
   Escribir en varias celdas simultáneamente
31 Señale las celdas donde quiere escribir una misma expresión. Incluso si son de rangos separados. Escriba dicha expresión. Y Personalización
     valide su introducción con Ctrl + Intro.
     Ver todas las fórmulas de una hoja
32   Se consigue pulsando Alt + º (esto es, la tecla Alt y simultáneamente la tecla de 1º que está a la           Personalización
     izquierda del número 1). Para volver a la situación anterior volver a pulsar.
     También se puede conseguir mediante: Herramientas, Opciones, Ver, Fórmulas.
     Borrar
     Con el comando Edición, Borrar se puede elegir entre Todo, Formatos, Contenido (Supr) o
33   Comentarios.                                                                                                 Personalización
     Para borrar un rango primero seleccione el rango y luego presione Shift mientras arrastra con el ratón el
     indicador de relleno hacia el extremo superior izquierdo del rango. Si no presiona Shift conseguirá
     borrar el contenido pero no los formatos.
     La fuente por defecto en Excel es la Arial 10 pero se puede cambiar
     Se puede cambiar para todos los libros nuevos mediante: Herramientas, Opciones, General y elegir la
34   Fuente Estándar y el tamaño.                                                                                 Personalización
     Pero también se puede cambiar la fuente sólo en el libro activo de la siguiente forma. Activar el libro
     en el que se quiere cambiar la fuente por defecto. Ejecute Formato, Estilo y dentro del formato de estilo
     Normal elegir Modificar, Fuente y proceder a cambiar la fuente. Finalmente Aceptar.
     Plantillas *.xlt
     Las plantillas permiten predefinir formatos, estilos, textos, fórmulas, barras de herramientas
     personalizadas e incluso macros, que se utilizarán en todos los nuevos libros abiertos (si la plantilla se
     llama libro.xlt) u hojas nuevas insertadas (si la plantilla se llama hoja.xlt). También pueden existir otras
     plantillas para diferentes usos, por ejemplo, para predefinir una factura, cierto informe mensual, un
     balance, etc.
     La plantilla de libro predeterminada (libro.xlt) y la plantilla de hoja predeterminada (hoja.xlt) se han de
35   grabar como plantilla en el directorio INICIAR que para la versión XP suele estar en:                        Personalización
     C:Documents and SettingsnombreusuarioDatos de programaMicrosoftExcelINICIAR
     o bien en:
     C:Documents and SettingsnombreusuarioDatos de programaMicrosoftExcelXLSTART
   Tanto las plantillas que tenga en la carpeta de inicio predeterminada de Excel como las que haya
   definido en la carpeta de plantillas (C:Documents and SettingsnombreusuarioDatos de
   programaMicrosoftPlantillas) las tendrá disponibles cuando haga Archivo, Nuevo y salga el Panel de
   Tareas y en el elija Plantillas Generales.
36 Puede trabajar con Estilos                                                                                                    Personalización
En Formato, Estilo puede modificar el estilo normal o crear nuevos estilos, pero sólo estarán
     disponibles en el Libro Activo.
     Si se desea que los estilos estén disponibles de forma permanente sigua los siguientes pasos: Abra el
     libro cuyos Estilos quiere guardar permanentemente. Abra un libro nuevo y combine los Estilos en éste.
     Ejecute Archivo, Guardar como, elija como tipo Plantilla (*.xlt). Escriba como nombre de fichero
     Libro.xlt o Hoja.xlt y guárdelo en la carpeta de inicio de Excel (C:Documents and
     SettingsnombreusuarioDatos de programaMicrosoftExcelINICIAR). De esta forma cada vez que abra un libro u
     hoja nuevos se dispondrá de estos Estilos.
     Puede convertir el estilo de una celda en un tipo de estilo personalizado. Sitúese en la celda patrón y
     elija Formato, Estilo y cambie el nombre por uno nuevo de su elección.
     Puede transferir los estilos de un libro a otro mediante Formato, Estilo, Combinar. Para ello abra los
     dos ficheros (o más) y ejecute los pasos señalados desde el fichero hacia el que quiere llevar los nuevos
     estilos.
     Libros que se abren al iniciar Excel
     Los libros que coloque en la carpeta de inicio de Excel:
     C:Documents and SettingsnombreusuarioDatos de programaMicrosoftExcelINICIAR
37 o bien en                                                                                                                   Personalización
     C:Documents and SettingsnombreusuarioDatos de programaMicrosoftExcelXLSTART
   Se abrirán al iniciar Excel.
   También puede definir una carpeta de inicio de Excel en Herramientas, Opciones, General, "Al inicio,
   abrir todos los libros en:"
   La función =CELDA
   La función CELDA es la típica función que sirve para varias cosas según que argumentos se utilicen.
   Si se usa con "nombrearchivo"
38 =CELDA("nombrearchivo")                                                                              Función
   proporciona el nombre y ruta del archivo (siempre que esté grabado). En la ayuda hay un error y en
   lugar de poner "nombrearchivo" pone "archivo".
   Otro argumento interesante es "contenido".
   =CELDA("contenido";A3)        Proporciona el contenido de la celda A3.
   Exportar un módulo
     1. Pase al editor de visual basic y active el módulo a exportar.
39 2. Seleccione Archivo/ Exportar archivo. Aparece un cuadro de diálogo.                                                      Macros
     3. En cuadro de edición Nombre de Archivo, teclee el nombre para el archivo donde se guardará el
     módulo, por ejemplo "General.Bas", observe que .BAS es la extensión de estos archivos.
     4. Pulse sobre el botón Guardar.
     Importar un módulo
     1. Active el editor Visual Basic.
40 2. Seleccione Archivo/ Importar Archivo. Aparece un cuadro de diálogo.                                                      Macros
     3. Seleccione en la lista Buscar en: la carpeta donde tiene ubicado el archivo a importar.
     4. Una vez localizada la carpeta, seleccione el archivo a importar (General.Bas en el ejemplo) y pulse
     sobre Abrir.
     La cláusula Private
     Puede anteponer la cláusula private a todos los procedimientos y funciones que sean llamados sólo desde
41 el mismo módulo, es una forma de ahorrar memoria y hacer que el programa corra un poco más rápido. Si                       Macros
     necesita llamar un procedimiento o función desde otro módulo, nunca debe precederlo por la cláusula
     private, recuerde que esta cláusula restringe el ámbito de utilización de un procedimiento a su propio
     módulo.
   Inspección rápida de variables
42                                                                                                                             Macros
   Cuando ejecuta un programa paso a paso, si sitúa el puntero de ratón sobre una variable, se muestra el valor de la misma.
43 Modificar el valor de una variable en tiempo de ejecución                                                                   Macros
A veces resulta interesante cambiar el valor de alguna variable cuando se está ejecutando el programa,
     para ver que ocurre si coge determinados valores, para terminar un bucle, etc.
     Para ello agregue a la ventana de inspección la variable que desee cambiar, cambie su valor sobre la propia ventana de
     inspección y continúe la ejecución del programa.
     Ventana Inmediato
44   Puedes inspeccionar variables desde esta ventana anteponiendo la palabra print antes de la variable, o Macros
     el signo ?.
     Debug.Print
     Esta expresión permite efectuar la depuración del programa de forma más cómoda. Se introduce en un
     programa antecediendo a una variable que se desea comprobar en la ventana Inmediato. De esta forma
     conseguiremos ver todos los valores que toma la variable cada vez que el programa pasa por este
     comando. Se ven en la Ventana Inmediato [Ctr+G].
     .
     Ejemplo:
     Sub Dos_a_la_diez()
45     Dim i As Integer                                                                                      Macros
       Dim t As Integer
       t=1
       For i = 1 To 10
          t=t*2
          Debug.Print "Dos a la " & i & " = " & t
       Next
       MsgBox t
     End Sub
     Después de efectuada la depuración se quita la línea que contiene el comando Debug.Print.
     Propiedad ListFillRange del ComboBox
46   Con esta propiedad deberemos definir los elementos que debe mostrar la lista, debe especificarse el     Macros
     rango
     que contiene los elementos a mostrar, el rango debe ser una columna (o dos , o tres, etc.).
     Propiedad LinKedCell del ComboBox
     En esta propiedad debe especificar en que celda debe copiarse el elemento seleccionado de la lista.
     Cuidado con esta propiedad, tenga en cuenta que los elementos de la lista son tratados como datos de
47   tipo String aunque contenga números o fechas, por lo que en estos casos, a veces será necesario aplicar Macros
     funciones de conversión de datos antes que el dato se copie en la hoja. Por ejemplo, si alguna vez
     construye una lista con números verá que el dato seleccionado se alinea a la derecha, si son fechas, no
     se
     muestra con el formato correspondiente.
     Propiedad ListIndex del ComboBox
     Mediante esta propiedad podremos saber que elemento de la lista es el seleccionado por su número de
     orden. Es decir, si está seleccionado el primero, ListIndex valdrá 0, si está seleccionado el segundo
48   valdrá                                                                                                  Macros
     1, etc. Si no hay ningún elemento seleccionado valdrá -1. Tenga en cuenta que esta propiedad sólo está
     disponible en tiempo de ejecución, es decir la podremos leer mientras esté funcionando el programa, no
     se puede establecer en modo diseño, observe que no aparece en la ventana propiedades del cuadro
     combinado.
49   La función =TEXTO                                                                                       Función
     Esta función permite convertir un valor numérico en un texto. Su función contraria es =VALOR.
     Al escribir un número en una celda queda alineado a la derecha, si se escribe como texto
(anteponiéndole una comilla simple) quedará alineado a la izquierda. Ejemplo: '54
   La función TEXTO tiene dos argumentos que según la ayuda son: =TEXTO(valor;formato)
   valor: es el número que queremos convertir a texto
   formato: es el formato que queremos darle. Es un argumento optativo
   Pero la ayuda no se corresponde con la realidad de la función, ya que en la práctica esta función tiene
   los argumentos cambiados de orden.
   Pruebe =TEXTO(;"43")
   Pero si prueba =TEXTO("43") obtendrá un error
   Curiosidades de alguna funciones con valor propio
   Algunos nombres de función tienen valor propio si se escriben un una celda y sin argumentos. O al
   menos eso es lo que he podido comprobar en la versión XP.
   Ponga en una celda cualquiera +PRECIO y al pulsar intro verá que aparece un valor. A mi me da
   -1965686714.
   Las funciones que he visto que tienen valor propio son las siguientes:
50 =PRECIO     -1965686714                                                                           Función
   =AMORTIZ.LIN 1477378140
   =CUPON.DIAS -1799028673
   =DURACION -1525481390
   =VNA.NO.PER -269746088
   =DIAS.LAB     270991416y muchas más. Por lo que veo, son las que aparece al ampliar las funciones
   al instalar las complementarias, con
   Herramientas, Complementos, Herramientas para Análisis.
   Cambiar el nombre de un Móludo
51 Al insertar módulos en el Editor de Visual Basic, se utilizan los nombres: Módulo 1, Módulo 2, etc. Macros
   Podemos cambiar el nombre el un módulo en sus propiedades (F4). La única propiedad de un Módulo
   es 'name'.
52 Nombre de usuario: UserName                                                                         Macros
   Vamos a crear una función que proporcione el nombre de usuario. Primero utilizando la Grabadora de
   Macros. Haga lo siguiente. Active la Grabadora y luego seleccione Herramientas, Opciones, pestaña
   General. Realice un cambio en el nombre de usuario. Cerrar la ventana de Opciones pulsando en
   Aceptar. Y detener la Grabadora. La macro obtenida será la siguiente:

   Sub Macro1()
   '
   ' Macro1 Macro
   ' Macro grabada el 06/08/2004 por Adolfo
   '

   '
     With Application
       .UserName = "Adolfo Aparicio"
       .StandardFont = "Arial"
       .StandardFontSize = "10"
       .DefaultFilePath = "C:Documents and SettingsAdolfoMis documentos"
       .EnableSound = False
       .RollZoom = False
     End With
   End Sub

   Ahora vamos a crear la función =Usuario siguiendo el procedimiento inverso.
Funcition Usuario()
     Usuario = Application.UserName
   End Function

   Puede probarla. La encontrará en la categoría de Funciones Definidas por el usuario.
   Extensiones de los nombres de macro
53 - Módulos de clase. Extensión .cls.                                                                             Macros
   - Formularios. Extensión .frm.
   - Módulos estandar. Extensión .bas.
   Exit Sub, Exit Function
54                                                                                                                 Macros
   Se usan eventualmente para salir de un procedimiento o función.
   Macro que pregunta si se desea salir de la aplicación
   Sub SalirAplic()
      If MsgBox("¿Quiere salir de la aplicación", vbQuestion + vbYesNo, "Ultima pregunta") = vbYes
55 Then                                                                                                            Macros
         Application.Quit
      End If
   End Sub
   Llamada a un procedimiento
   [Call] NombreProc [(lista de argumentos)]
   La palabra clave Call es opcional para llamar a un procedimiento, salvo que existan argumentos, en
   cuyo caso es obligatoria. Los argumentos deben ir entre paréntesis y pueden ser valores o variables.
   Sub Suma(a As Byte, b As Byte)
      MsgBox "La suma es " & a + b
   End Sub

   Sub sumar()
     Call Suma(3, 4)
56 End Sub                                                                                                         Macros

   Para llamar a un procedimiento de otro módulo
   NombreDelMódulo.NombreDelProcedimiento
   Ejemplo: ThisWorkbook.SalirAplic

   Para llamar a un procedimiento de otro libro
   Application.Run "NombreDelLibro!NombreDelMódulo.NombreDelProcedimiento"
   Ejemplo: Application.Run "Informe.xls!ThisWorkbook.SalirAplic.xls"
   Al ejecutar este comando, el libro Informe.xls debe estar abierto.
   Proteger con contraseña las macros
57 Alt + F11                                                                                                       Macros
   Herramientas => Propiedades de VBAProject => Protección => Bloquear proyecto para visualización => Contraseña
58 Convertir una función en un Complemento                                                                         Macros
   Podemos hacer que una función creada por el usuario este disponible en todos los Libros. Para ello,
hemos de convertir el Libro que contiene la función en un Complemento.
   Los Complementos disponibles se ven haciendo: Herramientas => Complementos.
   Excel carga los complementos guardados en el directorio donde tengáis instalado MsOffice y luego en
   una carpeta que varía con la versión que tengas instalada. Para XP puede ser:
   C:Documents and SettingsAdolfoDatos de programaMicrosoftAddIns
   Para convertir el libro que contiene nuestra Función en un Complemento, bastara ir al Menú
   Archivo/Guardar como y elegir el formato Complemento de Microsoft Excel (*.xla). Si lo guardáis en
   el directorio que tiene tu versión asignado estará siempre disponible.
   Un aspecto a tener en cuenta es que los Complementos no son editables, es decir no podrás modificar o
   añadir mas Funciones. Por eso es recomendable guardar primero el Libro en formato *.xls y luego
   como *.xla.
   Hacer referencia a un RANGO
   Sintaxis para hacer referencia a un Rango:
   Si el rango está en la misma Hoja:
   Rango
   Si está en otra Hoja del mismo Libro:
   'Nombre de Hoja'!Rango
   Si está en una Hoja de otro Libro, y el Libro se encuentra en la misma carpeta que el actual:
   '[Nombre de Libro.xls]Nombre de Hoja'!Rango
   Si está en una Hoja de otro Libro, y el Libro se encuentra en diferente carpeta que el actual:
59 'c:CarpetaSubCarpeta[Nombre de Libro.xls]Nombre de Hoja'!Rango                                     Edición
   Si el rango está en otro ordenador conectado al nuestro por una Intranet:
   'ServidorCarpeta[Nombre de Libro.xls]Nombre de Hoja'!Rango
   Si el rango está en otro ordenador conectado al nuestro por Intrernet:
   'http://www.servidor.com/Carpeta/[Libro.xls]Hoja'!Rango
   Los apóstrofes (') son necesarios si existen espacios.
   Ejemplo: Prueba a poner esto en una celda de una hoja de Excel cualquiera:
   =BUSCARV(200;'http://www.fcjs.urjc.es/finan/[busquedas.xls]Hoja1'!tab1;2)
   Si todo va bien, y tienes acceso a Internet verás como respuesta la letra B.
   Para localizar la última celda de una lista
   Sub Final()
      While ActiveCell.Value <> ""
60                                                                                                      Macros
        ActiveCell.Offset(1, 0).Select
      Wend
   End Sub
61 Abrir un libro existente:                                                                            Macros
   Sub AbrirLibro()
      Workbooks.Open ("C:Mis documentosEjemplo.xls")
   End Sub
   Activar un libro ya abierto:
   Sub ACtivarLibro()
     Workbooks("Ejemplo.xls").Activate
   End Sub
Crear un libro nuevo:
   Sub NuevoLibro()
     Workbooks.Add
   End Sub

   Borrar un registro de una tabla que contenga un dato concreto
   Sub BorrarFilas()
     While ActiveCell.Value <> ""
       If ActiveCell.Value <> "Cadiz" Then
          ActiveCell.Offset(1, 0).Range("A1").Select
62     Else                                                                                             Macros
          Selection.EntireRow.Delete
       End If
     Wend
   End Sub

   Creación de una Fórmula personalizada
   Cálculo del término amortizativo de un préstamo tipo francés (de pagos constantes). Similar a la
   fórmula =PAGO pero en este caso usando tipo nominal y con fraccionamiento.

   Function Termino(Principal@, Años As Byte, tipo_nominal!, fraccionamiento As Byte)
      Dim im! 'Tipo efectivo del subperiodo
      im = tipo_nominal / fraccionamiento / 100
63    Termino = Principal * im / (1 - (1 + im) ^ (-Años * fraccionamiento))                             Macros
   End Function
   Pongamos un ejemplo para un principal de 100.000 €, 10 años, tipo nominal anual del 6%, con
   fraccionamiento mensual. En este caso, al ser el fraccionamiento mensual el término obtenido es la
   mensualidad.
   Sub ejemplo()
   End Sub
   Macro que cierra Excel
   Se puede asociar a un botón o a un icono.
64 Sub Auto_Close()                                                                                     Macros
      Application.Quit
   End Sub
   Macro que elimina las barras de desplazamiento

   Sub Desbarra()
65   With ActiveWindow                                                                                  Macros
       .DisplayHorizontalScrollBar = False
       .DisplayVerticalScrollBar = False
     End With
   End Sub
66 Macro que protege el libro y la hoja                                                                 Macros
Sub Blindaje()
        ActiveWorkbook.Protect Password:="1234"
        Sheets("Hoja1").Protect Password:="1234"
     End Sub
     La función =EXTRAE y la función =ENCONTRAR
     Si en B6 pones el nombre de una persona, por ejemplo: "Andrés Suarez Oliveira" la siguiente función
67   obtiene las tres iniciales (ASO).                                                                        Función
     =IZQUIERDA(B6;1)&+EXTRAE(B6;ENCONTRAR(" ";B6)+1;1)&EXTRAE(B6;+ENCONTRAR("
     ";B6;ENCONTRAR(" ";B6)+1)+1;1)
     La función =RESIDUO permite calcular la parte Fraccionario
     En Excel disponemos de =ENTERO que calcula la parte entera, pero no disponemos de FRAC que
     calcularia la parte fraccionaria. Para calcular la parte Fraccionaria deberíamos usar uno de estos dos
68   métodos:                                                                                                 Función
     =A1-ENTERO(A1)
     =RESIDUO(A1;1)
     Macro que borra los ceros de un rango
     Sub BorrarCeros()
        For Each Celda In Range("C11:G24")
69         If Celda.Value = 0 Then Celda.ClearContents                                                        Macros
        Next
     End Sub
     Si sólo se quieren ocultar los ceros se ha de poner formato de celda personalizado de #.###
     Macro que reemplaza una palabra por otra
     Sub RemplazarPalabra()
        Dim Palabra As String
        Dim Hoja As Long
        Palabra = Trim(InputBox("Introduzca la palabra a buscar: "))
        For Hoja = 1 To Sheets.Count
70         Sheets(Hoja).Activate                                                                              Macros
           Cells.Replace What:=Palabra, Replacement:="", LookAt:=xlPart, _
           SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
           ReplaceFormat:=False
        Next Hoja
     End Sub
     En este caso reemplazamos por "", lo que supone borrar la palabra buscada.
     Calculo del NIF
     Esta función calcula el NIF (Número de Identificación Fiscal) utilizado en España.
71   Function nif(dni As Long) As String                                                                      Macros
        nif = Mid("TRWAGMYFPDXBNJZSQVHLCKE", (dni Mod 23) + 1, 1)
     End Function
72   Función que calcula la fila que ocupa cierto valor en una tabla                                          Macros
     Está pensado para que la matriz se ponga comenzando en la celda A1, sin encabezado y sin que se
     repitan los elementos.
     Function DimeFila(Rango As Range, Valor_a_buscar) As Integer
        For Each c In Rango
If c.Value = Valor_a_buscar Then
          DimeFila = c.Row
       End If
     Next
   End Function
   Para poner el nombre del fichero en una celda
   =EXTRAE(CELDA("NOMBREARCHIVO";A1);ENCONTRAR("[";
   CELDA("NOMBREARCHIVO";A1))+1;+(ENCONTRAR("]";
73                                                                                                     Función
   CELDA("NOMBREARCHIVO";A1)))-ENCONTRAR("[";
   CELDA("NOMBREARCHIVO";A1))-1)
   Requiere grabar el fichero. Las 4 líneas anteriores son una misma fórmula.
   Para poner el nombre de la hoja en una
74 celda=EXTRAE(CELDA("nombrearchivo");ENCONTRAR("]";CELDA("nombrearchivo"))+1;255)                    Función
   Requiere grabar el fichero.
   Función que muestra la fórmula de una celda
   Devuelve la fórmula que contiene una celda en lenguaje local


75 Function DisplayCellFormula(InputCell As Range) As String                                           Macros
     DisplayCellFormula = InputCell.FormulaLocal
   End Function

   Si se quita la palabra 'Local' devuelve la fórmula en inglés.
   Determinación de si un número es primo o no es primo
   Sub primo()
      Dim primo As Boolean
      Dim n As Long
      Dim d As Long
      n = Val(InputBox("Introduce un número natural", "Entrada de Datos"))
      d=2
      primo = True
      Do While primo And d < n
         If n Mod d = 0 Then
76                                                                                                       Macros
            primo = False
         End If
         d=d+1
      Loop
      If primo Then
         MsgBox (n & " es primo")
      Else
         MsgBox (n & " no es primo")
      End If
   End Sub
77 Activar o Desactivar el empleo de la función IMPORTARDATOSDINAMICOS                                   Tablas Dinámic
   Al intentar operar con formulas que hacen referencia a celdas que provienen de una tabla dinámica con
   la versión XP de Excel nos encontramos con que automáticamente nos pone la función:
IMPORTARDATOSDINAMICOS, y nosotros preferiríamos que esto funcionara como antes.

   Esto se debe a que desde Office XP la función IMPORTARDATOSDINAMICOS se activa por defecto
   cuando nos referimos a celdas que forman parte de una tabla dinámica.

   Pero podemos desactivarla.

   Para ello primero tendremos que llevar hasta alguna de las barras de herramientas un "botón", llamado
   "General GetPivotData".

   Para llevar este botón hasta una barra de herramientas sigue estos pasos.

   Selecciona: Ver, Barra de Herramientas, Personalizar.

   Ve a la pestaña "Comandos". Ahora selecciona la Categoría "Datos" y en la ventana derecha
   (Comandos) busca el botón "General Get Pivot Data" (está cerca del final, aproximadamente el
   octavo empezando por el final). Lleva este botón a la barra de herramientas de Excel que prefieras (esto
   se hace arrastrando el icono y soltándolo en alguna de las barras de herramientas).

   Ahora, todo lo que tendremos que hacer es pinchar este botón para activar / desactivar la función
   IMPORTARDATOSDINAMICOS, que viene activada por defecto.
   Factorial
   Function facto(n)
     Dim i As Integer
     facto = 1
     i=0
78                                                                                                            Macros
     Do
        i=i+1
        facto = facto * i
     Loop While i <> n
   End Function
79 Inicializar una matriz                                                                                     Macros
   Se inicializa con ERASE
                     'En este caso se ponen todos los valores a Empty
   Sub test()
     Dim c(1 To 20, 1 To 10) As Variant
     For i = 1 To 20
        For j = 1 To 10
           c(i, j) = RND
        Next j
     Next i
     MsgBox c(1,1)
     Erase c
     MsgBox c(1,1)
   End Sub

   'En este caso se pone la variable c a su estado inicial
   'Borrandose los valores, las dimensiones y recuperandose
   'la memoria usada.
Sub test1()
       Dim c As Variant
       c = ActiveSheet.Range("A1:J20").Value
       MsgBox c(1, 1)
       Erase c
       'Esto dara error ya que no hay ninguna matriz
       MsgBox c(1, 1)Para evitar que durante la ejecución de una macro se vean todos los movimientos y
     cambios del cursor, para evitar las "chirivitas" que se ven al ejecutar una macro:
     End Sub
     Evitar los movimientos de pantalla mientras se ejecuta una macro
     Para evitar que durante la ejecución de una macro se vean todos los movimientos y cambios del cursor,
     para evitar las "chirivitas" que se ven al ejecutar una macro:

     Al principio de la macro escribe
80                                                                                                           Macros
       Application.ScreenUpdating = False

     y al final

       Application.ScreenUpdating = True
   Formula que referida siempre a un mismo rango
   =SUMA(INDIRECTO("A1:B2"))
81                                                                                                      Función
   Esta expresión permite sumar siempre el rango indicado aunque dicho rango se mueva a otra zona de la
   hoja.
     While...Wend
     Esta estructura permite ejecutar las instrucciones contenidas mientras la condición sea verdadera.

     La siguiente macro posiciona el cursor en la última celda llena de la columna A de la Hoja1.
   Sub final1()
     i=1
     While Worksheets("Hoja1").Cells(i, 1).Value <> ""
        Worksheets("Hoja1").Cells(i, 1).Select
        i=i+1
     Wend
82 End Sub                                                                                                   Macros

     Otra variante:
     Sub final2()
       While ActiveCell.Value <> ""
          ActiveCell.Offset(1, 0).Select
       Wend
       ActiveCell.Offset(-1, 0).Select
     End Sub
     La segunda macro requiere posicionar inicialmente el cursor en la primera celda llena.

Más contenido relacionado

Similar a Trucos en excel avanzado (20)

Guia70
Guia70Guia70
Guia70
 
Macros taller tecnologia
Macros taller tecnologiaMacros taller tecnologia
Macros taller tecnologia
 
Tecnologia trabajo de macros
Tecnologia trabajo de macrosTecnologia trabajo de macros
Tecnologia trabajo de macros
 
estadistica.pdf
estadistica.pdfestadistica.pdf
estadistica.pdf
 
Tecnologia Macro
Tecnologia MacroTecnologia Macro
Tecnologia Macro
 
Excel
ExcelExcel
Excel
 
Taller sobre excel
Taller sobre excelTaller sobre excel
Taller sobre excel
 
Curso de excel avanzado tema 6 macros
Curso de excel avanzado tema 6 macrosCurso de excel avanzado tema 6 macros
Curso de excel avanzado tema 6 macros
 
Colegio nicolas esguerra 3
Colegio nicolas esguerra 3Colegio nicolas esguerra 3
Colegio nicolas esguerra 3
 
Creando macros en Excel 2010 para programdores
Creando macros en Excel 2010 para programdoresCreando macros en Excel 2010 para programdores
Creando macros en Excel 2010 para programdores
 
Creando macros
Creando macrosCreando macros
Creando macros
 
COMANDOS MACROS.pdf
COMANDOS MACROS.pdfCOMANDOS MACROS.pdf
COMANDOS MACROS.pdf
 
Taller de nivelacion camila
Taller de nivelacion camilaTaller de nivelacion camila
Taller de nivelacion camila
 
Resumen ariel
Resumen arielResumen ariel
Resumen ariel
 
Alfabetizacion excel1ºparte2008 (1)
Alfabetizacion excel1ºparte2008 (1)Alfabetizacion excel1ºparte2008 (1)
Alfabetizacion excel1ºparte2008 (1)
 
Alfabetizacion excel1º
Alfabetizacion excel1ºAlfabetizacion excel1º
Alfabetizacion excel1º
 
Proyecto de computacion
Proyecto  de computacionProyecto  de computacion
Proyecto de computacion
 
Manual excel 2013 macro
Manual excel 2013 macroManual excel 2013 macro
Manual excel 2013 macro
 
Prácticas de excel 2010
Prácticas de excel 2010Prácticas de excel 2010
Prácticas de excel 2010
 
Guia70
Guia70Guia70
Guia70
 

Trucos en excel avanzado

  • 1. Trucos en Excel Para rellenar una Base de Datos 1 podemos pasar de un dato a otro de la misma fila con <TAB> y si después de introducir el último dato Base de Datos de la fila pulsamos <INTRO> el cursor se posicionará en el primer dato de la siguiente fila. Para separar un sector circular en un gráfico 2 se pulsa con el ratón sobre él y luego se separa. También se puede cambiar el color de un sector Gráficos pulsando sobre él con el botón derecho del ratón y eligiendo 'Formato de punto de datos...'. Para incluir una nueva serie de datos en un gráfico 3 Gráficos se copia el rango de datos nuevo y se pega sobre el gráfico. Para seleccionar una tabla completa 4 basta con posicionarse en cualquier celda de la tabla y pulsar [CTRL]+*. (Si usa el asterisco del teclado Teclado general no olvide que se consigue pulsando también la tecla [MAYUSCULAS]). Para poder ver las fórmulas de una hoja puede hacer lo siguiente: Herramientas, Opciones, pestaña Ver, y en Opciones de Ventana marcar 5 Fórmulas. Teclado Pero también existe un método de Teclado Abreviado que consiste en pulsar [ALT]+º y si se vuelven a pulsar estas dos teclas se muestra la hoja como habitualmente la vemos. 6 Auto_Open() y Auto_Close() Macros Existe una macro de autoarranque que se ejecuta cuando se abre el libro. Se llama auto_open(). Y existe otra que se ejecuta justo antes de cerrar el libro que se llama auto_close(). Sub Auto_Open() Dim hora As Double Dim saludo As String hora = (Now - Int(Now)) * 24 Select Case hora Case 6 To 14 saludo = "Buenos días" Case 14 To 21 saludo = "Buenas tardes" Case Else saludo = "Buenas noches" End Select MsgBox saludo & " Amo" End Sub Equivalente a auto_open existe otra macro Workbook_Open, pero ésta ha de ser guardada no en un módulo normal, sino en ThisWorkbook. Pruebe lo siguiente: El siguiente procedimiento permite abrir automáticamente el libro Balance.xls al abrir el libro Informe.xls. El procedimiento ha de estar en ThisWorkbook del libro Informe.xls. Sub Workbook_Open() 'Apertura de libro Balance Workbooks.Open Filename:="C:/Contabilidad/Balance.xls" 'Activación del libro Informe Windows("Informe.xls").Activate
  • 2. End Sub Personal.xls Podemos crear una macro para que este disponible en todas las hojas de cálculo. Esto se hace con el libro PERSONAL.XLS Personal.xls es un Libro que se carga cada vez que se inicia Excel, pero no esta visible ya que tiene el atributo de Escondido (Hidden), por lo que si necesitamos modificarlo lo debemos hacer a través del comando "Mostrar" del menú "Ventana". En caso que no exista lo podemos crear con un libro de 7 trabajo nuevo, salvarlo con este nombre y dejarlo en la carpeta "InicioXL" (XLStart), que se encuentra Personalización en la carpeta "Office" del directorio donde esta instalado MSOffice. Cada vez que dejamos de trabajar con este archivo, lo debemos salvar y luego activar el comando "Ocultar" del menú "Ventana", para que no se vea cuando iniciamos la aplicación. La ruta de mi fichero es: C:Documents and SettingsAdolfoDatos de programaMicrosoftExcelXLSTART [PERSONAL.XLS]Hoja1 Saludo al arrancar Crear un libro Personal.xls como se ha indicado anteriormente con la macro de autoarranque siguiente: 8 Sub Auto_open() Macros MsgBox ("Que tengas un buen día") End Sub Esta macro creada en el libro Personal.xls hace que al iniciar Excel nos salga un mensaje saludándonos. Nombrar Hoja desde una celda Esta macro permite asignar el nombre que pongamos en la celda A1 como nombre de la Hoja actual. 9 Macros Sub NombreHoja() ActiveSheet.Name = Range("A1").Value End Sub Protección de una hoja Las celdas por defecto vienen bloqueadas. Si deseamos desbloquear algunas de ellas debemos hacer lo siguiente: Formato, Celda, pestaña Proteger, quitar la casilla de verificación que esta puesta por defecto en 'Bloqueada'. Si marcamos 'Oculta' no se verá el contenido de la celda en la barra de fórmulas. Esto 10 se hace cuando no se desea que alguien vea la fórmula de una celda. Después se debe proteger la hoja Personalización con: Herramientas, Proteger, Proteger hoja. Se le pueden permitir más o menos acciones al usuario. Si no le permitimos seleccionar las celdas bloqueadas y desbloqueadas no podrá posicionarse con el cursor sobre ellas. Si únicamente le dejamos seleccionar las desbloqueadas nos encontraremos con algo parecido a un formulario. Propiedad EnableSelection Para reforzar el bloqueo del paso anterior podemos hacer lo siguiente: Ir al Editor de Visual Basic. En el Explorador de proyectos ir a la hoja que queramos proteger. En la Ventana de propiedades buscar la propiedad EnableSelection y ponerle el valor 1. Cerrar el editor, 11 volver a Excel y grabar la plantilla. Personalización Con la doble opción (protección de hoja y la propiedad EnableSelection) será imposible seleccionar una celda, y por lo tanto copiar o modificar cualquier valor. Este procedimiento no funciona en Excel 2000 y en las versiones anteriores, porque la propiedad EnableSelection no conserva el valor modificado al cerrar la plantilla. Aunque lo cierto es que pocos usuarios conocen la citada propiedad. 12 EnableSelection = xlUnlockedCells Personalización Para paliar el inconveniente citado anteriormente para las versiones de Excel 2000 y anteriores se
  • 3. puede hacer lo siguiente: Ir al Editor de Visual Basic. En el Explorador de proyectos ir a la hoja que queramos proteger. En la Ventana de propiedades buscar la propiedad EnableSelection y ponerle el valor 1. Cerrar el editor, volver a Excel y grabar la plantilla. Con la doble opción (protección de hoja y la propiedad EnableSelection) será imposible seleccionar una celda, y por lo tanto copiar o modificar cualquier valor. Este procedimiento no funciona en Excel 2000 y en las versiones anteriores, porque la propiedad EnableSelection no conserva el valor modificado al cerrar la plantilla. Ese procedimiento se puede realizar también mediante una macro: Private Sub Workbook_Open() Worksheets("Hoja1").EnableSelection = xlUnlockedCells End Sub El valor por defecto es xlNoRestrictions Opciones de Ordenación Al ordenar un rango de datos podemos elegir en Opciones que la ordenación sea Normal (alfabética) o 13 según una de las Listas Personalizadas de Excel. Base de Datos Puede distinguir mayúsculas de minúsculas. Puede ordenar en vertical (que es lo normal) o en horizontal. Criterios utilizados para filtrar una base de datos Un criterio está formado al menos por dos celdas. La primera es un nombre de campo y la segunda que estará debajo es el criterio propiamente dicho. Salario >=30.000 Cuando usamos varios criterios estos se relacionan entre si mediante concatenadores lógicos Y u O. Por ejemplo, supongamos que deseamos filtrar de una base de datos los registros correspondientes a trabajadores que cumplan que su salario esta comprendido entre 30.000 y 40.000 euros, o bien su edad es de 30 años y se llaman Maria. En ese caso el criterio esta formado por múltiples celdas, de forma que los criterios que estan en la misma fila se han de cumplir ambos (operador Y), y si están en fila distinta se han de cumplir unos u otros (operador O). 1 2 3 4 A B N A J B a o n o s C D m b Sra a d l r E d e a 3 2 1 . 0 n 2 3 7 . 5 a i o E e d e D a tB s o a N o F 7 4 6 J Œ o 0 0 9 J Œ o G H s e d e D a t s m b Sra a d l r E d e n 2 3 7 . 5 s 2 3 8 . e 8 a i o I o 0 0 9 Œ 6 6 7 Œ J F a r t l i K d a 5 J o s 2e 3 8 . 8 6 6 7 MŒ a a i r 3 2 9 . 0 7 4 1 Œ 6 J u a i l 3 4 0 . 4 3 8 0 Œ 7 L u s i 3 4 7 . 4 1 9 6 Œ 8 M a a i r 3 2 9 . 0 7 4 1 Œ 9 1 0C e t i r o i r s 1 1S a a l E o i r Sa a d l N ro m b d a i o e r 1 2> = 3 0< 0 4 00 0 0 0 0 1 3 3 0 M a r a i 1 4 H o a j 1 14 Base de Datos Varias líneas en una celda 15 Para escribir varias líneas en la misma celda puedes escribir lo que quieras y para abrir un espacio hacia abajo en la misma Personalización celda pulsar Alt+Enter. 16 Mover celdas entre hojas Personalización Seleccione el rango a mover. Llévelo hasta la pestaña de la hoja de destino, presione ALT y mantenga presionado hasta que
  • 4. deje el rango en la parte de la hoja de destino que desee. Insertar filas o columnas rápidamente En una hoja de Excel que ya tengas rellena, prueba a hacer esto: Vete al principio de lo que tengas escrito 17 Pon el ratón sobre el control de relleno (es el puntito negro que tiene el cursor abajo a la derecha). Personalización Sabes que estás encima del control de relleno, porque la cruz blanca que es normalmente el ratón se cambia a color negro Ahora pulsa la tecla de mayúsculas (no la de bloq. mayús) y sin soltarla pulsa el botón izquierdo del ratón y arrástralo hacia abajo o hacia la derecha, verás que se insertan filas o columnas. Copiar en Excel XP arrastrando con Ctrl 18 Se puede copiar una celda arrastrando con Ctrl desde alguno de los 4 lados del borde de la celda activa. Personalización Si no se emplea el Ctrl la celda no se copia, se mueve. Edición, Rellenar, Series 19 Poner el primer número y arrastrar el controlador de relleno con la tecla Ctrl pulsada. Esto nos dará una Personalización serie con incrementos unitarios. Algunas teclas de navegación Ctrl + Intro Ir a A1 Fin - Flecha abajo Última celda de un rango. Ctrl + Flecha abajo Última celda de un rango. Ctrl + Fin Celda inferior derecha al área activa 20 Alt + AvPg Página a la derecha Teclado Shift + Barra de desplazamiento vertical u Permite desplazamientos más rápidos horizontal Ctrl + AvPg Avanza entre las hojas de un libro Par a ir al extremo superior de un bloque de datos, haga doble clic en el extremo superior de la celda seleccionada. Con los demás bloques puede ir a los demás extremos del bloque. Y si lo hace mientras presiona la tecla Shift podrá seleccionar rangos. Algunas abreviaturas de teclado Ctrl + C Copiar 21 Ctrl + V Pegar Teclado Ctrl + X Cortar Ctrl + Z Deshacer Al pulsar Intro se desplaza el cursor hacia abajo, pero se puede cambiar 22 Teclado Puede cambiarlo en Herramientas, Opciones, Modificar, Mover selección después de ENTRAR. 23 Cálculo automático en la barra de estado Personalización Al seleccionar un rango de números vemos su suma en la barra de estado (abajo). Pulsando sobre ella con el botón derecho del ratón podemos cambiar la suma por un promedio, el máximo, el mínimo o contar los elementos seleccionados en el rango.
  • 5. <!--[if ! vml]--><!--[endif]--> F11 24 Gráficos Pulsando F11 sobre una serie de datos se construye un gráfico completo y de forma automática. Proteger celdas Con Formato, Celda, Protege, quitar la casilla de verificación en Bloqueada se consigue que en estas 25 celdas se pueda escribir después de ejecutar Herramientas, Proteger, Proteger hoja. Personalización Con TAB se puede saltar de una a otra celda de las desbloqueadas. Y con Mayúsculas + TAB se salta hacia atrás. Ocultar la formula en una celda 26 Con Formato, Celda, Proteger, Oculta se marcan las celdas cuyas fórmulas o contenido visto en la línea de edición se desee Personalización ocultar. Después se ha de proteger la hoja, con Herramientas, Proteger, Proteger hoja. Copiar una hoja Para copiar una hoja completa dispone de dos sistemas: El primero y más fácil es señalar con el ratón la pestaña de la hoja a copiar, pulsar Ctrl y sin soltar arrastrar la pestaña con el ratón. Al soltar se habrá duplicado completamente la hoja. Si la hoja a copiar 27 Personalización se llamaba 'Hoja 1', la nueva hoja se llamará 'Hoja 1 (2)' Es segundo método consiste en situar el ratón en el cuadradito que queda como intersección del indicador de filas y columnas. Esto selecciona la hoja completamente. Seguidamente se copia al portapapeles, por ejemplo con Ctrl + C. Se inserta una hoja nueva y pulsando sobre ella en el citado cuadradito se pega el contenido del portapapeles, por ejemplo con Ctrl + V. Insertar Comentarios 28 Se pueden insertar comentarios en las celdas. Para ello, pulse con el botón derecho del ratón y elija 'Insertar Comentario'. Personalización Puede verlos completamente, solo la indicación de que la celta tiene un comentario, o no verlos en absoluto según elija una opción u otra en Herramientas, Opciones, Ver, Comentarios. 29 Texto con diversos formatos en una misma celda Personalización Se pueden dar distintos formatos a los caracteres o palabras de una misma celda. Por ejemplo: puede poner en una celda la siguiente expresión: Volumen (m3) Véase el distinto color de la fuente y el 3 como superíndice.
  • 6. Volumen (m3) Esto se consigue señalando en la barra de fórmulas el carácter o caracteres que se quieren cambiar y aplicándoles el formato deseado. Trabajar simultáneamente en varias hojas Antes de escribir texto, formulas, dar formato, etc.. en varias hojas simultáneamente ha de señalarlas primero. Si son un conjunto de hojas correlativas, señale la primera haciendo clic con el ratón sobre la pestaña 30 que indica el nombre de la primera y haga Mayúsculas + clic en la última. Personalización Si las hojas no son consecutivas selecciones la primera con un clic y las restantes con un Ctrl + clic en cada una. Cuando haya terminado de introducir la información y formatos comunes haga clic en cualquier pestaña y así se desactivará el modo de trabajo conjunto. Escribir en varias celdas simultáneamente 31 Señale las celdas donde quiere escribir una misma expresión. Incluso si son de rangos separados. Escriba dicha expresión. Y Personalización valide su introducción con Ctrl + Intro. Ver todas las fórmulas de una hoja 32 Se consigue pulsando Alt + º (esto es, la tecla Alt y simultáneamente la tecla de 1º que está a la Personalización izquierda del número 1). Para volver a la situación anterior volver a pulsar. También se puede conseguir mediante: Herramientas, Opciones, Ver, Fórmulas. Borrar Con el comando Edición, Borrar se puede elegir entre Todo, Formatos, Contenido (Supr) o 33 Comentarios. Personalización Para borrar un rango primero seleccione el rango y luego presione Shift mientras arrastra con el ratón el indicador de relleno hacia el extremo superior izquierdo del rango. Si no presiona Shift conseguirá borrar el contenido pero no los formatos. La fuente por defecto en Excel es la Arial 10 pero se puede cambiar Se puede cambiar para todos los libros nuevos mediante: Herramientas, Opciones, General y elegir la 34 Fuente Estándar y el tamaño. Personalización Pero también se puede cambiar la fuente sólo en el libro activo de la siguiente forma. Activar el libro en el que se quiere cambiar la fuente por defecto. Ejecute Formato, Estilo y dentro del formato de estilo Normal elegir Modificar, Fuente y proceder a cambiar la fuente. Finalmente Aceptar. Plantillas *.xlt Las plantillas permiten predefinir formatos, estilos, textos, fórmulas, barras de herramientas personalizadas e incluso macros, que se utilizarán en todos los nuevos libros abiertos (si la plantilla se llama libro.xlt) u hojas nuevas insertadas (si la plantilla se llama hoja.xlt). También pueden existir otras plantillas para diferentes usos, por ejemplo, para predefinir una factura, cierto informe mensual, un balance, etc. La plantilla de libro predeterminada (libro.xlt) y la plantilla de hoja predeterminada (hoja.xlt) se han de 35 grabar como plantilla en el directorio INICIAR que para la versión XP suele estar en: Personalización C:Documents and SettingsnombreusuarioDatos de programaMicrosoftExcelINICIAR o bien en: C:Documents and SettingsnombreusuarioDatos de programaMicrosoftExcelXLSTART Tanto las plantillas que tenga en la carpeta de inicio predeterminada de Excel como las que haya definido en la carpeta de plantillas (C:Documents and SettingsnombreusuarioDatos de programaMicrosoftPlantillas) las tendrá disponibles cuando haga Archivo, Nuevo y salga el Panel de Tareas y en el elija Plantillas Generales. 36 Puede trabajar con Estilos Personalización
  • 7. En Formato, Estilo puede modificar el estilo normal o crear nuevos estilos, pero sólo estarán disponibles en el Libro Activo. Si se desea que los estilos estén disponibles de forma permanente sigua los siguientes pasos: Abra el libro cuyos Estilos quiere guardar permanentemente. Abra un libro nuevo y combine los Estilos en éste. Ejecute Archivo, Guardar como, elija como tipo Plantilla (*.xlt). Escriba como nombre de fichero Libro.xlt o Hoja.xlt y guárdelo en la carpeta de inicio de Excel (C:Documents and SettingsnombreusuarioDatos de programaMicrosoftExcelINICIAR). De esta forma cada vez que abra un libro u hoja nuevos se dispondrá de estos Estilos. Puede convertir el estilo de una celda en un tipo de estilo personalizado. Sitúese en la celda patrón y elija Formato, Estilo y cambie el nombre por uno nuevo de su elección. Puede transferir los estilos de un libro a otro mediante Formato, Estilo, Combinar. Para ello abra los dos ficheros (o más) y ejecute los pasos señalados desde el fichero hacia el que quiere llevar los nuevos estilos. Libros que se abren al iniciar Excel Los libros que coloque en la carpeta de inicio de Excel: C:Documents and SettingsnombreusuarioDatos de programaMicrosoftExcelINICIAR 37 o bien en Personalización C:Documents and SettingsnombreusuarioDatos de programaMicrosoftExcelXLSTART Se abrirán al iniciar Excel. También puede definir una carpeta de inicio de Excel en Herramientas, Opciones, General, "Al inicio, abrir todos los libros en:" La función =CELDA La función CELDA es la típica función que sirve para varias cosas según que argumentos se utilicen. Si se usa con "nombrearchivo" 38 =CELDA("nombrearchivo") Función proporciona el nombre y ruta del archivo (siempre que esté grabado). En la ayuda hay un error y en lugar de poner "nombrearchivo" pone "archivo". Otro argumento interesante es "contenido". =CELDA("contenido";A3) Proporciona el contenido de la celda A3. Exportar un módulo 1. Pase al editor de visual basic y active el módulo a exportar. 39 2. Seleccione Archivo/ Exportar archivo. Aparece un cuadro de diálogo. Macros 3. En cuadro de edición Nombre de Archivo, teclee el nombre para el archivo donde se guardará el módulo, por ejemplo "General.Bas", observe que .BAS es la extensión de estos archivos. 4. Pulse sobre el botón Guardar. Importar un módulo 1. Active el editor Visual Basic. 40 2. Seleccione Archivo/ Importar Archivo. Aparece un cuadro de diálogo. Macros 3. Seleccione en la lista Buscar en: la carpeta donde tiene ubicado el archivo a importar. 4. Una vez localizada la carpeta, seleccione el archivo a importar (General.Bas en el ejemplo) y pulse sobre Abrir. La cláusula Private Puede anteponer la cláusula private a todos los procedimientos y funciones que sean llamados sólo desde 41 el mismo módulo, es una forma de ahorrar memoria y hacer que el programa corra un poco más rápido. Si Macros necesita llamar un procedimiento o función desde otro módulo, nunca debe precederlo por la cláusula private, recuerde que esta cláusula restringe el ámbito de utilización de un procedimiento a su propio módulo. Inspección rápida de variables 42 Macros Cuando ejecuta un programa paso a paso, si sitúa el puntero de ratón sobre una variable, se muestra el valor de la misma. 43 Modificar el valor de una variable en tiempo de ejecución Macros
  • 8. A veces resulta interesante cambiar el valor de alguna variable cuando se está ejecutando el programa, para ver que ocurre si coge determinados valores, para terminar un bucle, etc. Para ello agregue a la ventana de inspección la variable que desee cambiar, cambie su valor sobre la propia ventana de inspección y continúe la ejecución del programa. Ventana Inmediato 44 Puedes inspeccionar variables desde esta ventana anteponiendo la palabra print antes de la variable, o Macros el signo ?. Debug.Print Esta expresión permite efectuar la depuración del programa de forma más cómoda. Se introduce en un programa antecediendo a una variable que se desea comprobar en la ventana Inmediato. De esta forma conseguiremos ver todos los valores que toma la variable cada vez que el programa pasa por este comando. Se ven en la Ventana Inmediato [Ctr+G]. . Ejemplo: Sub Dos_a_la_diez() 45 Dim i As Integer Macros Dim t As Integer t=1 For i = 1 To 10 t=t*2 Debug.Print "Dos a la " & i & " = " & t Next MsgBox t End Sub Después de efectuada la depuración se quita la línea que contiene el comando Debug.Print. Propiedad ListFillRange del ComboBox 46 Con esta propiedad deberemos definir los elementos que debe mostrar la lista, debe especificarse el Macros rango que contiene los elementos a mostrar, el rango debe ser una columna (o dos , o tres, etc.). Propiedad LinKedCell del ComboBox En esta propiedad debe especificar en que celda debe copiarse el elemento seleccionado de la lista. Cuidado con esta propiedad, tenga en cuenta que los elementos de la lista son tratados como datos de 47 tipo String aunque contenga números o fechas, por lo que en estos casos, a veces será necesario aplicar Macros funciones de conversión de datos antes que el dato se copie en la hoja. Por ejemplo, si alguna vez construye una lista con números verá que el dato seleccionado se alinea a la derecha, si son fechas, no se muestra con el formato correspondiente. Propiedad ListIndex del ComboBox Mediante esta propiedad podremos saber que elemento de la lista es el seleccionado por su número de orden. Es decir, si está seleccionado el primero, ListIndex valdrá 0, si está seleccionado el segundo 48 valdrá Macros 1, etc. Si no hay ningún elemento seleccionado valdrá -1. Tenga en cuenta que esta propiedad sólo está disponible en tiempo de ejecución, es decir la podremos leer mientras esté funcionando el programa, no se puede establecer en modo diseño, observe que no aparece en la ventana propiedades del cuadro combinado. 49 La función =TEXTO Función Esta función permite convertir un valor numérico en un texto. Su función contraria es =VALOR. Al escribir un número en una celda queda alineado a la derecha, si se escribe como texto
  • 9. (anteponiéndole una comilla simple) quedará alineado a la izquierda. Ejemplo: '54 La función TEXTO tiene dos argumentos que según la ayuda son: =TEXTO(valor;formato) valor: es el número que queremos convertir a texto formato: es el formato que queremos darle. Es un argumento optativo Pero la ayuda no se corresponde con la realidad de la función, ya que en la práctica esta función tiene los argumentos cambiados de orden. Pruebe =TEXTO(;"43") Pero si prueba =TEXTO("43") obtendrá un error Curiosidades de alguna funciones con valor propio Algunos nombres de función tienen valor propio si se escriben un una celda y sin argumentos. O al menos eso es lo que he podido comprobar en la versión XP. Ponga en una celda cualquiera +PRECIO y al pulsar intro verá que aparece un valor. A mi me da -1965686714. Las funciones que he visto que tienen valor propio son las siguientes: 50 =PRECIO -1965686714 Función =AMORTIZ.LIN 1477378140 =CUPON.DIAS -1799028673 =DURACION -1525481390 =VNA.NO.PER -269746088 =DIAS.LAB 270991416y muchas más. Por lo que veo, son las que aparece al ampliar las funciones al instalar las complementarias, con Herramientas, Complementos, Herramientas para Análisis. Cambiar el nombre de un Móludo 51 Al insertar módulos en el Editor de Visual Basic, se utilizan los nombres: Módulo 1, Módulo 2, etc. Macros Podemos cambiar el nombre el un módulo en sus propiedades (F4). La única propiedad de un Módulo es 'name'. 52 Nombre de usuario: UserName Macros Vamos a crear una función que proporcione el nombre de usuario. Primero utilizando la Grabadora de Macros. Haga lo siguiente. Active la Grabadora y luego seleccione Herramientas, Opciones, pestaña General. Realice un cambio en el nombre de usuario. Cerrar la ventana de Opciones pulsando en Aceptar. Y detener la Grabadora. La macro obtenida será la siguiente: Sub Macro1() ' ' Macro1 Macro ' Macro grabada el 06/08/2004 por Adolfo ' ' With Application .UserName = "Adolfo Aparicio" .StandardFont = "Arial" .StandardFontSize = "10" .DefaultFilePath = "C:Documents and SettingsAdolfoMis documentos" .EnableSound = False .RollZoom = False End With End Sub Ahora vamos a crear la función =Usuario siguiendo el procedimiento inverso.
  • 10. Funcition Usuario() Usuario = Application.UserName End Function Puede probarla. La encontrará en la categoría de Funciones Definidas por el usuario. Extensiones de los nombres de macro 53 - Módulos de clase. Extensión .cls. Macros - Formularios. Extensión .frm. - Módulos estandar. Extensión .bas. Exit Sub, Exit Function 54 Macros Se usan eventualmente para salir de un procedimiento o función. Macro que pregunta si se desea salir de la aplicación Sub SalirAplic() If MsgBox("¿Quiere salir de la aplicación", vbQuestion + vbYesNo, "Ultima pregunta") = vbYes 55 Then Macros Application.Quit End If End Sub Llamada a un procedimiento [Call] NombreProc [(lista de argumentos)] La palabra clave Call es opcional para llamar a un procedimiento, salvo que existan argumentos, en cuyo caso es obligatoria. Los argumentos deben ir entre paréntesis y pueden ser valores o variables. Sub Suma(a As Byte, b As Byte) MsgBox "La suma es " & a + b End Sub Sub sumar() Call Suma(3, 4) 56 End Sub Macros Para llamar a un procedimiento de otro módulo NombreDelMódulo.NombreDelProcedimiento Ejemplo: ThisWorkbook.SalirAplic Para llamar a un procedimiento de otro libro Application.Run "NombreDelLibro!NombreDelMódulo.NombreDelProcedimiento" Ejemplo: Application.Run "Informe.xls!ThisWorkbook.SalirAplic.xls" Al ejecutar este comando, el libro Informe.xls debe estar abierto. Proteger con contraseña las macros 57 Alt + F11 Macros Herramientas => Propiedades de VBAProject => Protección => Bloquear proyecto para visualización => Contraseña 58 Convertir una función en un Complemento Macros Podemos hacer que una función creada por el usuario este disponible en todos los Libros. Para ello,
  • 11. hemos de convertir el Libro que contiene la función en un Complemento. Los Complementos disponibles se ven haciendo: Herramientas => Complementos. Excel carga los complementos guardados en el directorio donde tengáis instalado MsOffice y luego en una carpeta que varía con la versión que tengas instalada. Para XP puede ser: C:Documents and SettingsAdolfoDatos de programaMicrosoftAddIns Para convertir el libro que contiene nuestra Función en un Complemento, bastara ir al Menú Archivo/Guardar como y elegir el formato Complemento de Microsoft Excel (*.xla). Si lo guardáis en el directorio que tiene tu versión asignado estará siempre disponible. Un aspecto a tener en cuenta es que los Complementos no son editables, es decir no podrás modificar o añadir mas Funciones. Por eso es recomendable guardar primero el Libro en formato *.xls y luego como *.xla. Hacer referencia a un RANGO Sintaxis para hacer referencia a un Rango: Si el rango está en la misma Hoja: Rango Si está en otra Hoja del mismo Libro: 'Nombre de Hoja'!Rango Si está en una Hoja de otro Libro, y el Libro se encuentra en la misma carpeta que el actual: '[Nombre de Libro.xls]Nombre de Hoja'!Rango Si está en una Hoja de otro Libro, y el Libro se encuentra en diferente carpeta que el actual: 59 'c:CarpetaSubCarpeta[Nombre de Libro.xls]Nombre de Hoja'!Rango Edición Si el rango está en otro ordenador conectado al nuestro por una Intranet: 'ServidorCarpeta[Nombre de Libro.xls]Nombre de Hoja'!Rango Si el rango está en otro ordenador conectado al nuestro por Intrernet: 'http://www.servidor.com/Carpeta/[Libro.xls]Hoja'!Rango Los apóstrofes (') son necesarios si existen espacios. Ejemplo: Prueba a poner esto en una celda de una hoja de Excel cualquiera: =BUSCARV(200;'http://www.fcjs.urjc.es/finan/[busquedas.xls]Hoja1'!tab1;2) Si todo va bien, y tienes acceso a Internet verás como respuesta la letra B. Para localizar la última celda de una lista Sub Final() While ActiveCell.Value <> "" 60 Macros ActiveCell.Offset(1, 0).Select Wend End Sub 61 Abrir un libro existente: Macros Sub AbrirLibro() Workbooks.Open ("C:Mis documentosEjemplo.xls") End Sub Activar un libro ya abierto: Sub ACtivarLibro() Workbooks("Ejemplo.xls").Activate End Sub
  • 12. Crear un libro nuevo: Sub NuevoLibro() Workbooks.Add End Sub Borrar un registro de una tabla que contenga un dato concreto Sub BorrarFilas() While ActiveCell.Value <> "" If ActiveCell.Value <> "Cadiz" Then ActiveCell.Offset(1, 0).Range("A1").Select 62 Else Macros Selection.EntireRow.Delete End If Wend End Sub Creación de una Fórmula personalizada Cálculo del término amortizativo de un préstamo tipo francés (de pagos constantes). Similar a la fórmula =PAGO pero en este caso usando tipo nominal y con fraccionamiento. Function Termino(Principal@, Años As Byte, tipo_nominal!, fraccionamiento As Byte) Dim im! 'Tipo efectivo del subperiodo im = tipo_nominal / fraccionamiento / 100 63 Termino = Principal * im / (1 - (1 + im) ^ (-Años * fraccionamiento)) Macros End Function Pongamos un ejemplo para un principal de 100.000 €, 10 años, tipo nominal anual del 6%, con fraccionamiento mensual. En este caso, al ser el fraccionamiento mensual el término obtenido es la mensualidad. Sub ejemplo() End Sub Macro que cierra Excel Se puede asociar a un botón o a un icono. 64 Sub Auto_Close() Macros Application.Quit End Sub Macro que elimina las barras de desplazamiento Sub Desbarra() 65 With ActiveWindow Macros .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With End Sub 66 Macro que protege el libro y la hoja Macros
  • 13. Sub Blindaje() ActiveWorkbook.Protect Password:="1234" Sheets("Hoja1").Protect Password:="1234" End Sub La función =EXTRAE y la función =ENCONTRAR Si en B6 pones el nombre de una persona, por ejemplo: "Andrés Suarez Oliveira" la siguiente función 67 obtiene las tres iniciales (ASO). Función =IZQUIERDA(B6;1)&+EXTRAE(B6;ENCONTRAR(" ";B6)+1;1)&EXTRAE(B6;+ENCONTRAR(" ";B6;ENCONTRAR(" ";B6)+1)+1;1) La función =RESIDUO permite calcular la parte Fraccionario En Excel disponemos de =ENTERO que calcula la parte entera, pero no disponemos de FRAC que calcularia la parte fraccionaria. Para calcular la parte Fraccionaria deberíamos usar uno de estos dos 68 métodos: Función =A1-ENTERO(A1) =RESIDUO(A1;1) Macro que borra los ceros de un rango Sub BorrarCeros() For Each Celda In Range("C11:G24") 69 If Celda.Value = 0 Then Celda.ClearContents Macros Next End Sub Si sólo se quieren ocultar los ceros se ha de poner formato de celda personalizado de #.### Macro que reemplaza una palabra por otra Sub RemplazarPalabra() Dim Palabra As String Dim Hoja As Long Palabra = Trim(InputBox("Introduzca la palabra a buscar: ")) For Hoja = 1 To Sheets.Count 70 Sheets(Hoja).Activate Macros Cells.Replace What:=Palabra, Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Next Hoja End Sub En este caso reemplazamos por "", lo que supone borrar la palabra buscada. Calculo del NIF Esta función calcula el NIF (Número de Identificación Fiscal) utilizado en España. 71 Function nif(dni As Long) As String Macros nif = Mid("TRWAGMYFPDXBNJZSQVHLCKE", (dni Mod 23) + 1, 1) End Function 72 Función que calcula la fila que ocupa cierto valor en una tabla Macros Está pensado para que la matriz se ponga comenzando en la celda A1, sin encabezado y sin que se repitan los elementos. Function DimeFila(Rango As Range, Valor_a_buscar) As Integer For Each c In Rango
  • 14. If c.Value = Valor_a_buscar Then DimeFila = c.Row End If Next End Function Para poner el nombre del fichero en una celda =EXTRAE(CELDA("NOMBREARCHIVO";A1);ENCONTRAR("["; CELDA("NOMBREARCHIVO";A1))+1;+(ENCONTRAR("]"; 73 Función CELDA("NOMBREARCHIVO";A1)))-ENCONTRAR("["; CELDA("NOMBREARCHIVO";A1))-1) Requiere grabar el fichero. Las 4 líneas anteriores son una misma fórmula. Para poner el nombre de la hoja en una 74 celda=EXTRAE(CELDA("nombrearchivo");ENCONTRAR("]";CELDA("nombrearchivo"))+1;255) Función Requiere grabar el fichero. Función que muestra la fórmula de una celda Devuelve la fórmula que contiene una celda en lenguaje local 75 Function DisplayCellFormula(InputCell As Range) As String Macros DisplayCellFormula = InputCell.FormulaLocal End Function Si se quita la palabra 'Local' devuelve la fórmula en inglés. Determinación de si un número es primo o no es primo Sub primo() Dim primo As Boolean Dim n As Long Dim d As Long n = Val(InputBox("Introduce un número natural", "Entrada de Datos")) d=2 primo = True Do While primo And d < n If n Mod d = 0 Then 76 Macros primo = False End If d=d+1 Loop If primo Then MsgBox (n & " es primo") Else MsgBox (n & " no es primo") End If End Sub 77 Activar o Desactivar el empleo de la función IMPORTARDATOSDINAMICOS Tablas Dinámic Al intentar operar con formulas que hacen referencia a celdas que provienen de una tabla dinámica con la versión XP de Excel nos encontramos con que automáticamente nos pone la función:
  • 15. IMPORTARDATOSDINAMICOS, y nosotros preferiríamos que esto funcionara como antes. Esto se debe a que desde Office XP la función IMPORTARDATOSDINAMICOS se activa por defecto cuando nos referimos a celdas que forman parte de una tabla dinámica. Pero podemos desactivarla. Para ello primero tendremos que llevar hasta alguna de las barras de herramientas un "botón", llamado "General GetPivotData". Para llevar este botón hasta una barra de herramientas sigue estos pasos. Selecciona: Ver, Barra de Herramientas, Personalizar. Ve a la pestaña "Comandos". Ahora selecciona la Categoría "Datos" y en la ventana derecha (Comandos) busca el botón "General Get Pivot Data" (está cerca del final, aproximadamente el octavo empezando por el final). Lleva este botón a la barra de herramientas de Excel que prefieras (esto se hace arrastrando el icono y soltándolo en alguna de las barras de herramientas). Ahora, todo lo que tendremos que hacer es pinchar este botón para activar / desactivar la función IMPORTARDATOSDINAMICOS, que viene activada por defecto. Factorial Function facto(n) Dim i As Integer facto = 1 i=0 78 Macros Do i=i+1 facto = facto * i Loop While i <> n End Function 79 Inicializar una matriz Macros Se inicializa con ERASE 'En este caso se ponen todos los valores a Empty Sub test() Dim c(1 To 20, 1 To 10) As Variant For i = 1 To 20 For j = 1 To 10 c(i, j) = RND Next j Next i MsgBox c(1,1) Erase c MsgBox c(1,1) End Sub 'En este caso se pone la variable c a su estado inicial 'Borrandose los valores, las dimensiones y recuperandose 'la memoria usada.
  • 16. Sub test1() Dim c As Variant c = ActiveSheet.Range("A1:J20").Value MsgBox c(1, 1) Erase c 'Esto dara error ya que no hay ninguna matriz MsgBox c(1, 1)Para evitar que durante la ejecución de una macro se vean todos los movimientos y cambios del cursor, para evitar las "chirivitas" que se ven al ejecutar una macro: End Sub Evitar los movimientos de pantalla mientras se ejecuta una macro Para evitar que durante la ejecución de una macro se vean todos los movimientos y cambios del cursor, para evitar las "chirivitas" que se ven al ejecutar una macro: Al principio de la macro escribe 80 Macros Application.ScreenUpdating = False y al final Application.ScreenUpdating = True Formula que referida siempre a un mismo rango =SUMA(INDIRECTO("A1:B2")) 81 Función Esta expresión permite sumar siempre el rango indicado aunque dicho rango se mueva a otra zona de la hoja. While...Wend Esta estructura permite ejecutar las instrucciones contenidas mientras la condición sea verdadera. La siguiente macro posiciona el cursor en la última celda llena de la columna A de la Hoja1. Sub final1() i=1 While Worksheets("Hoja1").Cells(i, 1).Value <> "" Worksheets("Hoja1").Cells(i, 1).Select i=i+1 Wend 82 End Sub Macros Otra variante: Sub final2() While ActiveCell.Value <> "" ActiveCell.Offset(1, 0).Select Wend ActiveCell.Offset(-1, 0).Select End Sub La segunda macro requiere posicionar inicialmente el cursor en la primera celda llena.