En ocasiones necesitamos calcular la fecha que corresponde a cierta cantidad de das
posteriores a la fecha actual, por ejemplo, qu fecha ser dentro de 10 das? Afortunadamente este tipo de clculo es muy fcil de realizar en Excel. Determinar una fecha final Si queremos conocer la fecha de conclusin de una tarea y sabemos su fecha de inicio y su duracin, entonces ser tan simple como hacer una suma en Excel, por ejemplo: =HOY() + 10 La funcin HOY nos devolver la fecha actual y al sumar el valor 10 obtendremos la fecha que corresponde a diez das posteriores al da de hoy. Este clculo funciona para cualquier fecha y lo puedes observar en el siguiente ejemplo donde hago la misma operacin pero con diferentes fechas de inicio y duracin:
Cmo es que Excel puede calcular una fecha futura con una simple suma? Para poder comprender mejor este comportamiento de la herramienta debemos conocer la manera en que Excel trabaja con fechas. Las fechas en Excel son nmeros Los clculos de fechas son muy sencillos de realizar porque las fechas en Excel son en realidad nmeros enteros. Si tienes tiempo utilizando Excel sabrs que todas las celdas tienen un valor, y que dicho valor puede desplegarse en pantalla de una manera diferente lo cual sucede con las fechas: su valor es numrico pero se despliega en pantalla con un formato que estamos acostumbrados a reconocer como fecha. Por ejemplo, si en una celda de Excel colocas el valor 1 y posteriormente le das el formato de fecha corta, observars que Excel cambia el valor desplegado de la celda por la fecha 01/01/1900.
De esta manera sabemos que la fecha 01/01/1900 tiene asignado el nmero 1 y por lo tanto cualquier otra fecha ser un nmero entero que representar la cantidad de das que han transcurrido a partir del 01/01/1900. En la siguiente imagen he agregado una columna donde he copiado las fechas del ejemplo anterior y he cambiado su formato a General para ver el nmero entero que le corresponde a cada fecha. Posteriormente, he abierto el cuadro de dilogo Formato de celdas, donde al seleccionar la categora General se muestra el nmero entero correspondiente a la celda D2:
Observa que la fecha final tiene asignado el nmero 41285 que es precisamente la suma de 41275 + 10. Es por esta razn que los clculos con fechas son muy fciles de realizar para Excel ya que realmente estar trabajando con nmeros enteros que podr sumar o restar fcil y rpidamente. Ejemplo: Calcular la fecha de parto Como hemos aprendido hasta ahora, si sumamos un valor entero a una fecha estaremos sumando cierta cantidad de das. Ahora hagamos un ejemplo con mayor grado de complejidad y que es calcular la fecha de parto de un beb a partir de una fecha determinada. Para realizar este clculo utilizar la Regla de Naegle que indica que la fecha probable de parto se obtiene de la siguiente manera: A partir de la fecha de la ltima regla de la mujer sumar un ao, restar tres meses y finalmente sumar 7 das. Hagamos este clculo paso por paso. Para sumar un ao a la fecha inicial podra sumar el valor 365, pero har uso de las funciones FECHA, AO, MES y DIA para comprobar su funcionamiento. As que considera la siguiente frmula: =FECHA(AO(A2)+1, MES(A2), DIA(A2)) La funcin FECHA genera una fecha vlida en Excel a partir de los valores numricos del ao, mes y da. En este caso obtendr el ao de la fecha original que se encuentra en la celda A2 y le sumar el valor 1 con lo cual obtendr de inmediato el valor del ao siguiente. Posteriormente indicar tanto el mes como el da de la fecha original. Observa el resultado de esta frmula:
El siguiente paso para calcular la fecha de parto indica que debemos restar tres meses al resultado anterior y para eso utilizar de nueva cuenta la funcin FECHA de la siguiente manera: =FECHA(AO(B2), MES(B2)-3, DIA(B2)) Observa que en esta ocasin ser el segundo argumento de la funcin FECHA el que sufra una modificacin para indicar que deseo restar tres meses a la fecha original. Como resultado obtendremos la fecha deseada:
Como ltimo paso, el procedimiento de clculo nos indica que debemos sumar 7 das a la fecha anterior por lo que ser necesario hacer dicha suma en el tercer argumento de la funcin FECHA tal como lo puedes observar en la siguiente imagen:
De esta manera hemos calculado una fecha futura a partir de una fecha inicial conociendo la cantidad de aos, meses y das a sumar o restar. Y como seguramente lo estars deduciendo, todo el clculo anterior se puede hacer con una sola frmula de la siguiente manera: =FECHA(AO(A2)+1, MES(A2)-3, DIA(A2)+7) Calcular una fecha futura en das laborables Los ejemplos que hemos desarrollado hasta ahora hacen los clculos con das naturales es decir, tomando en cuenta todos los das del calendario. Sin embargo, es muy comn vernos en la necesidad de calcular una fecha futura pero considerando los das de descanso semanal. Por ejemplo, supongamos que para los datos de nuestro primer ejemplo necesitamos sumar la duracin en das laborables a partir de la fecha de inicio, es decir, sin contabilizar los sbados y los domingos. Para lograr este tipo de clculo podemos utilizar la funcin DIA.LAB de la siguiente manera:
Debes tener cuidado de no confundir la funcin DIA.LAB con la funcin DIAS.LAB ya que la diferencia es solamente una letra. La funcin DIA.LAB calcular una fecha a partir de un nmero especificado de das laborables. Tambin es importante recordar que esta funcin siempre considerar el fin de semana como los das sbado y domingo y no hay nada que podamos hacer para modificar dicho comportamiento. Pero si necesitas usar das de descanso diferentes, entonces debes utilizar la funcin DIA.LAB.INTL que en su tercer argumento nos permitir elegir de un listado de opciones para los das de descanso:
Si elijo el nmero 17 para nuestros datos de ejemplo, se calcular la fecha final considerando el da sbado como el nico da de descanso semanal y por lo tanto obtendremos el siguiente resultado:
Es as como al utilizar ambas funciones, DIA.LAB y DIA.LAB.INTL, podemos calcular una fecha futura en Excel considerando los das de descanso semanal. La primera funcin tiene establecidos los das de descanso como sbado y domingo mientras que la funcin DIA.LAB.INTL nos permitir elegir los das de descanso que mejor convengan para nuestros clculos. Determinar una fecha de vencimiento en Excel Tengo una columna de datos con fechas de inicio de contratos y una segunda columna con la duracin de cada uno de ellos. Necesito una tercera columna que calcule la fecha de vencimiento del contrato. Duracin en das Si la columna de duracin est en das, entonces el clculo es muy sencillo porque solamente necesito sumar ambas columnas para obtener la fecha de vencimiento.
Duracin en meses Por el contrario, una duracin en meses nos obliga a utilizar algunas funciones para obtener el resultado correcto. La primera funcin que utilizaremos ser la funcin FECHA, la cual nos ayuda a obtener una fecha en base a un nmero de ao, mes y da. Considera la siguiente frmula: =FECHA(2011, 12, 14) Con esta frmula obtendremos una fecha para el 14 de diciembre del 2011. Esta funcin ser clave para calcular la fecha de vencimiento de nuestro ejemplo porque es precisamente el segundo parmetro de la funcin (los meses) donde haremos la suma de la duracin del contrato para obtener la fecha de vencimiento correcta. Iremos paso por paso. El primer parmetro de la funcin FECHA es el ao por lo que utilizar la funcin AO para extraer el ao de la fecha de inicio de la siguiente manera:
El segundo paso en este procedimiento es extraer el mes de la fecha inicio utilizando la funcin MES y adems sumarle el nmero de meses de la duracin. Esto har que Excel sume los meses necesarios que necesitamos para llegar a la fecha de vencimiento.
El paso final ser extraer los das de la fecha de inicio con la funcin DIA.
Excel har los clculos adecuados por nosotros y nos devolver la fecha de vencimiento al transcurrir el nmero de meses especificado.
Es importante notar que la funcin FECHA ajusta automticamente el ao en caso de que sea necesario. En nuestro ejemplo, al sumar 2 meses a la fecha 30 de diciembre del 2011 forzosamente tendra que dar como resultado una fecha en el ao 2012 y Excel hace el clculo correctamente. Duracin en aos En caso de que tuviera la duracin del contrato en aos, entonces debo hacer un procedimiento similar al anterior solo que la suma de la duracin se debe incluir en el primer argumento de la funcin FECHA que es el parmetro para el ao. Calcular el tiempo transcurrido Calcular la diferencia entre dos fechas en Excel es algo muy sencillo. En este artculo mostrar cmo calcular ese tiempo transcurrido entre ambas fechar y presentar el resultado en diferentes unidades de tiempo como aos, meses, semanas, etc. Supongamos que tenemos la fecha de nacimiento de una persona y queremos calcular el tiempo que ha vivido hasta el da de hoy. Observa la siguiente imagen:
Tiempo transcurrido en das Puede observar que la lnea que se encuentra sombreada es la de los das transcurridos y la razn principal es porque esa es la operacin ms sencilla de todas. Para obtener la cantidad de das entre dos fechas es suficiente con realizar una resta entre ambas. En este ejemplo la frmula utilizada es: =B3-B2 Excel regresar el tiempo transcurrido en das utilizando decimales y por motivos de presentacin se los he removido, sin embargo t puedes dejar el formato con decimales si as lo deseas. Calcular las horas, minutos y segundos El siguiente paso natural es calcular las horas, lo cual es sumamente sencillo una vez que tengo el nmero de das. Solamente debo multiplicar el resultado en das por 24: =A8 * 24 Y una vez que tengo las horas puedo obtener los minutos haciendo una multiplicacin por 60 que es la cantidad de minutos en una hora: =A9 * 60 Finalmente, y como has de suponer, para obtener los segundos multiplico el resultado anterior de nuevo por 60: =A10 * 60 y as obtengo los segundos transcurridos entre ambas fechas. Tiempo en semanas Como puedes observar el clculo de das es la parte central para el resto de clculos y las semanas no son la excepcin ya que las podemos obtener fcilmente realizando una simple divisin: =A8 / 7 Das laborables El clculo de das laborales entre dos fechas ya no lo podemos realizar con una simple operacin aritmtica, pero afortunadamente existe la funcin DIAS.LAB la cual realiza el clculo por nosotros, solamente es necesario especificar ambas fechas como los argumentos de la funcin y Excel nos devolver el resultado correcto: =DIAS.LAB(B2, B3) Meses y aos Obtener los meses es una tarea un tanto ms complicada, porque los meses no tienen la misma cantidad de das. Lo mismo sucede con los aos ya que tenemos los aos bisiestos los cuales tienen un da adicional. Sin embargo Excel provee de una funcin que nos ayuda con este clculo, pero debo advertirte que sta no es una funcin tradicional, de hecho no la podrs encontrar en la documentacin de Excel y sin embargo la podremos utilizar. La funcin es conocida como la funcin SIFECHA y aunque en este artculo no entrar en los detalles de sta funcin observa cmo me ayuda a obtener los meses transcurridos entre dos fechas:
De una manera similar, esta funcin obtiene los aos transcurridos:
Espera el siguiente artculo donde hablar con mucho ms detalle sobre la funcin SIFECHA la cual ha permanecido oculta por mucho tiempo y an sigue presente en Excel 2010. Fechas en Excel Excel almacena una fecha como si fuera un nmero entero. Al utilizar un sistema como ste, Excel puede sumar, restar y comparar fcilmente las fechas sin necesidad de hacer alguna conversin ni clculo especial. Por ejemplo, la fecha 1/1/2000 est representada por el nmero de serie 36526 y la fecha 05/10/2000 tiene asignado el valor 36804. Como puedes imaginar, al realizar una operacin con fechas se utiliza su nmero de serie para facilitar las operaciones. El primero y ltimo da de Excel Excel reconoce todas las fechas posteriores a 1/1/1900. Es por eso que el primer da del ao 1900 tiene asignado el nmero 1. Por el contrario, el ltimo da que Excel reconoce es el 31/12/9999 el cual tiene asignado el nmero 2958465. Valor numrico de una fecha Es realmente sencillo conocer el valor numrico de una fecha, solamente cambia el formato de la celda que contiene una fecha a un formato General y Excel desplegar su valor numrico.
La funcin FECHA Finalmente mencionar la funcin FECHA la cual nos ayuda a obtener el nmero de serie que le corresponde a una fecha dados el da, el mes y el ao.
Esta funcin es de gran utilidad para convertir datos a un formato fecha en caso de que tengas el da, mes y ao en columnas separadas. Una vez convertidos al tipo de dato adecuado se podrn hacer operaciones con las fechas sin dificultad alguna. Das laborables con Excel La funcin DIAS.LAB nos ayuda a obtener el total de das laborables entre dos fechas, sin embargo tiene un inconveniente y es que asume que los das de fin de semana son el sbado y el domingo. Qu hacer si queremos considerar das de fin de semana diferentes? La funcin DIAS.LAB Primero comprobar lo que he dicho. As que utilizar la funcin DIAS.LAB para calcular los das laborables del mes de enero del 2011. Observa el siguiente ejemplo.
Efectivamente existen 21 das laborables en el mes de enero considerando los sbados y domingos como fin de semana. Pero si quisiera tomar como das de descanso el viernes y el sbado el nmero de das laborables del mes sera diferente. Para obtener el resultado deseado utilizar la funcin DIAS.LAB.INTL. La funcin de Excel DIAS.LAB.INTL La funcin DIAS.LAB.INTL permite especificar los das del fin de semana que deseo utilizar. Observa cmo al introducir la frmula Excel me permite seleccionar el fin de semana adecuado:
Al elegir los das viernes y sbado como el fin de semana a considerar, el resultado de das laborables para el mes de enero del 2011 cambia a 22 das.
Varios pases del medio oriente tienen un fin de semana establecido en los das viernes y sbado, lo cual ha sido una de las razones por las que se ha introducido la funcin DIAS.LAB.INTL en Excel. Aunque es poco probable que ests leyendo este artculo desde alguno de estos pases, es ms probable que alguna vez tengas algn trato comercial con alguno de ellos o simplemente la compaa donde laboras desea hacer un clculo de das laborables utilizando algn da de la semana en especial. Frmula para convertir grados decimales a grados, minutos y segundos Hablando de trigonometra y los sistemas de medicin de ngulos nos encontramos con que existen dos sistemas de medicin muy comunes: el sistema decimal y el sistema sexagesimal. En esta ocasin crearemos una frmula en Excel para convertir del sistema decimal al sexagesimal. El sistema sexagesimal El sistema sexagesimal es un sistema que divide cada unidad en 60 unidades de orden inferior, es decir, es un sistema en base 60. Este sistema lo podemos ver reflejado en la medida del tiempo, pero tambin es ampliamente utilizado para medir la amplitud de los ngulos donde las unidades de medicin son los grados, minutos y segundos. Hoy en da existen aplicaciones de computadora, como AutoCAD, que hacen mediciones de ngulos y que nos permiten elegir un sistema de medicin, ya sea el sistema de grados decimales o el sistema de grados, minutos y segundos (sexagesimal). Por esta razn se hace conveniente encontrar un mtodo eficaz para convertir los valores entre ambos sistemas. Algoritmo de conversin Antes de presentar la frmula de Excel que realiza esta conversin, es importante mostrar los pasos para convertir un valor del sistema decimal al sistema sexagesimal y as podremos comprobar que la frmula propuesta funcionar correctamente. Como ejemplo convertiremos el valor decimal 121.135 al sistema sexagesimal de la siguiente manera: 1. La parte entera de los grados decimales ser tambin los grados del sistema sexagesimal (121). 2. Multiplicar los decimales del valor original por 60 (.135 * 60 = 8.1). 3. La parte entera del resultado anterior sern los minutos (8). 4. Multiplicar los decimales del paso 2 por 60 (.1 * 60 = 6). 5. El resultado del paso anterior sern los segundos (6). 6. Tomar los resultados de los pasos 1, 3 y 5 para formar el resultado final (12186). Siguiendo estos mismos pasos podremos convertir grados decimales a grados, minutos y segundos sin mayor problema, as que basados en este algoritmo de conversin puedes comprobar que los siguientes resultados son correctos: 10.46 = 102736 36.30 = 36180 132.39 = 1322324 Frmula en Excel para convertir grados decimales Aunque nuestro impulso inicial sera implementar una frmula en Excel que haga la conversin paso por paso tal como lo describe el algoritmo de la seccin anterior, la verdad es que en Excel existe un mtodo mucho ms sencillo. La solucin se basa en el hecho de que las horas ya tienen un sistema de medicin sexagesimal y Excel opera perfectamente con dicho sistema. Por si no lo sabes, las fechas en Excel son nmeros enteros entre 1 y 2958465, adems el tiempo en Excel tambin es representado por nmeros decimales entre 0.0 y 0.99999999. As que bajo este principio seguiremos los siguientes pasos para realizar la conversin en Excel. 1. Dividir el valor decimal entre 24 para obtener su equivalencia en das y horas de acuerdo al sistema de medicin de Excel. 2. Aplicar el formato adecuado al resultado anterior para desplegarlo como horas, minutos y segundos el cual es tambin un sistema de medicin sexagesimal. Bajo este entendido, si los grados decimales se encuentran en la celda A2, la frmula a utilizar ser la siguiente: =TEXTO(ABS(A2/24), "[h] mm' ss''") La funcin ABS nos ayuda a obtener el valor absoluto de los grados decimales divididos entre 24 el cual ser un valor expresado en das y horas de Excel. El siguiente paso es aplicar el formato adecuado a travs de la funcin TEXTO. Observa que el formato de las horas se coloca entre corchetes [] para indicar a Excel que muestre los das como horas. El resultado de aplicar esta frmula es el siguiente:
Los valores decimales mostrados en la imagen son los mismos valores de ejemplo utilizados previamente y los valores sexagesimales devueltos por nuestra frmula son exactamente los mismos que hemos obtenido por el procedimiento descrito en la seccin anterior. De esta manera la funcin TEXTO nos ayuda a convertir grados decimales a grados, minutos y segundos de una manera rpida y eficiente en Excel. INICIO FUNCIONES ACERCA Cmo eliminar datos repetidos en Excel Excel es una herramienta ampliamente utilizada para generar reportes, los cuales dependern de la precisin y calidad de los datos, por lo que en ms de una ocasin necesitaremos eliminar datos repetidos en Excel para poder generar reportes efectivos. No importa de dnde provengan los datos, la realidad es que ser una accin que tendremos que realizar frecuentemente por lo que es importante conocer las diferentes alternativas que tenemos para eliminar duplicados en Excel. Eliminar repetidos con Filtro avanzado La primera alternativa que podemos utilizar es el Filtro avanzado que est ubicado en la ficha Datos > Ordenar y filtrar > Avanzadas. Al hacer clic en el botn Avanzadas se mostrar el cuadro de dilogo Filtro avanzado donde debemos asegurarnos de elegir las siguientes opciones:
Copiar a otro lugar: Copiar el resultado a otro rango de celdas. Rango de lista: Debes colocar el rango que contiene los datos originales. Copiar a: Indica la celda donde se iniciar la copia de los datos. Slo registros nicos: Esta es la opcin ms importante de todas ya que se encargar de hacer una copia de los registros nicos eliminando as los datos repetidos. Al hacer clic en el botn Aceptar se har una copia de los registros nicos y sern colocados en la celda indicada:
De esta manera habremos eliminado los datos repetidos sin haber modificado los datos originales. Este mismo mtodo lo podemos utilizar para eliminar datos repetidos en ms de una columna, por ejemplo, en la siguiente imagen puedes observar que he obtenido los valores nicos de la combinacin de columnas Nombre y Apellido.
La nica diferencia con el primer ejemplo es que ahora estoy pidiendo a Excel copiar los registros nicos que se encuentran en las columnas A y B y como resultado obtendr los valores en las columnas D y E. El mtodo del Filtro avanzado para la eliminacin de datos repetidos es ampliamente utilizado ya que dicho comando ha estado presente durante varias versiones de Excel. El comando Quitar duplicados A partir de Excel 2007 se introdujo el comando Quitar duplicados que con un solo clic nos permite eliminar los datos repetidos del rango que hayamos seleccionado previamente. El comando Quitar duplicados est localizado en la ficha Datos, dentro del grupo Herramientas de datos. Al pulsar este comando se mostrar el siguiente cuadro de dilogo:
El comando Quitar duplicados detectar los encabezados en los datos y marcar automticamente la opcin Mis datos tienen encabezados en caso de haber encontrado alguno. Adems se mostrar la lista de columnas donde se buscarn los valores duplicados y podremos seleccionar las columnas que necesitamos incluir en la validacin. Al pulsar el botn Aceptar se eliminarn los datos repetidos y podremos ver un mensaje con los resultados del comando recin ejecutado:
Es importante recordar que al eliminar datos repetidos con el comando Quitar duplicados estaremos afectando directamente los datos originales. Eliminar repetidos con Tabla dinmica Otro mtodo que podemos utilizar para eliminar datos repetidos en Excel es utilizar una tabla dinmica y para ello debemos seleccionar cualquier celda de los datos originales y pulsar el botn Insertar > Tabla dinmica. Eso mostrar el cuadro de dilogo Crear tabla dinmica y al pulsar el botn Aceptar tendremos una nueva tabla dinmica donde debemos arrastrar el campo que contiene los datos duplicados a la seccin Etiquetas de fila:
De inmediato la tabla dinmica remover cualquier dato repetido y mostrar los valores nicos bajo la columna Etiquetas de fila. Ser suficiente con copiar las celdas de la tabla dinmica y pegar dichos valores nicos a cualquier otro rango de celdas para poder utilizarlo. Si adems quieres saber el nmero de veces que aparece cada uno de los valores en los datos originales ser suficiente con arrastrar el mismo campo a la seccin Valores:
Ahora ya conoces diferentes alternativas para eliminar datos repetidos en Excel. Puedes experimentar con todas ellas y elegir la que mejor se acomode a tus necesidades. Cmo obtener el nombre de mes en Excel Cuando trabajamos con fechas es comn tener la necesidad de extraer el mes para desplegarlo por su nombre, ya sea para colocarlo en una celda o para concatenarlo con otra cadena de texto. Hoy revisaremos un mtodo muy sencillo para obtener el nombre de mes en Excel. Confusin con el formato de fecha Algunos pensaran que cambiando el formato de la fecha, por un formato que despliegue el nombre del mes, sera posible utilizar la funcin EXTRAE para obtener el nombre del mes. Sin embargo, pronto se dan cuenta de que eso no es posible dada la naturaleza de las fechas en Excel. Las fechas jams podrn ser tratadas como cadenas de texto ya que son valores numricos. Lo que sucede es que Excel cambia la manera de desplegar el nmero en pantalla aplicando ciertos formatos personalizados de celdas de manera que se muestre como una fecha para nosotros. Para comprobar lo que acabo de mencionar har un pequeo ejemplo. En la siguiente imagen puedes observar la misma serie de fechas en las columnas A, B y C donde la nica diferencia es el formato de la fecha. Si la columna C fuera una cadena de texto, entonces podra extraer el primer carcter de la izquierda con la siguiente frmula: =EXTRAE(C2,1,1) Ahora observa el resultado de la frmula anterior al aplicarla sobre los datos de ejemplo:
El resultado de la funcin EXTRAE es el nmero 4 aun cuando dicho nmero no forma parte de la fecha mostrada en la celda C2. Lo que sucede es que la fecha 1 de enero de 2013 tiene asignado el nmero 41275 y la funcin EXTRAE nos est devolviendo acertadamente el primer dgito de dicho nmero. Frmula para obtener el nombre de mes Ahora que ya sabemos que no podemos tratar las fechas como cualquier otra cadena de texto, es momento de revelar la funcin que nos ayudar a obtener el nombre de mes en Excel. Para hacer esta extraccin utilizaremos la funcin TEXTO cuyo objetivo es precisamente convertir un valor numrico en una cadena de texto y de paso aplicar un formato. La frmula a utilizar ser la siguiente: =TEXTO(A2, "mmmm") La celda A2 contiene la fecha 01/01/2013, as que le corresponde el mes de enero el cual ser desplegado con el formato mmmm:
Observa que al copiar la frmula hacia abajo obtendremos el mes para cada una de las fechas del rango. El resultado ser el mismo sin importar la columna que utilicemos ya que todas las columnas tienen las mismas fechas. Otra opcin de formato disponible para extraer el nombre de mes es la siguiente: =TEXTO(B2, "mmm") En lugar de utilizar cuatro letras m, este formato utiliza solamente tres, lo que ocasiona que el mes se despliegue con su abreviatura de tres letras de la siguiente manera:
Ambos formatos nos permiten obtener el nombre de mes en Excel, ya sea desplegando su nombre completo o su forma abreviada. Si quieres aprender un poco ms sobre la funcin TEXTO y el manejo de fechas consulta el artculo Extraer informacin de una fecha. El Editor de Visual Basic El Editor de Visual Basic, VBE por sus siglas en ingls, es un programa independiente a Excel pero fuertemente relacionado a l porque es el programa que nos permite escribir cdigo VBA que estar asociado a las macros. Existen al menos dos alternativas para abrir este editor, la primera de ellas es a travs del botn Visual Basic de la ficha Programador.
El segundo mtodo para abrir este programa es, en mi opinin, el ms sencillo y rpido y que es a travs del atajo de teclado: ALT + F11. El Editor de Visual Basic contiene varias ventanas y barras de herramientas.
En la parte izquierda se muestra el Explorador de proyectos el cual muestra el proyecto VBA creado para el libro actual y adems muestra las hojas pertenecientes a ese libro de Excel. Si por alguna razn no puedes visualizar este mdulo puedes habilitarlo en la opcin de men Ver y seleccionando la opcin Explorador de proyectos.
El Explorador de proyectos tambin nos ayuda a crear o abrir mdulos de cdigo que se sern de gran utilidad para reutilizar todas las funciones de cdigo VBA que vayamos escribiendo. Dentro del Editor de Visual Basic puedes observar una ventana llamada Inmediato que est en la parte inferior. Esta ventana es de mucha ayuda al momento de escribir cdigo VBA porque permite introducir instrucciones y observar el resultado inmediato. Adems, desde el cdigo VBA podemos imprimir mensajes hacia la ventana Inmediato con el comando Debug.Print de manera que podamos depurar nuestro cdigo. Si no puedes observar esta ventana puedes mostrarla tambin desde el men Ver. El rea ms grande en blanco es donde escribiremos el cdigo VBA. Es en esa ventana en donde escribimos y editamos las instrucciones VBA que dan forma a nuestras macros. Es importante familiarizarnos con el Editor de Visual Basic antes de iniciar con la creacin de macros.
Creando una funcin VBA Como hemos visto en el artculo Tu primera macro con VBA, una subrutina nos ayuda a organizar y agrupar las instrucciones en nuestro cdigo. El da de hoy te mostrar cmo crear una funcin VBA, la cual es similar a una subrutina excepto por una cosa. A diferencia de las subrutinas, las funciones VBA fueron diseadas para retornar un valor. A travs de una funcin podemos agrupar cdigo que nos ayudar a hacer algn clculo especfico y obtener un resultado de regreso. Una funcin VBA tambin es conocida como Funcin Definida por el Usuario, UDF por sus siglas en ingls, y una vez creada puede ser utilizada de la misma manera que las funciones incluidas en Excel como la funcin SUMAR o la funcin BUSCARV. Esto hace que las funciones VBA sean una herramienta muy poderosa. A continuacin mostrar una funcin que toma un rango y regresa la suma de cada una de sus celdas. Es importante insertar el cdigo dentro de un Mdulo tal como se muestra en el artculo Tu primera macro con VBA. Posteriormente ir explicando el detalle de la funcin.
La palabra clave Function La primera lnea de cdigo comienza con la palabra Function la cual define el inicio de la funcin. Observa tambin cmo la ltima lnea de cdigo es End Function que est especificando el trmino de la funcin. Inmediatamente despus de la palabra clave Function se debe especificar el nombre de la funcin que en este ejemplo es MiSuma seguida de parntesis que de manera opcional pueden contener una lista de parmetros. Parmetros de una funcin VBA Los parmetros son el medio por el cual pasamos informacin de entrada a la funcin. Algunas funciones necesitarn de dichas entradas para realizar algn clculo y algunas otras no, es por ello que los parmetros de una funcin son opcionales. Puedes incluir tantos parmetros como sean necesarios y solamente debes recordar separarlos por una coma. Un parmetro no es ms que una variable y por lo tanto puedes observar que en el ejemplo he definido la variable rango que ser del tipo Range. Valor de retorno Como mencion al principio, la caracterstica principal de una funcin es que puede regresar un valor. Es por eso que al definir una funcin se debe indicar el tipo del valor de retorno que tendr dicha funcin. En este caso el valor de retorno ser de tipo Double y se est especificado por las palabras As Double que aparecen despus de los parntesis. Cuerpo de la funcin VBA Una vez definida la funcin se pueden especificar todas las instrucciones que sern ejecutas. En el ejemplo he comenzado por definir un par de variables, la variable celda que ser del tipo Range y la variable resultado del tipo Double. En sta ltima variable es donde se ir acumulando la suma de todas las celdas. La parte central de la funcin se encuentra en la instruccin For Each ya que realiza un recorrido por todas las celdas del rango que fue especificado como parmetro. Para cada celda que se encuentra se va sumando su contenido en la variable resultado. Retornando el valor Una vez que se han hecho los clculos necesarios, es importante regresar el valor. Para hacerlo es indispensable igualar el nombre de la funcin al valor o variable que contiene el valor que se desea regresar. En nuestro ejemplo, la variable resultado es la que contiene la suma de todas las celdas por lo que se iguala con el nombre de la funcin en la lnea MiSuma = resultado. Probando la funcin VBA Finalmente probar la funcinVBA recin creada dentro de una hoja de Excel. Tal como lo definimos en el cdigo, el nico parmetro de la funcin debe ser un rango del cual me regresar la suma de los valores de la celda. Observa el siguiente ejemplo.
Aunque la funcin MiSuma hace lo mismo que la funcin de Excel SUMAR, nos ha servido de ejemplo para introducir el tema de las funciones en VBA. Con este ejemplo tan sencillo hemos creado nuestra primera funcin VBA. INICIO FUNCIONES ACERCA Nombres de rango dinmicos Excel nos permite poner nombres a los rangos de celdas de manera que los podamos identificar adecuadamente al usarlos en nuestras frmulas, pero en esta ocasin te mostrar cmo hacer que ese nombre se refiera a un grupo de celdas que va en aumento. Al definir un nombre de rango comenzamos por seleccionar los datos y posteriormente asignarles un nombre. En la siguiente imagen puedes observar que he asignado el nombre MiTabla al rango de celdas A1:A3:
Si agrego un nuevo dato por debajo del rango definido no se incluir de manera automtica:
Sera necesario redefinir el nombre del rango para incluir la nueva celda. Sin embargo, podemos hacer que un nombre de rango est definido por una frmula y de esa manera actualizar automticamente los datos que deben ser incluidos. Rangos dinmicos con DESREF Para lograr este objetivo utilizaremos la funcin DESREF que nos permite crear una referencia a un rango. Esta es la sintaxis de la funcin: DESREF(ref, filas, columnas, [alto], [ancho]) La sintaxis de la funcin DESREF nos indica que el primer argumento debe ser la celda inicial sobre la cual se basar la referencia. En base a los datos del ejemplo anterior, colocar como primer argumento la celda A1 que es la primera celda con datos. El segundo y tercer argumento de la funcin nos permiten especificar cuantas filas y columnas nos moveremos de la celda inicial. En nuestro ejemplo no queremos movernos de esa celda, as que estos parmetros sern siempre cero. El cuarto y quinto argumento son el alto y ancho de la referencia que queremos crear y aqu es donde viene la parte interesante porque queremos decir a Excel que deseamos todas las celdas que tienen un contenido. Para lograr nuestro cometido debemos utilizar la funcin CONTARA, la cual nos ayuda a contar las celdas que no estn vacas. Para contar las filas que no estn vacas utilizo la siguiente funcin: =CONTARA($A:$A) Y para contar las columnas que no estn vacas: =CONTARA($1:$1) Con los parmetros ya definidos podemos decir que utilizaremos la funcin DESREF de la siguiente manera suponiendo que los datos se encuentran en la Hoja1: =DESREF(Hoja1!$A$1, 0, 0, CONTARA(Hoja1!$A:$A), CONTARA(Hoja1!$1:$1)) Esta frmula siempre nos devolver el rango que incluye las celdas que tienen un valor y que son adyacentes a la celda A1. Editar el nombre de rango Ahora solo resta modificar la definicin del nombre de rango MiTabla para que utilice esta frmula. Para ello debo ir a la ficha Frmulas y oprimir el botn Administrador de nombres, se mostrar el nombre de rango previamente definido y en el cuadro de texto de la parte inferior se deber reemplazar su definicin por la frmula anterior:
Con esta nueva definicin del rango MiTabla no importarn las filas que agreguemos ya que siempre sern consideradas en el rango. En el siguiente ejemplo, puedes observar cmo voy agregando nuevos valores en la columna A y son considerados automticamente en la suma de la celda D5:
Fijar la fecha y hora en Excel En ocasiones necesitamos insertar la fecha y hora actuales en una celda de nuestra hoja y que dicho valor permanezca fijo despus de haberlo insertado. Muchos intentarn hacerlo con las funciones de Excel, pero pronto se darn cuenta que no es posible. Insertar fecha y hora con funciones Al utilizar funciones de Excel para insertar la fecha y la hora, el valor mostrado en la celda ser actualizado automticamente al momento de recalcular las frmulas y por lo tanto los valores de la fecha y hora jams sern fijos. Puedes comprobar este comportamiento utilizando la funcin AHORA, que nos devuelve tanto la fecha como la hora actual. Es probable que al ingresar la funcin se muestre solamente la fecha, pero podemos cambiar el formato personalizado de la celda por dd/mm/aaaa hh:mm para mostrar tambin la hora:
Deja pasar algunos segundos hasta que el reloj de tu equipo haya avanzado al menos un minuto, pulsa la tecla F9 y vers que el valor de la hora se actualizar a la misma hora del computador. Por esta razn, no podemos fijar la fecha y hora en Excel utilizando funciones. Fijar fecha y hora con un atajo de teclado La nica alternativa que tenemos en Excel para evitar que la fecha y hora se actualicen constantemente es introducir sus valores directamente en una celda. Pero ya que esta accin requerira de un ingreso manual, podemos utilizar los siguientes atajos de teclado para facilitar las cosas: Insertar la fecha actual: Ctrl + , (coma) Insertar la hora actual: Ctrl + : (dos puntos) Estos atajos de teclado son vlidos para una versin de Excel en castellano. Si tienes una versin en ingls, entonces debers utilizar el atajo Ctrl + ; (punto y coma) para insertar la fecha actual y el atajo Ctrl + Shift + ; (punto y coma) para la hora. Macro para insertar fecha y hora actuales Tambin tenemos la opcin de crear una macro para insertar los valores de la fecha y hora actuales en una celda. Eso lo podemos lograr gracias a la funcin Now en VBA y para mostrarlo comenzar insertando un botn de comando ActiveX en la hoja actual y despus har doble clic sobre el botn para insertar el siguiente cdigo: 1 2 3 Private Sub CommandButton1_Click() Range("B1").Value = Now End Sub Esta macro asigna el valor de la funcin Now a la celda B1 de la hoja actual. Al pulsar el botn obtendr el siguiente resultado:
Con este mtodo he insertado tanto la fecha como la hora actual en la misma celda. Si quisiera insertar solamente la fecha entonces debera utilizar la funcin Date en lugar de la funcin Now y si quisiera insertar solamente la hora debera utilizar la funcin Time. Si al utilizar este mtodo la celda muestra el error ###### ser porque la columna est demasiado angosta como para mostrar la fecha y hora, pero se resolver fcilmente con tan solo aumentar el ancho de la columna. Descarga el libro de trabajo y comprueba el uso de estas tres funciones VBA que sern tiles para fijar la fecha y hora en Excel. Cmo resaltar la fila de la celda activa en Excel Cuando tienes una tabla en Excel con muchas columnas es fcil perder de vista la fila a la que pertenecen los datos. Hoy aprenderemos cmo resaltar la fila de la celda activa de manera que podamos distinguir fcilmente todos los valores de una fila. Nuestro objetivo ser crear un apoyo visual para identificar fcilmente los datos que pertenecen a la misma fila de la celda activa. Al momento de seleccionar una nueva celda, la fila anterior quedar sin resaltar y la nueva fila ser resaltada. Observa la siguiente animacin donde queda claro nuestro objetivo:
El cdigo VBA que desarrollaremos har que todas las hojas de nuestro libro tengan este comportamiento sin necesidad de copiarlo en cada una de ellas. As que sin mayor prembulo, comencemos con el desarrollo de esta funcionalidad. Crear una variable VBA global El primer paso ser crear una variable global en VBA donde almacenaremos el valor de la celda activa actual y el de la celda activa anterior. Esto es necesario ya que al movernos a una nueva fila debemos quitar cualquier formato de la fila previamente resaltada y por lo tanto necesito almacenar una referencia a dicha fila. Para crear esta variable debes abrir el Editor de Visual Basic y agregar un mdulo de cdigo haciendo clic derecho sobre el nombre del proyecto > Insertar > Mdulo:
Una vez creado este mdulo debemos colocar la siguiente lnea de cdigo: 1 Public celdaActiva(1) As Range El hecho de que la variable sea Public nos permite tener acceso a ella desde cualquier otro mdulo de cdigo. Esta variable es un arreglo en VBA que no es ms que una coleccin de casillas donde podemos almacenar valores. En este caso la variable celdaActiva tiene dos casillas del tipo Range las cuales podemos acceder con los ndices 0 y 1.
Inicializar la variable celdaActiva En este punto la variable celdaActiva creada en el paso anterior an est vaca, as que haremos uso del evento Workbook_Open para indicarle cul es la celda activa al momento de abrir nuestro libro de Excel. Inserta el siguiente cdigo dentro del evento Workbook_Open del objeto ThisWorkbook: 1 2 3 4 Private Sub Workbook_Open() Set celdaActiva(1) = ActiveCell ActiveCell.EntireRow.Interior.Color = RGB(255, 145, 145) End Sub Al abrir nuestro libro se ejecutar el cdigo del evento WorkbookOpen y por lo tanto el elemento 1 del arreglo celdaActiva tendr una referencia a la celda activa de nuestro libro. La segunda instruccin que se ejecuta cambiar el valor de la propiedad ActiveCell.EntireRow.Interior.Color para establecer un color de fondo para toda la fila de la celda activa. En este caso utilizo la funcin RGB para elegir un color de fondo con una combinacin especfica de colores rojo, verde y azul. Si quieres saber un poco ms sobre los colores en Excel y la funcin RGB, consulta el artculo Evaluar el color de fondo de una celda. Adems de inicializar la variable celdaActiva al momento de abrir nuestro libro de Excel, lo haremos tambin al momento de activar una nueva hoja lo que significa que debemos hacer uso del evento Workbook_SheetActivate que tambin se encuentra dentro del objeto ThisWorkbook. Despus de haber insertado el mismo cdigo para ambos eventos, debers tener una vista en el Editor de Visual Basic como la siguiente:
Resaltar la fila de la celda activa Ahora solo nos resta resaltar la fila de la celda activa en el momento en que seleccionamos una nueva celda. Ese instante est representado en Excel por el evento Workbook_SheetSelectionChange donde colocaremos el siguiente cdigo: 1 2 3 4 5 6 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Set celdaActiva(0) = celdaActiva(1) Set celdaActiva(1) = Target celdaActiva(0).EntireRow.Interior.Color = xlNone Target.EntireRow.Interior.Color = RGB(255, 145, 145) End Sub Ya que este evento se dispara en el momento en que seleccionamos una nueva celda, la primera instruccin almacena el valor de la celda activa anterior dentro de celdaActiva(0) e inmediatamente despus guardamos la referencia a la nueva celda activa dentro de celdaActiva(1) y que en ese instante est referenciada por la variable Target. Las ltimas dos instrucciones cambian el color de fondo de las filas. Primero igualamos el color de celda activa anterior a xlNone que significa que removeremos cualquier color de fondo y enseguida establecemos un color de fondo con la funcin RGB para la fila de la nueva celda activa. Al finalizar todos estos pasos tendremos un cdigo como el siguiente:
Eso ser todo. Al haber seguido estos pasos tendrs un libro de Excel que resaltar la fila de la celda activa en todas las hojas. Observaciones sobre el mtodo utilizado El mtodo utilizado para resaltar la fila de la celda activa en Excel mostrado en este artculo modifica el valor de la propiedad Interior.Color de cada una de las celdas de la fila. Por esta razn, si tus celdas tienen aplicado algn color, ste ser removido al momento de seleccionar una celda de la misma fila. Es importante recordar que los colores que sern removidos sern los aplicados en el relleno de las celdas a travs de las herramientas de formato. Los colores aplicados por formato condicional quedarn intactos ya que dichos colores se almacenan en una propiedad diferente. De hecho, si tus datos tienen reglas de formato condicional, dichos colores estarn sobre puestos al color aplicado por el cdigo de este ejemplo. Resaltar fila y columna de la celda activa Una variante interesante del ejemplo mostrado anteriormente es agregar algunas lneas de cdigo para resaltar la columna de la celda activa y de esa manera ubicarla tanto horizontal como verticalmente. El cdigo a utilizar ser el siguiente: 1 2 3 4 5 Private Sub Workbook_Open() Set celdaActiva(1) = ActiveCell ActiveCell.EntireRow.Interior.Color = RGB(255, 145, 145) ActiveCell.EntireColumn.Interior.Color = RGB(255, 145, 145) End Sub
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Private Sub Workbook_SheetActivate(ByVal Sh As Object) Set celdaActiva(1) = ActiveCell ActiveCell.EntireRow.Interior.Color = RGB(255, 145, 145) ActiveCell.EntireColumn.Interior.Color = RGB(255, 145, 145) End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Set celdaActiva(0) = celdaActiva(1) Set celdaActiva(1) = Target celdaActiva(0).EntireRow.Interior.Color = xlNone celdaActiva(0).EntireColumn.Interior.Color = xlNone Target.EntireRow.Interior.Color = RGB(255, 145, 145) Target.EntireColumn.Interior.Color = RGB(255, 145, 145) End Sub Observa que lo nico que he hecho es agregar las lneas de cdigo que hacen referencia a la propiedad EntireColumn.Interior.Color que resaltan la columna de la celda activa. Por supuesto que esta versin de cdigo tambin necesitar de una variable global declarada en un Mdulo de manera similar que en el primer ejemplo. El resultado de utilizar este cdigo es el siguiente:
Cmo restar en Excel Cuando comenzamos a utilizar las hojas de clculo es normal preguntarnos cmo realizar las operaciones aritmticas ms elementales como sumar y multiplicar, pero estoy seguro que cuando eras principiante en Excel te preguntaste en ms de una ocasin cmo restar en Excel. La funcin RESTA en Excel? Una de las primeras funciones que aprendemos a utilizar en Excel es la funcin SUMA, as que es prcticamente inevitable razonar que: Si existe una funcin para sumar, seguramente debe existir una funcin para restar. Sin embargo, despus de hacer una bsqueda exhaustiva, todo usuario que comienza en Excel se entera de que la funcin RESTA no existe. A muchos les parece extrao que no exista una funcin para restar en Excel, pero todo comienza a hacer ms sentido cuando nos damos cuenta de que podemos restar nmeros utilizando la funcin SUMA. Lo nico que debemos hacer es utilizar valores negativos y dejar que la funcin se encargue de realizar la operacin aritmtica. Considera como ejemplo la siguiente frmula: =SUMA(10, -3) En esta frmula he colocado el valor -3 como segundo argumento de la funcin SUMA y por lo tanto al realizar el clculo obtendr el resultado de la operacin diez menos tres:
Ya que la funcin SUMA nos permite indicar valores numricos o referencias, entonces tambin es posible restar el valor de varias celdas de la siguiente manera:
Observa que he especificado valores negativos en las celdas B1 y C1 y por lo tanto la funcin SUMA en realidad estar haciendo una resta de dichos nmeros. De esta manera podemos concluir que al no existir la funcin RESTA en Excel, podemos utilizar la funcin SUMA siempre y cuando indiquemos los valores negativos. El operador aritmtico para la resta Una segunda alternativa que tenemos para restar en Excel es utilizar directamente el operador aritmtico para la resta que es el guion medio (-). Este operador lo podemos utilizar ya sea con valores numricos o con referencias de celdas. Observa cmo resto el valor de las celdas B1 y C1 al valor de la celda A1 utilizando este operador:
A diferencia del ejemplo anterior que utilizaba la funcin SUMA, en esta ocasin los valores de todas las celdas son positivos y el operador se encarga de hacer las restas correspondientes. Son los operadores los que nos permiten utilizar Excel como si fuera una calculadora, por ejemplo, podemos escribir frmulas como la siguiente para mezclar operaciones de suma y resta: =A1+B1-C1-D1 Tambin es posible mezclar el operador de resta con la funcin SUMA para restar un conjunto de nmeros a otro. En la siguiente imagen hago la suma de todos los costos de una empresa y el resultado lo resto a los ingresos para obtener la utilidad bruta.
Si quieres saber un poco ms sobre los operadores aritmticos en Excel consulta el artculo: Tipos de operadores en Excel. Restar con la funcin IM.SUSTR La funcin IM.SUSTR est presente desde la versin de Excel 2007 y es utilizada para restar dos nmeros complejos, pero la verdad es que son muy pocas las personas que hacen operaciones con este tipo de nmeros. Lo nico que debemos saber es que un nmero complejo est formado por un nmero real y un nmero imaginario. Los nmeros que hemos utilizado hasta ahora en este artculo son reales, as que esta funcin puede ayudarnos perfectamente a restar en Excel, pero debemos recordar que solo nos permitir restar dos nmeros a la vez. Observa la siguiente imagen donde hago uso de esta funcin:
La celda C1 muestra correctamente el resultado de la operacin 10 menos 3. La nica peculiaridad del resultado es que el nmero 7 est alineado a la izquierda, lo cual nos indica que Excel lo ha identificado como una cadena de texto. Esto se debe a que los nmeros complejos son representados en Excel como cadenas de texto, as que debes tener eso en cuenta si alguna vez decides utilizar la funcin IM.SUSTR para hacer una resta en Excel. Filtros en Excel Los filtros en Excel nos permiten buscar un subconjunto de datos que cumpla con ciertos criterios. Generalmente todo comienza cuando tenemos un rango de celdas con informacin y queremos ver solamente aquellas filas que cumplen con ciertas condiciones. Por ejemplo, en la siguiente imagen se pueden ver los datos de ventas de una empresa. Cmo puedo tener una vista con todas las filas que pertenecen a Hugo? Eso sera una tarea muy difcil de lograr si no tuviramos la facilidad de crear filtros en Excel.
Cmo crear filtros en Excel Para crear un filtro podemos utilizar el comando Filtro que se encuentra en la ficha Datos dentro del grupo Ordenar y filtrar.
Al pulsar el botn Filtro se colocarn flechas en el extremo derecho de cada uno de los encabezados de columna de nuestros datos indicando que podemos hacer uso de los filtros. El comando Filtro tambin podrs seleccionar desde Inicio > Modificar > Ordenar y filtrar > Filtro. Otra manera de crear un filtro es transformar nuestros datos en una tabla de Excel, lo cual insertar los filtros adems de aplicar un formato especial a los datos. Cmo usar los filtros en Excel Para filtrar la informacin debemos elegir una columna y hacer clic en la flecha de filtro correspondiente para mostrar las opciones de filtrado. Todos los filtros, en la parte inferior, mostrarn una lista de valores nicos con una caja de seleccin a la izquierda de cada uno.
Una opcin que tenemos para filtrar los datos es elegir de manera individual aquellos valores que deseamos visualizar en pantalla. Tambin podemos utilizar la opcin (Seleccionar todo) para marcar o desmarcar todos los elementos de la lista. En la imagen anterior he elegido el nombre Hugo de manera que el filtro mostrar solamente las filas con dicho nombre.
Al pulsar el botn Aceptar se ocultarn las filas que no cumplen con el criterio de filtrado establecido. Observa que la flecha de filtro de la columna Vendedor ha cambiado para indicarnos que hemos aplicado un filtro. Adems, los nmeros de fila de Excel se muestran en un color diferente indicndonos que existen filas ocultas. Filtrar por varias columnas Si queremos segmentar an ms los datos mostrados en pantalla podemos filtrar por varias columnas. En el ejemplo anterior filtr las filas pertenecientes a Hugo, pero si adems necesito saber las que pertenecen a la regin Norte y Sur, entonces debo seleccionar dichas opciones dentro del filtro de la columna Regin:
Al aceptar estos cambios se mostrarn solamente las filas que cumplen ambos criterios. Observa que ambas columnas habrn cambiado sus iconos para indicarnos que se ha aplicado un filtro en cada una de ellas.
Esto demuestra que es posible crear tantos filtros como columnas tengamos en nuestros datos y entre ms criterios de filtrado apliquemos mucha mayor ser la segmentacin de datos que obtendremos. Cmo quitar un filtro en Excel Para quitar un filtro aplicado a una columna debemos hacer clic en la flecha del filtro y seleccionar la opcin Borrar filtro de Columna donde Columna es el nombre de la columna que hemos elegido. Esta accin eliminar el filtro de una sola columna, pero si tenemos filtros aplicados a varias columnas y deseamos eliminarlos todos con una sola accin, entonces debemos pulsar el comando Borrar que se encuentra en la ficha Datos > Ordenar y filtrar.
Filtrar en Excel buscando valores Ya hemos visto que todos los filtros muestran una lista de valores nicos de la cual podemos seleccionar uno o varios de ellos y justo por arriba de dicha lista de valores se muestra un cuadro de texto que nos permite hacer una bsqueda. Por ejemplo, en la siguiente imagen he colocado la palabra este en el cuadro de bsqueda y como resultado se ha modificado la lista de valores mostrando solo aquellos donde se ha encontrado dicha palabra:
Cuando tenemos una lista muy grande de valores nicos y no podemos identificar fcilmente aquellos que deseamos seleccionar, podemos utilizar el cuadro de bsqueda para encontrar los valores que necesitamos. Tambin es posible utilizar caracteres comodines como el asterisco (*) o el smbolo de interrogacin (?) tal como si hiciramos una bsqueda aproximada en Excel de manera que podamos ampliar los resultados de bsqueda. Filtros de texto en Excel Adems de las opciones ya mencionadas para filtrar en Excel, cuando en una columna se detecta el tipo de dato texto, se mostrar una opcin de men llamada Filtros de texto como la siguiente:
Al elegir cualquiera de estas opciones se mostrar un cuadro de dilogo que nos permitir configurar cada uno de los criterios disponibles. Por ejemplo, al elegir la opcin Comienza por se mostrar el siguiente cuadro de dilogo:
Si colocamos la letra a en el cuadro de texto junto a la opcin comienza por, entonces Excel mostrar solamente los elementos de la columna Vendedor que comiencen por la letra a. Filtros de nmero en Excel De manera similar, si Excel detecta que una columna contiene valores numricos, nos permitir utilizar filtros especficos para dicho tipo de dato tal como lo puedes observar en la siguiente imagen:
A diferencia de los Filtros de texto, Excel nos permitir utilizar los Filtros de nmero para mostrar valores que sean mayores o iguales que otro o simplemente aquellos que son superiores al promedio. Filtros de fecha en Excel Las fechas son el tipo de dato que ms opciones de filtrado nos proporcionan, tal como lo muestra la siguiente imagen:
Excel nos permitir filtrar las fechas por das especficos como hoy, maana o ayer e inclusive por perodos de tiempo ms largos como semanas, meses, trimestres o aos con tan solo seleccionar la opcin adecuada. Filtrar por color en Excel No podamos pasar por alto y dejar de hablar de la opcin de Filtrar por color que nos ofrece Excel. Para que esta opcin se habilite es necesario que las celdas tengan aplicado un color de relleno ya sea por una regla de formato condicional o modificando directamente el color de relleno con las herramientas de formato. En nuestro ejemplo he aplicado una regla de formato condicional para aquellas celdas que tengan un valor superior a $850 en la columna Total.
Una vez que las celdas tienen un color de relleno, al hacer clic en el filtro de la columna Total se mostrar habilitada la opcin Filtrar por color y dentro de ella podr elegir alguno de los colores presentes en la columna.
Sumar y contar celdas por color de formato condicional Hace algunos meses publique el artculo Operaciones con colores en Excel y de inmediato recib preguntas sobre la posibilidad de utilizar dichas funciones para evaluar los colores aplicados a una celda a travs del formato condicional. Las funciones creadas en ese artculo evalan la propiedad Interior.Color que tiene cada una de las celdas en Excel, sin embargo, el formato condicional no utiliza dicha propiedad sino que tiene su propia versin para almacenar el color de fondo de una celda. Por esa razn no es posible utilizar dichas funciones para evaluar colores establecidos a travs de una regla de formato condicional. As que hoy crearemos una nueva funcin VBA (UDF) para sumar y contar celdas por color de formato condicional. Pero antes de iniciar con el cdigo hablaremos un poco sobre los objetos y propiedades que debemos evaluar para obtener el color de fondo proveniente de un regla de formato condicional. La coleccin FormatConditions Primero debemos recordar que un mismo rango de celdas en Excel puede estar sujeto a varias reglas de formato condicional al mismo tiempo, as que para guardar esa lista de formatos condicionales se cre la coleccin FormatConditions en VBA la cual enumera todas las reglas de formato condicional aplicadas en un rango. Para comprender el funcionamiento de esta coleccin haremos un ejemplo. Considera la siguiente lista de nmeros en el rango A1:A10 donde he aplicado una regla de formato condicional que resalta en color rojo los valores mayores a 750.
Ahora insertar un botn de comando ActiveX en la misma hoja y colocar el siguiente cdigo VBA en su evento Click: 1 2 3 Private Sub CommandButton1_Click() MsgBox Range("A1:A10").FormatConditions.Count End Sub La nica lnea de cdigo ejecutada se encargar de mostrar el valor de la propiedad Count de la coleccin FormatConditions la cual contiene el recuento de las reglas de formato condicional para el rango indicado. Al hacer clic sobre el botn de comando se mostrar el siguiente mensaje:
El mensaje nos indica que el rango A1:A10 tiene una sola regla de formato condicional. Ahora crear una segunda regla para el mismo rango que resaltar de color verde todas las celdas con un valor menor a 250. Una vez creada la regla de formato condicional, volver a pulsar el botn de comando y el nmero mostrado en el mensaje habr aumentado debido a la nueva regla creada:
Es as como la coleccin FormatConditions nos permite obtener informacin sobre las reglas de formato condicional aplicadas a un rango de celdas. Ahora centraremos nuestra atencin a una propiedad especfica de dicha coleccin. La propiedad FormatCondition.Interior.Color Cada regla de formato condicional almacena el estilo que aplicar a las celdas que cumplan con las condiciones establecidas y especficamente el color de relleno se almacena en la propiedad Interior.Color. Para demostrar el valor de esta propiedad agregar un nuevo botn de comando con el siguiente cdigo: 1 2 3 4 5 6 Private Sub CommandButton2_Click() For i = 1 To Range("A1:A10").FormatConditions.Count MsgBox "Regla " & i & vbLf & _ "Color: " & Range("A1:A10").FormatConditions(i).Interior.Color Next i End Sub El cdigo anterior recorre todos los elementos de la coleccin FormatConditions y para cada elemento mostrar un mensaje con el nmero de regla y su color de relleno que est almacenado en la propiedad Interior.Color. Al pulsar el botn obtengo el siguiente resultado:
El color devuelto ser un valor entre 0 y 16777215 que corresponde a una de las combinaciones de colores primarios (rojo, verde y azul) que se pueden formar en Excel. Si quieres saber un poco ms sobre los colores en Excel consulta el artculo Evaluar el color de fondo de una celda. Los colores mostrados con el cdigo anterior son los colores pertenecientes a cada una de las reglas de formato condicional y no el color de una celda especfica. Para conocer el color de formato condicional aplicado a una celda ser necesario encontrar la regla que se cumple sobre dicha celda para entonces obtener el color correspondiente. Macro para obtener el color de una celda El desafo ms grande al crear una macro para obtener el color de una celda es descubrir la regla de formato condicional que est activa. Para eso utilizamos un bucle For Next que recorrer toda la coleccin de formatos haciendo una evaluacin de cada regla para descubrir si est activa. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Function COLORFC(Celda As Range) As Long
'Indicar si la relga de formato condicional est activa Dim ReglaActiva As Boolean
'Recorrer todas las reglas de formato condicional para la celda indicada For i = 1 To Celda.FormatConditions.Count
'Evaluar la regla FormatConditions(i) With Celda.FormatConditions(i)
'Si la regla est basada en el valor de la celda If .Type = xlCellValue Then
'Identificar el operador de la regla y evaluar si est activa Select Case .Operator Case xlBetween: ReglaActiva = Celda.Value >= Evaluate(.Formula1) _ And Celda.Value <= Evaluate(.Formula2) Case xlNotBetween: ReglaActiva = Celda.Value <= Evaluate(.Formula1) _ Or Celda.Value >= Evaluate(.Formula2) Case xlEqual: ReglaActiva = Evaluate(.Formula1) = Celda.Value Case xlNotEqual: ReglaActiva = Evaluate(.Formula1) <> Celda.Value Case xlGreater: ReglaActiva = Celda.Value > Evaluate(.Formula1) 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Case xlLess: ReglaActiva = Celda.Value < Evaluate(.Formula1) Case xlGreaterEqual: ReglaActiva = Celda.Value >= Evaluate(.Formula1) Case xlLessEqual: ReglaActiva = Celda.Value <= Evaluate(.Formula1) End Select
'Si la regla es una expresin (Frmula) ElseIf .Type = xlExpression Then
'Devolver el color si la regla est activa If ReglaActiva Then COLORFC = .Interior.Color Exit Function End If
End With Next i
End Function Las primeras lneas de cdigo se encargan de recorrer todas las reglas de formato condicional para la celda proporcionada. La primera validacin importante es sobre la propiedad Type que nos permite saber el tipo de regla que estamos analizando, ya sea del tipo xlCellValue o del tipo xlExpression. Es importante mencionar que existen ms tipos de reglas de formato condicional, de hecho la enumeracin XlFormatConditionType contiene 14 tipos diferentes, pero solamente los dos tipos mencionados anteriormente tienen una manera de ser evaluados desde VBA. Por esta razn la funcin COLORFC considera en primer lugar las reglas de formato condicional que evalan directamente el valor de una celda.
El cuadro de dilogo anterior muestra precisamente la lista de reglas de formato condicional que son del tipo xlCellValue y que por lo tanto sern reconocidas por nuestra funcin. Ahora hagamos una prueba con los datos de ejemplo para ver cmo la funcin COLORFC devuelve el color aplicado a cada celda de acuerdo a la regla de formato condicional activa. Recuerda que las reglas creadas resaltan de rojo las celdas con un valor superior a 750 y de color verde los valores menores a 250.
Nuestra funcin VBA funciona correctamente al devolver el cdigo de color adecuado para cada celda. El otro tipo de reglas consideradas en la funcin COLORFC son aquellas basadas en una expresin, que generalmente son las reglas basadas en una frmula que contiene funciones de Excel. Pero debo darte una mala noticia, esta opcin solo funcionar si tenemos Excel en ingls. Y a continuacin explico por qu.
Al momento de crear una regla de formato condicional que utilice una funcin de Excel, colocaremos su nombre en castellano. Dicha frmula se almacenar en una propiedad de la regla de formato condicional y al momento de evaluarla desde VBA la cadena de texto contendr el nombre de la funcin en espaol lo cual ocasionar un error ya que VBA solamente entiende las funciones de Excel por su nombre en ingls. An as he dejado esta funcionalidad porque existe un porcentaje de usuarios que utilizan Excel en ingls y ellos podrn obtener el color de las celdas que utilicen reglas de formato condicional basadas en frmulas. Despus de todas estas aclaraciones (que eran necesarias), tenemos una funcin que nos devolver el color aplicado a una celda desde una regla de formato condicional, as que ahora solo debemos utilizarla para sumar o contar celdas por color. Sumar por color de formato condicional Para sumar por color de formato condicional crear una nueva funcin VBA de la siguiente manera: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Function SUMARPORCOLORFC(CeldaColor As Range, Rango As Range) As Double
Dim Celda As Range Dim Total As Double Dim Color As Long
Color = COLORFC(CeldaColor)
For Each Celda In Rango.Cells If COLORFC(Celda) = Color Then Total = Total + Celda.Value End If Next Celda
SUMARPORCOLORFC = Total
End Function El primer argumento de la funcin es una celda que contiene el color por el cual deseamos sumar, as que una de las primeras acciones es obtener dicho color con la funcin COLORFC. Posteriormente se har un recorrido por todo el rango de celdas para sumar el valor de aquellas que tengan el mismo color. Observa cmo trabaja nuestra funcin con los datos de ejemplo:
La funcin devuelve correctamente la suma de las celdas A1 y A9 que son las que tienen el mismo color que la celda A1 que ha sido indicada como el primer argumento de la funcin. Contar por color de formato condicional Si en lugar de sumar deseamos contar las celdas que tienen un mismo color, ser suficiente con modificar la funcin anterior para que en lugar sumar el valor de la celda se sume el valor 1 por cada celda con el color indicado. El cdigo de esta nueva funcin es el siguiente: 1 2 3 4 5 6 7 8 9 10 11 12 Function CONTARPORCOLORFC(CeldaColor As Range, Rango As Range) As Integer
Dim Celda As Range Dim Total As Integer Dim Color As Long
Color = COLORFC(CeldaColor)
For Each Celda In Rango.Cells If COLORFC(Celda) = Color Then Total = Total + 1 End If Next Celda 13 14 15 16 17
CONTARPORCOLORFC = Total
End Function Al utilizar esta funcin con los mismos datos de ejemplo podrs observar que la funcin CONTARPORCOLORFC nos devuelve el valor 2 que corresponde a las celdas con el mismo color que la celda A3:
Descarga el libro de trabajo para comenzar a sumar y contar celdas por color de formato condicional en tus propios libros de trabajo. Solo recuerda que las funciones creadas en este artculo validarn solo las reglas de formato condicional basadas en el valor de la celda. Tambin recuerda que podrs evaluar reglas basadas en frmulas solamente si tienes una versin en ingls de Excel. Cmo multiplicar horas por dinero en Excel Tal vez te ha sucedido que llega el momento del pago a los empleados de la empresa y tienes lista la informacin en Excel con las horas trabajadas durante la semana. Ya has calculado el total de horas a pagar y solo hace falta la multiplicacin por la tarifa establecida, sin embargo solo obtienes montos incorrectos. Cmo se hace la multiplicacin de horas por dinero en Excel? Todo indicara que es un clculo muy sencillo pero por ms que lo intentas solo consigues datos errneos. En la siguiente imagen podrs darte cuenta a lo que me refiero.
La celda C9 tiene la frmula =C7*C8 que es la multiplicacin del total de horas trabajadas por la tarifa indicada. El resultado debera ser $4,050 pero en su lugar tenemos solo $168.75 que es un monto incorrecto. Si analizamos las celdas involucradas en el clculo nos damos cuenta que la tarifa por hora es simplemente el valor numrico 100. Por otro lado la celda C7 hace la suma del rango C2:C6 y la nica peculiaridad es que tiene aplicado un formato personalizado para desplegar correctamente la suma de horas y minutos:
Cul de los dos valores es el culpable del error? Definitivamente no es el valor numrico de la tarifa por hora, as que el problema debe ser ocasionado por la suma de horas. Las horas en Excel son decimales El problema con la multiplicacin de tiempo por dinero es que las horas en Excel no son en realidad lo que parece. Para darnos cuenta del valor real de la celda C7 basta con aplicar el formato General a dicha celda:
Las 40 horas y 30 minutos que inicialmente desplegaba la celda C7, son en realidad el valor numrico 1.6875 y es la razn por la cual el monto a pagar calculado en la celda C9 nos devuelve como resultado el monto $168.75. Al trabajar con datos de tiempo en Excel vemos desplegadas las horas y minutos tal como los conocemos, pero su valor real es un nmero decimal entre 0.0, para las 00:00:00 horas, y hasta 0.99999999 que representa las 23:59:59 horas. Eso quiere decir que el valor entero 1 significa un da completo de 24 horas y por tal motivo el valor de la celda C7 significa que tenemos 1 da entero y 0.6875 de otro da. Multiplicar horas por dinero en Excel Para resolver este problema del valor decimal de las horas ser suficiente con agregar la multiplicacin por 24 de manera que se haga la conversin del valor decimal a la cantidad correcta de horas. Observa cmo al incluir esta multiplicacin en la frmula de la celda C9 obtenemos el resultado correcto:
Ahora ya sabes cmo multiplicar horas por dinero en Excel de manera que puedas calcular y pagar correctamente a cada empleado por las horas trabajadas en la empresa. Insertar smbolos y caracteres especiales Excel nos permite insertar smbolos dentro de las celdas de una manera fcil y rpida a travs del cuadro de dilogo Smbolos. Algunos de los caracteres que podremos insertar sern los smbolos de monedas, letras del alfabeto griego o caracteres especiales como el smbolo de derechos reservados. Para insertar un smbolo en Excel debes ir a la ficha Insertar y pulsar el botn Smbolo que se encuentra dentro del grupo Smbolos.
Se mostrar el cuadro de dilogo Smbolo el cual contiene las pestaas Smbolos y Caracteres especiales.
En la pestaa Smbolos puedes cambiar el tipo de fuente seleccionada para que se muestren smbolos diferentes. Te recomiendo seleccionar las fuentes Symbol, Webdings y Wingdings donde encontrars una gran cantidad de smbolos que pueden ser de utilidad y que generalmente no estn presentes en el resto de las fuentes. Una vez que hayas encontrado el smbolo que deseas insertar solamente debes seleccionarlo y pulsar el botn Insertar y el smbolo se insertar en la celda activa.
Por otro lado, en la pestaa Caracteres especiales encontrars una lista de algunos caracteres especiales que son usados frecuentemente como el smbolo de Copyright o de Marca registrada. De igual manera debers seleccionar el carcter que necesitas y pulsar el botn Insertar para incluirlo en la celda activa. Una vez que hayas terminado de insertar los smbolos necesarios debes pulsar el botn Cerrar y estars de regreso en la hoja de Excel. Referencias 3D Una referencia nos ayuda a identificar una celda o rango de celdas y de esta manera podemos indicar a Excel el lugar exacto donde buscar los valores o los datos que deseamos utilizar. Hoy hablar de manera especial de las referencias 3D en Excel. Referencias de celdas tradicionales Para comprender mejor el beneficio de las referencias 3D, hagamos un ejemplo utilizando referencias de celdas de la manera tradicional. Supongamos que tengo un libro de Excel con 12 hojas, una para cada mes del ao y dentro de cada hoja, en la celda B2, tengo el dato del total de ventas del mes.
Ahora deseo crear una nueva hoja que tendr la suma de las celdas B2 de todas las hojas. Para obtener esta suma podra sumar cada una de las celdas B2 de todas las hojas de la siguiente manera:
Con esta frmula obtendr la suma adecuada, sin embargo me tardar algunos segundos en construir la formula y probablemente cometer algn error al introducirla. Para evitar cualquier problema, podemos hacer esta misma suma de una manera mucho ms rpida utilizando una referencia 3D. Crear una referencia 3D en Excel Cuando deseamos utilizar la misma celda de varias hojas podemos crear una referencia 3D. Para nuestro ejemplo la referencia 3D para las celdas B2 de todas las hojas de los meses la formamos de la siguiente manera: ENE:DIC!B2 La referencia 3D indica a Excel que debe considerar todas las hojas de Excel comprendidas entre la hoja ENE y la hoja DIC y tomar el valor de la celda B2 de todas ellas. Al indicar esta referencia como el argumento a la funcin SUMA obtendremos el resultado deseado:
En este ejemplo he utilizado una referencia 3D para indicar una sola celda, sin embargo las referencias 3D tambin se pueden utilizar con rangos de celdas. El Asistente para tablas y grficos dinmicos Por muchos aos he utilizado el Asistente para tablas y grficos dinmicos en Excel para crear mis tablas dinmicas, sin embargo a partir de Excel 2007 este Asistente ya no est disponible en la Cinta de opciones y no es tan simple encontrarlo, pero hoy te mostrar cmo hacerlo. Encontrando el asistente para tablas dinmicas Un mtodo para mostrar el Asistente para tablas y grficos dinmicos es utilizar el atajo de teclado: ALT+T+B. (Si tienes Excel en ingls el atajo es: ALT+D+P). La verdad es que no es tan sencillo ingresar esta combinacin de teclas ya que si no se hace de manera adecuada se abrir el cuadro de dilogo para crear una Tabla de datos. El mtodo que yo sigo es pulsar la tecla ALT por 2 segundos y mientras la mantengo pulsada, ingresar la combinacin de las teclas T+B. Pero no te preocupes si no puedes mostrar el Asistente con este mtodo ya que existe otra alternativa que explico a continuacin.
Otro mtodo para mostrar el Asistente para tablas y grficos dinmicas es agregarlo a la barra de herramientas de acceso rpido y para hacerlo debes hacer clic derecho sobre la barra de herramientas y seleccionar la opcin Personalizar barra de herramientas de acceso rpido y se mostrar el cuadro de dilogo Opciones de Excel. En la seccin Comandos disponibles en debers seleccionar la opcin Todos los comandos y entonces buscar el comando correspondiente al Asistente:
De esta manera podrs tener siempre disponible en la barra de herramientas el Asistente para tablas y grficos dinmicos que nos ayudar en la creacin de tablas dinmicas. Crear una tabla dinmica con el Asistente La primera de las opciones del Asistente nos permite crear una tabla dinmica con los datos que tengamos en nuestras hojas de Excel, por ello esta opcin es llamada Lista o base de datos de Microsoft Excel.
Al seleccionar esta opcin y hacer clic en Siguiente, se mostrar el segundo paso del proceso que nos permitir especificar el rango de celdas en las que estar basada nuestra tabla dinmica.
Una vez seleccionado el rango adecuado, pulsamos el botn Siguiente y podremos decidir si deseamos crear la tabla dinmica en una hoja de clculo nueva o en una hoja ya existente.
Pulsamos el botn Finalizar y nuestra tabla dinmica habr s Cmo crear una tabla dinmica Las tablas dinmicas en Excel reciben su nombre por su capacidad de cambiar dinmicamente la informacin agrupada con tan solo rotar las columnas o filas de la tabla. En esta ocasin veremos un ejemplo claro de cmo crearlas. Crear una tabla dinmica en Excel 2010 Haz clic sobre cualquier celda de la tabla de datos que se desea considerar en la nueva tabla dinmica.
Ahora selecciona el comando Tabla dinmica que se encuentra dentro del grupo Tablas de la ficha Insertar.
Se mostrar el cuadro de dilogo Crear tabla dinmica. Si es necesario podrs ajustar el rango de datos que se considerar en la tabla dinmica.
En este mismo cuadro de dilogo se puede elegir si se desea colocar la tabla dinmica en una nueva hoja de Excel o en una ya existente. Haz clic en el botn Aceptar y se crear la nueva tabla dinmica.
Excel agregar en la parte izquierda del libro la tabla dinmica y en la parte derecha la lista de campos. Esta lista de campos est dividida en dos secciones, primero la lista de todos los campos de los cuales podremos elegir y por debajo una zona a donde arrastraremos los campos que darn forma al reporte ya sea como columna, fila, valor o como un filtro. Para completar la tabla dinmica debemos arrastrar los campos al rea correspondiente. Siguiendo el ejemplo propuesto del artculo anterior, colocar como columna el campo Producto y como fila al campo Ciudad. Finalmente como valores colocar el campo Ventas.
De manera predeterminada Excel aplica la funcn SUMA a los valores y la tabla dinmica que resulta despus de hacer esta configuracin es la siguiente:
Utilizando una tabla dinmica fue posible crear un reporte de una manera fcil y sin la necesidad de utilizar frmulas. Pronto veremos cmo se pueden elaborar tablas dinmicas ms complejas que permitirn realizar un anlisis profundo de la informacin. Formularios en Excel Los formularios en Excel son un mtodo para ingresar datos a nuestras hojas y son de mucha utilidad porque nos ayudan a evitar errores en la captura de informacin. Podemos comparar los formularios de Excel con los formularios impresos en papel. Qu es un formulario en Excel? Seguramente has llenado un formulario en papel, tal vez cuando has acudido a alguna oficina de gobierno para realizar un trmite, as que sabes de lo que estoy hablando. Estos formularios contienen instrucciones precisas de lo que debes escribir y contienen los recuadros necesarios para ingresar los datos. Los formularios en Excel no son tan diferentes de los formularios impresos ya que de igual manera proveen de los espacios necesarios para ingresar los datos. Los formularios en Excel utilizan objetos especiales conocidos como controles de formulario que son precisamente los que nos permiten agregar campos de texto, listas, botones de opcin entre otras cosas ms. Tipos de formularios en Excel Cuando hablamos de formularios en Excel, es necesario recordar que podemos crear tres tipos diferentes de formularios: Formulario de datos. Hojas de clculo con controles de formulario o controles ActiveX. Formularios de usuario en VBA. A continuacin describir brevemente cada uno de ellos. Formulario de datos A travs de un formulario de datos podemos mostrar al usuario la informacin de una sola fila de una tabla. En este formulario se puede hacer la edicin de la informacin e inclusive crear un nuevo registro para la tabla.
Excel puede generar automticamente un formulario de datos para cualquier tabla. Un detalle importante que debes saber sobre los formularios de datos es que si una celda contiene una frmula no podrs modificar dicha frmula mediante el formulario sino que solamente se mostrar el resultado del clculo sin poder editarlo. Para saber ms sobre este tema consulta el artculo: Agregar filas a una tabla de Excel. Hoja de clculo con controles de formulario Ya que las celdas de una hoja de Excel nos sirven para introducir informacin, podemos pensar en una hoja como un gran formulario. De esta manera, si agregamos controles de formulario a nuestra hoja podremos crear formularios de entrada de datos muy tiles. Por ejemplo, podemos agregar a nuestra hoja un control de cuadro de lista para facilitar la seleccin de los elementos.
De igual manera podemos agregar botones, cuadros combinados, casillas de verificacin y otros controles ms que nos ayudarn a crear formularios avanzados. Formulario de usuario en VBA Los formularios de usuario en VBA, tambin conocidos como UserForm, son cuadros de dilogo que hacen uso de controles de formulario para solicitar informacin al usuario. Estos formularios son creados desde el Editor de Visual Basic y administrados desde cdigo VBA.
Una vez que se ha creado el formulario de usuario podemos arrastrar y soltar los controles que estn disponibles desde el Cuadro de herramientas:
Si quieres crear un formulario bsico en VBA, sigue los pasos descritos en el artculo Formularios en VBA. Los diferentes tipos de formularios en Excel nos evitarn dolores de cabeza ya que podremos tener cierto grado de control sobre el ingreso de datos que otras personas realizan sobre nuestras hojas de Excel. Base de datos en Excel Una base datos es un conjunto de datos que ha sido organizado bajo un mismo contexto y cuya informacin est almacenada y lista para ser utilizada en cualquier momento. Las bases de datos pueden almacenar informacin sobre personas, productos, ventas o cualquier otra cosa. Una base de datos organiza la informacin relacionada en tablas las cuales estn compuestas por columnas y filas. Una tabla tendr un nmero especfico de columnas, pero tendr cualquier nmero de filas.
Si observas con detenimiento la imagen anterior, notars que una tabla se asemeja mucho a una hoja de Excel la cual tambin est dividida en columnas y filas. Por esa razn Excel ha sido utilizado por mucho tiempo, y por muchas personas, como un repositorio de datos. Diseo de bases de datos en Excel Si diseas y organizas adecuadamente la informacin dentro de tu libro de Excel podrs consultar tus datos de una manera fcil y eficiente, as que en esta ocasin hablaremos sobre las mejores prcticas para crear una base de datos en Excel que te permitirn organizar y estructurar adecuadamente la informacin. Como ejemplo analizaremos el caso de una pequea librera que desea crear un catlogo de sus libros en Excel as como tener una lista de sus clientes y las rdenes de compra. Antes de crear la base de datos en Excel comenzaremos por crear el diseo siguiendo los pasos descritos en el artculo Diseo de bases de datos. Paso 1: Identificar las tablas de la base de datos Nuestro primer paso en el diseo de una base de datos en Excel ser identificar las tablas que ocuparemos para organizar la informacin. Para nuestro ejemplo de la librera podemos mencionar las siguientes tablas:
Para identificar adecuadamente las tablas de una base de datos debes poner atencin en las agrupaciones naturales de la informacin, es decir, en los sujetos que interactan en la problemtica analizada. En este caso los sujetos principales son los libros, los clientes y las rdenes. Paso 2: Determinar los campos de las tablas Una vez que hemos identificado las tablas debemos indicar el nombre de cada una de sus columnas (campos). El nombre del campo deber ser descriptivo y nos ayudar a identificar cada una de las propiedades de un elemento de la tabla. Por ejemplo, para cada libro en venta en la librera guardaremos su cdigo ISBN, el ttulo, el autor y el precio por lo que dicha tabla quedar definida de la siguiente manera:
Los campos de cada tabla dependern de la informacin que est a tu disposicin para ser ingresada en la base de datos. Por ejemplo, algunas empresas o negocios tendrn inters en capturar ms informacin sobre sus clientes lo cual har que su tabla de Clientes tenga ms campos que los mostrados en el ejemplo anterior. Paso 3: Identificar la llave primaria de cada tabla Una llave primaria nos permitir identificar de manera nica cada uno de los registros de las tablas. En el caso de la tabla Libros, el ISBN ser la llave primaria ya que es un cdigo nico internacional para cada libro publicado por lo que dicho nmero jams se repetir.
En el caso de las tablas para rdenes y Clientes crearemos un nmero consecutivo que identificar de manera nica cada una de las filas. Paso 4: Identificar las relaciones entre tablas Este paso es de utilidad para asegurarnos que podremos vincular la informacin de las tablas a travs de la relacin que existe entre dos de sus campos. Por ejemplo, si para una determinada orden de compra quiero saber el ttulo del libro que ha sido vendido, bastar con relacionar la columna ISBN de la tabla rdenes con la columna ISBN de la tabla Libros para conocer el ttulo.
De manera similar, si deseo conocer el cliente para una determinada orden de compra, solo deber seguir la relacin indicada por el campo IDCliente en ambas tablas. Paso 5: Identificar datos repetidos en tablas Aun cuando pensemos que hemos terminado con el diseo de nuestra base de datos, es importante hacer un breve ejercicio con algunos datos reales para identificar la posible existencia de datos repetidos y tomar las decisiones adecuadas para evitarlos. Por ejemplo, considera el caso de la tabla Libros donde podramos tener uno o ms ttulos escritos por el mismo autor. En ese caso, estaramos repitiendo el nombre y apellido del autor en varios registros de la tabla.
Para evitar la repeticin de datos lo recomendable es crear una nueva tabla que almacene la informacin de los autores y hacer referencia a dicha tabla a travs de su campo llave tal como se muestra en la siguiente imagen:
De esta manera evitaremos la repeticin en el nombre de los autores y tambin se evitar la captura de un sin nmero de variantes del mismo. Para seguir con nuestro anlisis, haremos una captura de datos de prueba de una orden, por ejemplo:
Estos son los datos de la orden de compra nmero 1 donde el cliente ha comprado 3 libros, siendo dos de esas copias del mismo ttulo. El problema con estos datos es que se repite el nmero de orden y eso no sera posible ya que esa es nuestra llave primaria en la tabla y no puede repetirse. Adems para cada registro se repite la Fecha, as como las columnas IDCliente y TipoPago. Para resolver este problema debemos crear una tabla adicional que almacenar los libros de cada orden de compra de la siguiente manera:
Es as como el haber identificado datos repetidos en las tablas nos ha hecho tomar la decisin de agregar tablas adicionales a nuestro diseo para minimizar el espacio utilizado por nuestra base de datos que ser de gran importancia al momento de que los datos crezcan. De esta manera nuestro diseo final queda de la siguiente manera:
Crear la base de datos en Excel Una vez que tenemos el diseo de la base de datos podemos crearla fcilmente en Excel siguiendo dos recomendaciones: Cada tabla del diseo ser una tabla de Excel. Colocar cada tabla en su propia hoja de Excel. El motivo para utilizar tablas de Excel es que existen mltiples beneficios de utilizar tablas entre los cuales estn los filtros y el reconocimiento automtico de nuevas filas y columnas. Por otro lado, la razn por la cual colocar cada tabla en su propia hoja de Excel es para facilitar el crecimiento de los datos ya que si colocas varias tablas en una misma hoja probablemente tendrs que moverlas o redefinirlas cada vez que alguna de ellas aumente de tamao y se sobrepongan entre s. Consultar la base de datos en Excel Una vez que se ha creado la base de datos en Excel y comiencen a crecer los datos, seguramente te encontrars con la necesidad de relacionar la informacin de diferentes tablas para obtener datos complementarios. Por ejemplo, considera las siguientes dos tablas:
La Hoja.Ordenes contiene una tabla llamada Ordenes y la Hoja.Clientes contiene la tabla Clientes. Si al consultar la tabla Ordenes deseo conocer el Email del cliente que ha efectuado dicha compra, puedo utilizar funciones de Excel para obtener dicha informacin. Ya que estoy utilizando tablas de Excel, puedo hacer uso de las referencias estructuradas, por ejemplo: =BUSCARV(Ordenes[IDCliente], Clientes, 5,FALSO) Esta frmula buscar el valor de la columna IDCliente, que pertenece a la tabla Ordenes, dentro de la tabla Clientes y devolver la columna 5 de esta ltima tabla. Observa el resultado de la frmula:
El resultado de la frmula es correcto ya que la orden nmero 1 fue hecha por el cliente con un IDCliente igual a 5 y que corresponde a Luis cuyo Email es el mostrado en la celda F2. De esta manera puedes relacionar la informacin de las diferentes tablas en tu base de datos en Excel, ya sea utilizando la funcin BUSCARV o la combinacin de funciones INDICE/COINCIDIR ya que ambas nos permite crear frmulas para buscar datos. Si quieres practicar un poco ms con este tipo de frmulas, descarga el libro de trabajo que contiene el ejemplo que acabamos de realizar. Antes de finalizar este artculo, es necesario hacer algunas aclaraciones importantes sobre las bases de datos en Excel, pero para eso necesito explicar un poco sobre los sistemas de gestin de bases de datos. Sistemas de gestin de bases de datos (DBMS) Varias dcadas atrs, cuando las computadoras comenzaron a hacerse ms rpidas y eficientes en el manejo de informacin, se hizo necesaria la creacin de un sistema que se encargase de las operaciones con los datos. Desde la dcada de los aos sesenta se crearon los primeros sistemas de gestin de bases de datos (DBMS por sus siglas en ingls), cuya finalidad era facilitar el almacenamiento, modificacin y extraccin de los datos.
El objetivo principal de un DBMS es coordinar y proteger el acceso a la informacin y dicho objetivo se logra porque los usuarios o aplicaciones solo pueden obtener datos utilizando alguna interfaz o lenguaje de alto nivel como SQL y el sistema de gestin de bases de datos se encargar de devolver la informacin solicitada ya que el usuario, o aplicacin, jams tiene contacto directo con los datos. Es muy comn que en el campo de la informtica se hable de que una base de datos debe tener un DBMS para ser considerada como una verdadera base de datos. Un ejemplo de un DBMS es el producto de Microsoft conocido como SQL Server que es un motor de base de datos diseado para el ambiente empresarial. Excel no es un DBMS Aunque exista una gran cantidad de personas que utilizamos Excel para almacenar informacin, eso no lo convierte en un sistema de gestin de bases de datos. Excel no tiene un servicio que controle la insercin o eliminacin de los datos sino que el mismo usuario puede hacerlo directamente en la aplicacin.
Algunas desventajas que tenemos al utilizar Excel para almacenar nuestros datos son las siguientes: Solo un usuario puede acceder a la informacin al mismo tiempo. Excel comenzar a ponerse lento cuando la base de datos crezca en gran manera. No es posible establecer un nivel de seguridad avanzado como para proteger ciertos datos de ciertos usuarios. Conclusin La realidad es que hay millones de usuarios de Excel que utilizamos la herramienta como un repositorio de datos y aunque no es formalmente un sistema de gestin de bases de datos, es posible utilizarlo para guardar informacin til. Mi recomendacin es que si te encuentras con que alguna de las desventajas de Excel te est causando dolores de cabeza con tu trabajo, entonces considera fuertemente la opcin de utilizar algn DBMS como Microsoft SQL Server o Access. Si las capacidades de Excel han sido hasta ahora suficientes para ti, entonces te recomiendo seguir los pasos descritos en este artculo para hacer uso de las mejores prcticas en el diseo y construccin de bases de datos en Excel y hacer ms eficiente el trabajo y organizacin de la informacin. Crear una imagen de un rango de celdas Excel nos permite convertir un rango de celdas en una imagen. Esta imagen puede ser totalmente esttica o tambin puede ser una imagen que refleja los cambios de los datos originales. Imagen esttica de un rango Para crear una fotografa de un rango de celdas debes seleccionar todas las celdas y oprimir la combinacin de teclas Ctrl + C para copiarlas al portapapeles. Despus debes pulsar el botn Imagen que se encuentra en el men desplegable del botn Pegar.
El resultado ser una imagen que ser colocada justo encima del rango de celdas original por lo que debes mover con el ratn la nueva imagen hacia una nueva ubicacin. Al seleccionar la imagen se mostrar la ficha contextual Herramientas de imagen la cual te permitir aplicar un formato.
La imagen que creamos es esttica, es decir, los cambios que hagamos al rango de celdas original no se vern reflejados en la imagen. Creando una imagen vinculada Para crear una imagen que se actualice con los datos seguimos un procedimiento similar al anterior pero al momento de pulsar el botn Pegar seleccionamos el comando Imagen vinculada.
Excel pegar la imagen en la hoja y quedar vinculada al rango de celdas original. Si hacemos algn cambio en los datos se vern reflejados dentro de la imagen. De igual manera podremos aplicar el formato que necesitemos, en este ejemplo he colocado la imagen sobre una forma.
Puedes darte cuenta que una imagen est vinculada porque al seleccionarla se mostrar dentro de la barra de frmulas el rango de celdas al que est vinculada. Si deseas desvincular la imagen ser suficiente con borrar el contenido de la barra de frmulas. Macro para copiar datos de una hoja a otra en Excel Cuando necesitas copiar celdas de una hoja a otra en Excel existe la opcin de copiar los datos mediante frmulas, sin embargo dicho mtodo hace un uso extensivo de funciones y adems es necesario agregar una hoja intermedia para remover los datos no deseados. Hoy crearemos una macro para copiar datos de una hoja a otra y podrs ver que este mtodo es mucho ms directo y adems deja nuestras hojas sin tantas frmulas. Al desarrollar esta macro nos aseguraremos de que se pueda copiar un rango completo de celdas o que se puedan copiar solamente las celdas visibles despus de haber aplicado un filtro. Para nuestro ejemplo trabajaremos con los siguientes datos:
Declarar e inicializar objetos Comenzar por agregar un mdulo de cdigo y definir la subrutina CopiarCeldas que ser la encargada de realizar la copia de los datos y que contendr los objetos necesarios para referenciar las hojas de origen y destino as como los rangos de celdas correspondientes. De hecho, para la tcnica utilizada en esta macro, solo ser necesario indicar la esquina superior izquierda del rango que deseamos copiar.
Al momento de personalizar esta macro para copiar tus propios datos, debers realizar las siguientes configuraciones: Configurar los objetos wsOrigen y wsDestino con el nombre de la hoja que contiene los datos originales y la hoja hacia la cual sern copiados. Configurar la constante celdaOrigen con la referencia de celda ubicada en la esquina superior izquierda del rango de celdas que ser copiado. La macro detectar y copiar automticamente las columnas y filas adyacentes. Configurar la constante celdaDestino con la referencia de celda en donde se comenzar a pegar el rango copiado. Las ltimas dos instrucciones del cdigo mostrado anteriormente inicializan las variables rngOrigen y rngDestino con la informacin de los objetos previamente configurados. Copiar y pegar datos con VBA Despus de haber definido los objetos a utilizar solo nos restar copiar las celdas de la hoja origen y pegarlas en la hoja destino.
La primera lnea hace la seleccin de la celda origen, que es la esquina superior izquierda del rango de datos original. En seguida se aumenta la seleccin hacia abajo (xlDown), hasta la ltima fila adyacente y posteriormente hacia la derecha (xlToRight). Pronto vers que esta tcnica de seleccin de celdas ser til para copiar las celdas visibles. Finalmente se llama el mtodo Copy y en seguida el mtodo PasteSpecial sobre el rango destino. El parmetro xlPasteValues pega solamente los valores, pero si quieres pegar inclusive el formato de las celdas, entonces debers utilizar el parmetro xlPasteAll. Macro para copiar datos en Excel Ahora que ya tienes una idea clara de las instrucciones utilizadas en la elaboracin de esta macro, te dejo el cdigo completo de la subrutina CopiarCeldas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Sub CopiarCeldas()
'Definir objetos a utilizar Dim wsOrigen As Excel.Worksheet, _ wsDestino As Excel.Worksheet, _ rngOrigen As Excel.Range, _ rngDestino As Excel.Range
'Indicar las hojas de origen y destino Set wsOrigen = Worksheets("Origen") Set wsDestino = Worksheets("Destino")
'Indicar la celda de origen y destino Const celdaOrigen = "A1" Const celdaDestino = "A1"
'Inicializar los rangos de origen y destino Set rngOrigen = wsOrigen.Range(celdaOrigen) Set rngDestino = wsDestino.Range(celdaDestino) 19 20 21 22 23 24 25 26 27 28 29 30 31
'Seleccionar rango de celdas origen rngOrigen.Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy
'Pegar datos en celda destino rngDestino.PasteSpecial xlPasteValues Application.CutCopyMode = False
End Sub Copiar datos de una hoja a otra Para probar nuestra macro recin creada insertar un botn de formulario en la hoja que contiene los datos originales y al momento de que Excel muestre el cuadro de dilogo Asignar macro seleccionar la subrutina CopiarCeldas. Como resultado tendremos un botn que nos permitir copiar datos de una hoja a otra en Excel.
Para nuestra primera prueba dejar el cdigo de la macro tal como fue desarrollado, es decir con la celdaOrigen haciendo referencia a la celda A1 y lo mismo para la celdaDestino. Al pulsar el botn copiar, la hoja Destino de nuestro libro se ver de la siguiente manera:
Los datos se han copiado correctamente de la hoja Origen a la hoja Destino. Las celdas no tienen formato porque la instruccin VBA que usamos para pegar hace uso del parmetro xlPasteValues. Copiar celdas visibles Para el segundo ejemplo haremos los siguientes ajustes. Primero borrar los datos de la hoja Destino. Despus aplicar un filtro a la columna Categora en los datos de la hoja Origen.
Finalmente editar la macro (lnea 28) para cambiar el parmetro xlPasteValues por el parmetro xlPasteAll de la siguiente manera: rngDestino.PasteSpecial xlPasteAll Con estos ajustes realizados, pulsaremos el botn Copiar ubicado en la hoja Origen y obtendremos el siguiente resultado en la hoja Destino:
En esta ocasin se han copiado solamente las celdas visibles y adems tienen el mismo formato que las celdas originales. Ahora descarga el libro de trabajo y comienza a utilizar la macro para copiar datos de una hoja a otra en Excel. Solo recuerda que debes configurar cada una de las variables en el cdigo VBA de acuerdo al nombre de las hojas de tu libro e indicar las referencias a las celdas de origen y destino. Controles ActiveX en Excel Los controles ActiveX son un tipo de controles que nos permiten agregar funcionalidad de formularios a nuestros libros de Excel. Existe otro tipo de controles que es conocido como Controles de formulario y que tienen una funcionalidad similar, sin embargo existen algunas diferencias entre ambos tipos. Controles ActiveX y controles de formulario Los controles de formulario fueron introducidos desde la versin 4 de Excel y por lo tanto han estado presentes en la aplicacin por ms tiempo que los controles ActiveX los cuales comenzaron a ser utilizados a partir de Excel 97. Ya que los controles ActiveX fueron introducidos posteriormente ofrecen ms posibilidades de configuracin y formato que los controles de formulario. Ambos tipos de controles se encuentran en la ficha Programador.
La diferencia ms significativa entre ambos es la manera en como podemos obtener informacin de los controles al momento de interactuar con el usuario. Los controles de formulario solamente respondern despus de que el usuario ha interactuado con ellos, como despus de haber pulsado el botn. Por el contrario, los controles ActiveX responden de manera continua a las acciones del usuario lo cual nos permite realizar acciones como cambiar el tipo de puntero del mouse que se muestra al colocar el puntero del ratn sobre el botn. Propiedades de los controles ActiveX A diferencia de los controles de formulario, los controles ActiveX tienen una serie de propiedades que podemos configurar pulsando el botn Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.
Antes de poder ver las propiedades de un control ActiveX debemos pulsar el botn Modo Diseo el cual nos permitir seleccionar el control y posteriormente ver sus propiedades. Cada tipo de control ActiveX mostrar una ventana de Propiedades con sus propias caractersticas. A continuacin un ejemplo de la ventana Propiedades para un botn de comando ActiveX:
Controles ActiveX con subrutinas VBA Otra diferencia entre los controles de formulario y los controles ActiveX es que los primeros pueden tener asignada una macro y al hacer clic sobre el control de formulario se iniciar la ejecucin de dicha macro. Los controles ActiveX no tienen asignada una macro explcitamente sino que podemos asignar cdigo VBA para cada evento del control. Un evento de un control ActiveX puede ser el evento de hacer clic sobre el control, el evento de hacer doble clic, el evento de obtener el foco sobre el control ActiveX, entre otros eventos ms. Para asignar cdigo a uno de los eventos de un control ActiveX solamente debemos hacer clic derecho sobre l y seleccionar la opcin Ver cdigo.
Esto mostrar el Editor de Visual Basic con una subrutina para el evento Click() donde podremos escribir nuestro cdigo.
En la lista desplegable de la derecha podemos observar la lista de eventos disponibles para nuestro control ActiveX y para los cuales podemos escribir cdigo VBA. Al seleccionar cualquiera de dichos eventos se insertar una nueva subrutina que podremos utilizar. Son precisamente la gran cantidad de eventos disponibles para los controles ActiveX lo que los hace controles muy poderosos que podemos utilizar en nuestros formularios. Otra ventaja de los controles ActiveX en Excel En la versin de Excel 2010 algunos controles de formulario han dejado de ser soportados y no podemos utilizarlos ms en nuestras hojas. Ese es el caso del control de formulario conocido como campo de texto. Sin embargo, dentro de la lista de controles ActiveX seguimos teniendo disponible el control llamado Cuadro de texto lo cual puede hacer atractiva la opcin de utilizar controles ActiveX en Excel en lugar de controles de formulario
Marca de agua en Excel Para insertar una marca de agua en Excel es necesario utilizar una tcnica alternativa ya que la herramienta no tiene una funcionalidad integrada para esta tarea. En esta ocasin mostrar cmo utilizar un texto o una imagen como marca de agua. Texto como marca de agua en Excel Una vez que te encuentras en la hoja donde deseas insertar un texto como marca de agua debes hacer clic sobre la ficha Insertar y pulsar el botn Encabez. pie pg. que se encuentra dentro de la ficha Texto.
Se insertar una nueva rea tanto para el Encabezado como para el Pie de pgina dentro de la hoja de Excel. Dentro del Encabezado ingresa el texto que deseas que se muestre como marca de agua. Selecciona el tamao adecuado de la fuente as como su color.
Finalmente, para mover el texto hacia abajo posiciona el cursor al inicio de la palabra y presiona la tecla Entrar cuantas veces sea necesario para tener el texto a la altura que deseas.
Imagen como marca de agua en Excel Para colocar una imagen como marca de agua en Excel debemos utilizar el mismo procedimiento anterior dentro del Encabezado de una hoja solo que en esta ocasin en lugar de escribir un texto se insertar una imagen. Una vez que estamos listos para insertar el Encabezado debemos ir a la ficha contextual Herramientas para encabezado y pie de pgina y pulsar el botn Imagen.
Se mostrar un cuadro de dilogo que nos permitir buscar la imagen que deseamos insertar y al pulsar el botn Insertar se mostrar el texto &[Imagen] como parte del Encabezado de la hoja.
Si deseas ver la imagen que has insertado en el encabezado es suficiente con hacer clic sobre cualquier celda fuera del Encabezado y Excel mostrar la imagen.
Si deseas mover la imagen hacia abajo debers seguir la misma tcnica mostrada anteriormente que es posicionarte al principio del texto del Encabezado, que en este caso sera antes del smbolo &, y pulsar la tecla Entrar para mover la imagen hacia abajo. Si necesitas cambiar el tamao de la imagen que acabamos de insertar como marca de agua debes seleccionar el botn Dar formato a la imagen que se encuentra en la ficha contextual Herramientas para encabezado y pie de pgina.
Se mostrar un cuadro de dilogo con las propiedades de la imagen y podrs experimentar con ellas hasta lograr los ajustes necesarios.