Вы находитесь на странице: 1из 139

Calcular una fecha futura en Excel

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

Application.ScreenUpdating = False
Celda.Select
ReglaActiva = Evaluate(.Formula1)
Range(ActiveCell.Address).Select
Application.ScreenUpdating = True

End If

'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.
Ordenar hojas de Excel
alfabticamente
Las hojas de un libro de Excel nos permiten gestionar adecuadamente nuestros
datos, pero si llegamos a tener una cantidad considerable de hojas se
dificultar el encontrar algunas de ellas. La solucin sera ordenar las hojas
de Excel alfabticamente de manera que se nos facilite su bsqueda.
Para este ejemplo utilizar un libro de Excel que contiene 183 hojas que han
sido insertadas de manera aleatoria, cada una con el nombre de un pas, pero
con tantas hojas en el libro se ha convertido en un dolor de cabeza el encontrar
la hoja correspondiente a cualquier pas, as que he tomado la decisin de
ordenarlas alfabticamente.

Por supuesto que tendramos la opcin de ordenar hoja por hoja de manera
manual, pero eso nos llevara un tiempo considerable por lo que en esta
ocasin crearemos una macro para ordenar hojas en Excel y automatizar por
completo este proceso.
Macro para ordenar hojas de Excel
alfabticamente
La macro es muy sencilla ya que haremos un recorrido de todas las hojas del
libro utilizando dos bucles For-Next. El primer bucle nos servir para tomar hoja
por hoja y el segundo bucle para comparar cada una de ellas con el resto de
las hojas del libro. Si al hacer la comparacin descubrimos que alguna hoja
debe ir detrs de la otra haremos el movimiento correspondiente. Para crear
esta macro abrir el Editor de Visual Basic y crear un nuevo mdulo (Insertar
> Mdulo) donde colocar el siguiente cdigo VBA:
1
2
3
4
5
6
7
8
9
10
11
Sub OrdenarHojas_Ascendente()

For a = 1 To Sheets.Count
For s = a + 1 To Sheets.Count
If UCase(Sheets(a).Name) > UCase(Sheets(s).Name) Then
Sheets(s).Move Before:=Sheets(a)
End If
Next s
Next a

End Sub
Observa con detenimiento que este cdigo hace la comparacin de dos hojas a
la vez con la siguiente lnea de cdigo:
If UCase(Sheets(a).Name) > UCase(Sheets(s).Name) Then
Nuestro cdigo utiliza dos variables para recorrer todas las hojas. La variable
a indica la hoja actual y la variable s ser la hoja siguiente a la hoja actual.
La funcin Ucase convierte en maysculas el nombre de ambas hojas para
poder compararlas correctamente y utilizamos el operador mayor que (>) para
saber si la hoja actual es mayor que la hoja siguiente.
En programacin, una cadena de texto ser mayor que la otra si sus letras
iniciales aparecen despus en el alfabeto. Lo que evaluamos con nuestra
instruccin es si el nombre de la hoja actual aparece despus (en el alfabeto)
que el nombre de la hoja siguiente. Si dicha condicin se cumple, entonces
ser necesario moverlas de posicin para comenzar a ordenar alfabticamente.
Eso es precisamente lo que hacemos con la siguiente lnea de nuestro cdigo:
Sheets(s).Move Before:=Sheets(a)
Ordenar hojas de Excel de manera descendente
Antes de probar nuestra macro, crearemos una variante que nos
permitir ordenar las hojas de Excel de manera descendente. Los cambios
sern mnimos y los puedes ver en el siguiente cdigo:
1
2
3
4
5
6
7
8
9
10
11
Sub OrdenarHojas_Descendente()

For a = 1 To Sheets.Count
For s = a + 1 To Sheets.Count
If UCase(Sheets(a).Name) < UCase(Sheets(s).Name) Then
Sheets(s).Move Before:=Sheets(a)
End If
Next s
Next a

End Sub
Puedes notar que existen solamente dos pequeos cambios, el primero de
ellos es evidente ya que he cambiado el nombre de la subrutina para indicar
que se trata de un orden descendente. El segundo cambio es el uso del
operador menor que (<) en la comparacin de los nombres de las hojas. Esta
simple modificacin nos permitir cambiar la direccin de ordenacin de las
hojas para comenzar en la letra Z y terminar en la letra A.
Ordenar hojas de Excel con una macro
Una vez creadas ambas subrutinas probaremos el funcionamiento de cada una
de ellas. Para hacerlo puedes hacer clic en la ficha Vista > Macros para
mostrar el cuadro de dilogo Macro el cual enlistar el nombre de las macros
recin creadas.

Este cuadro de dilogo tambin lo puedes abrir desde la ficha Programador >
Cdigo > Macros. Una vez abierto el cuadro de dilogo debers elegir la macro
deseada y pulsar el botn Ejecutar. Si elegimos la
subrutina OrdenarHojas_Ascendente, el resultado ser el siguiente:

Si por el contrario, elegimos la macro llamada OrdenarHojas_Descendente, las
hojas del libro se comenzarn a ordenar a partir de la letra Z y en orden
descendente tal como lo puedes observar en la siguiente imagen:

De esta manera podemos ordenar hojas de Excel ya sea de manera
ascendente o descendente con tan solo ejecutar una macro y as podremos
encontrar rpidamente la hoja que necesitemos. Puedes descargar el libro de
trabajo para probar el ordenamiento de hojas por ti mismo y adems copiar la
macro desarrollada en este artculo.
Orden personalizado en
Excel
Excel nos permite ordenar los datos en un rango por cualquiera de sus
columnas utilizando el comando Ordenar de A a Z para aplicar un orden
ascendente o el comando Ordenar de Z a A para un orden descendente pero
existen ocasiones en las que necesitamos aplicar un orden personalizado en
Excel.
El comando Orden personalizado en Excel
El comando Orden personalizado se encuentra en la ficha Inicio > Modificar >
Ordenar y Filtrar.

Este comando abrir el cuadro de dilogo Ordenar el cual nos permitir ordenar
los datos por mltiples columnas e inclusive ordenarlas por el color de las
celdas. Tambin podremos crear un orden personalizado para cualquiera de
las columnas basndonos en una lista personalizada.

Ordenar por varias columnas en Excel
Cuando trabajamos en Excel es muy fcil ordenar una tabla de datos por
cualquiera de sus columnas ya sea de manera ascendente o descendente,
pero a veces necesitamos ordenar por varias columnas y la nica manera de
hacerlo es utilizando el cuadro de dilogo Ordenar.
Por ejemplo, considera un rango de datos con informacin sobre rdenes de
compra donde queremos ordenar la informacin por el nombre de la ciudad y
posteriormente por la fecha de la orden. Todo comienza por seleccionar
cualquiera de las celdas de datos y pulsando el comando Inicio > Modificar >
Ordenar y Filtrar > Orden personalizado.
Una vez que se abre el cuadro de dilogo debers elegir las opciones para el
primer nivel que son tres: Columna, Ordenar segn y Criterio de ordenacin.
Para la opcin Columna encontrars una lista con todos los encabezados de
columna de la tabla de datos y solo debers elegir aquella por la cual se
realizar el ordenamiento. Para nuestro ejemplo ser la columna Ciudad.

La opcin Ordenar segn la dejaremos con su valor predeterminado que
es Valores y la opcinCriterio de ordenacin como A a Z ya que deseamos
aplicar un orden ascendente en la columna Ciudad. Para agregar un segundo
nivel de ordenacin debes pulsar el botn Agregar nivel lo cual nos permitir
indicar la segunda columna por la cual deseamos ordenar los datos.

Observa que al detectar que la columna Fecha orden es de tipo fecha, las
opciones para el Criterio de ordenacin cambian y podemos seleccionar la
opcin De ms antiguos a ms recientes que nos permite ordenar las fechas de
manera ascendente. Para aplicar los dos niveles de ordenacin definidos
debemos pulsar el botn Aceptar y obtendremos un resultado como el
siguiente:

Las ciudades han sido ordenadas alfabticamente y en el caso de la ciudad de
Monterrey se ha colocado primero la orden del mes siete y posteriormente la
del mes ocho. De esta misma manera podrs agregar tantos niveles de
ordenacin como necesites y Excel aplicar cada uno de ellos en el orden
indicado.
Gestionar los niveles de ordenacin
Como ya hemos visto en la seccin anterior, el botn Agregar nivel nos permite
crear nuevos criterios de ordenacin para poder ordenar los datos por varias
columnas. Pero, si por alguna razn decidimos eliminar alguno de ellos ser
suficiente con hacer clic sobre dicho criterio para seleccionarlo y en seguida
pulsar el botn Eliminar nivel.
As mismo el cuadro de dilogo Ordenar muestra el botn llamado Copiar
nivel el cual nos permite hacer una copia de cualquiera de los criterios
previamente creados. Solo ser necesario seleccionar el criterio deseado y
pulsar el botn Copiar nivel para crear una copia y posteriormente modificar
sus propiedades.
En el ejemplo mostrado previamente, los criterios de ordenacin se aplicaron
en el mismo orden en el que aparecen en el listado. Si por alguna razn deseas
modificar ese orden podrs hacerlo utilizando los botones de flechas que estn
al lado del botn Copiar nivel que son conocidos como los
botones Subir y Bajar.

En nuestro ejemplo ordenamos los datos por la columna Ciudad y
posteriormente por la columnaFecha orden. Si queremos invertir dicho orden,
ser suficiente con hacer clic en el primer nivel y despus hacer clic en el
botn Bajar para invertir el orden en que sern aplicados los criterios de
ordenacin. Observa el resultado de esta accin:

Ahora los datos estn ordenados primero por fecha y luego por ciudad. Puedes
observar que para aquellas filas que tienen la misma fecha, las ciudades
aparecen en orden ascendente (alfabtico) por ejemplo, para el da 01/07/2010
aparece primero Barcelona y luego Monterrey o para el da 01/08/2010 se
muestra Bogot y despus Monterrey.
Ordenar con lista personalizada en Excel
Otra de las posibilidades de ordenamiento que tenemos con el comando Orden
personalizado en Excel es que podemos indicar un criterio basado en una
lista personalizada. Con esta opcin no estaremos limitados a ordenar siempre
de manera ascendente o descendente sino que podremos definir nuestra
propia secuencia de ordenamiento.
Si deseamos ordenar nuestros datos de ejemplo por su categora, pero en un
orden especial que no sea alfabtico, entonces debemos hacer lo siguiente.
Abrimos el cuadro de dilogo Ordenar e indicamos la columna Categora y
en Criterio de ordenacin seleccionaremos la opcin Lista personalizada.

Inmediatamente se mostrar el cuadro de dilogo Listas personalizadas donde
podremos definir el orden especfico en que deseamos ordenar la columna. En
el panel izquierdo seleccionamos la opcin NUEVA LISTA y a la derecha
ingresaremos las entradas de lista de la siguiente manera:

Si observas con detenimiento vers que los elementos indicados no estn en
orden alfabtico, ni ascendente ni descendente, as que la nica manera de
lograr este tipo de ordenamiento es utilizando la lista personalizada. Para
terminar pulsamos el botn Agregar para hacer permanente la creacin de la
lista personalizada y finalmente pulsamos Aceptar para regresar al cuadro de
dilogo Ordenar donde observars que la nueva lista personalizada se muestra
como el Criterio de ordenacin. Al aplicar este ordenamiento los datos
quedarn de la siguiente manera:

En este ejemplo he creado la lista personalizada ingresando cada uno de los
elementos dentro del cuadro de texto de entradas de lista, pero si tienes una
cantidad considerable de elementos por ingresar, entonces te convendr crear
la lista personalizada desde un rango de celdas. Este mtodo implica crear la
lista personalizada antes de intentar ordenar los datos y los pasos para su
creacin los puedes encontrar en el artculo Crear listas personalizadas en
Excel.
Orden personalizado por color
Adems de los beneficios mencionados anteriormente, el comando Orden
personalizado nos permite ordenar nuestros datos por el color de relleno de la
celda, por el color de la fuente e inclusive por el conjunto de iconos de formato
condicional desplegado dentro de las celdas.
Para mostrar esta funcionalidad he creado una regla de formato condicional en
la columna Total para resaltar aquellas celdas que tienen un valor superior a
los $2000 y ahora deseo ordenar los datos para colocar dichas celdas en la
parte superior de la tabla. Lo nico que debo hacer es que al momento de crear
el nivel de ordenacin elegir la opcin Color de celda de la siguiente manera:

Excel detectar automticamente los posibles colores para una misma columna
y nos permitir elegir entre ellos. Despus de elegir el color deseado y pulsar el
botn Aceptar obtendremos el siguiente resultado:

El funcionamiento ser el mismo si deseas ordenar por el color de fuente o
tambin si deseas implementar un ordenamiento por el cono de la celda.
El orden personalizado en Excel ser de mucha ayuda cuando necesites
ordenar tus datos por varias columnas, ya sea alfabticamente o utilizando una
lista personalizada para aplicar un criterio de ordenacin especial. Tambin nos
ser de gran ayuda para ordenar los datos basados en los colores de las
celdas o de la fuente.
Agregar texto al
resultado de una frmula
en Excel
Todas las celdas en Excel pueden contener alguno de los siguientes datos: un
valor numrico, una cadena de texto o una frmula. En ocasiones creamos
frmulas que nos devuelven valores numricos y necesitamos agregar texto al
resultado de la frmula para hacer ms entendible su significado. Eso lo
podrs lograr fcilmente haciendo una concatenacin de los valores, pero
debes saber que habr una consecuencia.
Supongamos que tengo una columna con cierta cantidad de das para varias
actividades y la celda B12 hace la suma de todos los valores numricos.

Lo que deseo hacer es que dicha celda muestre el resultado de la suma y
adems la palabra das. A continuacin analizaremos las opciones que
tenemos para hacer esto.
Utilizar la funcin CONCATENAR
La funcin CONCATENAR nos permite unir dos o ms valores de una celda y
como resultado obtener una nueva cadena de texto. Esta funcin acepta hasta
255 valores, as que no tendremos problema alguno en utilizarla para nuestro
ejemplo. La frmula a utilizar ser la siguiente:
=CONCATENAR(SUMA(B2:B11), " das")
El primer valor a concatenar ser la frmula original y el segundo argumento de
la funcin ser precisamente la cadena de texto das considerando un
espacio en blanco para marcar la separacin entre el resultado de la funcin
SUMA y la palabra das. Observa el resultado de esta frmula:

Utilizar el operador de concatenacin
Es posible obtener el mismo resultado anterior utilizando uno de los operadores
en Excel, que es el operador de concatenacin y que se representa con el
smbolo &. De esta manera, en lugar de utilizar la funcin CONCATENAR,
podemos utilizar la siguiente frmula:
=SUMA(B2:B11) & " das"
Observa que el resultado de esta frmula ser idntico a nuestro ejemplo
anterior:

Sin importar cul de los dos mtodos anteriores utilices tendremos la misma
consecuencia que explicar a continuacin. El resultado original de la funcin
SUMA era un valor numrico pero el resultado de nuestras frmulas es una
cadena de texto. Esto implica que el valor contenido en la celda B12 ya no
podr utilizarse en otro clculo numrico porque ahora es simplemente texto.
El resultado de las dos frmulas anteriores en la celda B12 se ha alineado a la
izquierda indicando que es una cadena de texto. En la siguiente imagen
puedes observar cmo al intentar sumar el nmero uno al resultado de la celda
B12 obtendr el error #VALOR! ya que no se pueden realizar clculos con
cadenas de texto:

Si no te interesa mantener el valor numrico del resultado, entonces cualquiera
de los mtodos anteriores ser suficiente para mostrar el valor deseado dentro
de la celda, pero si quieres utilizar ese resultado en otros clculos, tendrs que
utilizar un mtodo alterno.
Mantener el valor numrico del resultado
La nica manera de mantener el valor numrico de una celda aun cuando se
despliegue un texto junto al resultado de su frmulaes utilizar el formato
personalizado de celdas. Sin utilizar frmulas adicionales, ms que la funcin
SUMA original, cambiar el formato de la celda B12 de la siguiente manera
(Clic derecho sobre la celda > Formato de celdas):

El formato personalizado # das mostrar esta ltima palabra dentro de la
celda sin afectar el valor numrico de la misma. Observa el resultado de este
cambio en el formato de la celda:

Para comprobar que la celda sigue conservando su valor numrico har la
misma prueba anterior al sumar el nmero uno al resultado de la celda B12 y
obtendr el resultado correcto:

Agregar texto a una fecha en Excel
Los mtodos mostrados anteriormente funcionan tambin para las fechas ya
que las fechas en Excel son valores numricos pero debes saber que si
concatenas una celda que contiene una fecha con un texto obtendrs el valor
numrico de la fecha tal como se puede observar en la siguiente imagen:

Para resolver este problema debers utilizar la funcin TEXTO que nos
ayudar a aplicar el formato adecuado a la fecha al momento de hacer la
concatenacin. Por ejemplo:

Si quieres conocer todo el detalle de ese tipo de frmulas consulta el
artculo: Convertir fecha a texto en Excel. Sin embargo, tal como en los
primeros ejemplos de este artculo, existe la solucin con frmulas pero
tambin una solucin con el formato personalizado de celdas y en este caso
podramos aplicar un formato a la celda B12 de la siguiente manera:

Al aplicar este formato personalizado seguiremos teniendo el valor numrico de
la celda lo cual har que se muestre en pantalla un formato de fecha
identificable para los usuarios.

La celda mantiene el valor de la fecha y lo puedes comprobar porque la barra
de frmulas solamente muestra la fecha de la celda y no muestra el texto, el
cual es solo parte del formato de la celda.
Es as como puedes agregar texto al resultado de una frmula en Excel, ya
sea utilizando el mtodo de la funcin CONCATENAR o del operador de
concatenacin (&) sabiendo que el resultado de ambas frmulas ser una
cadena de texto. Tambin puedes utilizar el mtodo del formato personalizado
el cual mantendr el valor numrico de la celda.
Cmo cargar datos a un
ComboBox en Excel
El Cuadro combinado, tambin conocido como ComboBox, es un control
ActiveX que nos permite crear una lista desplegable de la cual podremos
seleccionar alguno de sus elementos. Pero antes de poder utilizar este control,
es necesario saber cmo cargar datos a un ComboBox a partir de una lista
de valores en una hoja de Excel.
Para este ejemplo considerar dos posibles escenarios. El primero supone que
el control ha sido agregado directamente a la hoja de Excel y el segundo
escenario supondr que el ComboBox se ha insertado en un Formulario VBA.
Para ambos casos tomar los valores de la columna A y los insertar como los
elementos del cuadro combinado.

Cargar datos al ComboBox en una hoja de Excel
El caso ms simple es cuando has agregado el Cuadro
combinado directamente a la hoja de Excel ya que para agregar sus elementos
bastar con hacer clic derecho sobre el control ActiveX y seleccionar la
opcin Propiedades. Se mostrar el listado de propiedades y en la
propiedadListFillRange debers indicar el rango donde se encuentran los
datos.

Despus de aceptar los cambios tendremos listo nuestro ComboBox:

Cargar datos al ComboBox en un formulario VBA
En el caso donde el control est dentro de un formulario VBA, es necesario
indicar por cdigo los elementos que sern agregados al ComboBox de la
siguiente manera:
1
2
3
Private Sub UserForm_Initialize()

Dim rango, celda As Range
4
5
6
7
8
9
10
Set rango = Worksheets("Ejemplo1").Range("A1:A7")

For Each celda In rango
ComboBox1.AddItem celda.Value
Next celda

End Sub
Con este cdigo recorremos todas las celdas del rango A1:A7 y por cada celda
agregamos un nuevo elemento al ComboBox. Observa que el cdigo est
dentro del evento UserForm_Initializelo que ocasionar que la carga de datos
se haga en el momento en que se inicialice el formulario.

Si la lista de elementos de la columna A fuera fija, con cualquiera de los
ejemplos anteriores ser suficiente para cargar datos al ComboBox, pero si
dicha lista crece continuamente y necesitas que los nuevos elementos sean
considerados dentro del ComboBox, entonces debemos cambiar un poco el
enfoque de la solucin para considerar el uso de un nombre de rango dinmico.
Rango dinmico para cargar datos al ComboBox
Para crear un rango dinmico es necesario utilizar la funcin DESREF y
la funcin CONTARA la cual nos ayudar a conocer las celdas con valores
dentro de la columna que contiene los datos. Para crear el nombre debemos ir
a la ficha Frmulas > Nombres definidos > Asignar nombre.

Creamos el nombre MiLista que nos servir para hacer referencia a este rango
dinmico de celdas. En el ltimo cuadro de texto, donde generalmente
colocamos una referencia a un rango de celdas, colocaremos la siguiente
frmula:
=DESREF(Ejemplo2!$A$1,0,0,CONTARA(Ejemplo2!$A:$A))
Esta frmula devolver una referencia a un rango que inicia en la celda A1 (de
la hoja Ejemplo2) y termina N filas por debajo. La cantidad de filas a
desplazarse hacia abajo ser el resultado de la funcin CONTARA que cuenta
las celdas no vacas de la columna A.
De esta manera queda creado nuestro nombre de rango dinmico que
utilizaremos para cargar datos al ComboBox. Si quieres saber un poco ms
sobre la creacin de este tipo de nombres te recomiendo leer el
artculo Nombres de rango dinmicos. En las siguientes secciones haremos
uso de este rango dinmico recin creado.
ComboBox en hoja de Excel con rango dinmico
Si nuestro ComboBox se encuentra en la hoja de Excel, podemos hacer
referencia al rango dinmico abriendo la ventana de propiedades y para la
propiedad ListFillRange colocar el nombre del rango dinmico:

Sin embargo, con esta adecuacin no es suficiente para que la actualizacin
del ComboBox sea automtica. Si dejamos las cosas as, los datos se
refrescarn solamente hasta que cerremos y volvamos a abrir el libro, as que
lo mejor ser agregar cdigo adicional a nuestra hoja para asegurarnos de que
la actualizacin se hace en cuanto modificamos los elementos de la columna A.
1
2
3
4
5
6
7
8
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
With ComboBox1
.Value = ""
.ListFillRange = "=MiLista"
End With
End If
End Sub
Con este cdigo nos aseguramos de que, al momento de agregar o eliminar un
elemento de la columna A, el ComboBox refrescar automticamente sus
elementos.

ComboBox en Formulario VBA con rango
dinmico
Para hacer que un ComboBox que est ubicado dentro de un formulario cargue
sus datos desde el rango dinmico, debemos utilizar el siguiente cdigo:
1
2
3
4
5
6
7
8
9
10
Private Sub UserForm_Initialize()

Dim rango, celda As Range
Set rango = Range("MiLista")

For Each celda In rango
ComboBox1.AddItem celda.Value
Next celda

End Sub
La nica diferencia con el primer formulario es que el rango indicado es
precisamente el nombre del rango dinmico. Al momento de abrir el formulario
se cargar el ComboBox con todos los elementos de la columna A.

En este caso no es necesario agregar cdigo adicional ya que cada vez que
abramos el formulario se actualizarn los elementos del ComboBox.
Solo resta que descargues el libro de trabajo para seguir probando con los
ejemplos mostrados en este artculo. En el archivo descargado encontrars dos
hojas, la primera contiene los primeros dos ejemplos del artculo y la segunda
hoja contiene los ejemplos que hacen uso del rango dinmico.
Color intermitente en
celda de Excel
Una manera muy fcil de llamar la atencin hacia una celda especfica de
nuestra hoja es estableciendo un color de fondo para la misma, pero si eso no
fuera suficiente, podemos crear un efecto de color intermitente en la celda de
manera que sea casi inevitable dirigir la mirada hacia ella.
Es muy probable que existan diferentes mtodos para desarrollar este tipo de
solucin, y sera difcil explicarlos todos, as que en esta ocasin me enfocar
en crear el efecto de celda parpadeante utilizando los estilos de celda y un
poco de programacin en VBA. Empecemos por explicar un poco sobre dichos
estilos de celda ya que ser el primer paso en el desarrollo de nuestra solucin.
Paso 1: Crear estilo de celda
Los estilos de celda los encontramos en la ficha Inicio dentro del grupo Estilos.
Si haces clic en el botn Estilos de celda podrs ver una gama de estilos
previamente definidos en Excel.

Tenemos la opcin de utilizar alguno de los estilos definidos o si lo deseas,
puedes crear tu propio estilo haciendo clic en la opcin Nuevo estilo de
celda que abrir un cuadro de dilogo que nos permitir configurar cada uno de
los aspectos del nuevo estilo.

Cada una de las cajas de seleccin mostradas corresponde a una de las
pestaas del cuadro de dilogo Formato de celdas el cual se abrir al hacer clic
en el botn Aplicar formato y nos permitir indicar los valores especficos para
el nuevo estilo. Sin embargo, para nuestro ejemplo no crear un nuevo estilo, si
no que crear un estilo basado en otro ya existente y para eso har clic
derecho sobre el estilo llamado nfasis2 que se encuentra dentro de los
estilos de celda predefinidos y seleccionar la opcin Duplicar dentro del men
emergente. Se mostrar el cuadro de dilogoEstilo y cambiar el Nombre del
estilo por Intermitente.

Es importante recordar este nuevo nombre de estilo porque haremos referencia
a l dentro del cdigo VBA. Finalmente debemos aplicar este nuevo estilo a la
celda que tendr el efecto de intermitencia.

Paso 2: Crear las macros
Sin ms prembulos, te mostrar el cdigo de las subrutinas que nos ayudarn
a aplicar un color intermitente en la celda de Excel. Posteriormente har una
explicacin detallada del cdigo.
1
Dim Siguiente As Date
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Dim EstiloColor As Double
Dim Iniciado As Boolean
Const EstiloNombre As String = "Intermitente"
Const EstiloColor2 As Double = 0

Sub Iniciar()

Siguiente = Now + TimeValue("00:00:01")
IniciarColor

With ActiveWorkbook.Styles(EstiloNombre)
If .Interior.Color = EstiloColor Then
.Interior.Color = EstiloColor2
Else
.Interior.Color = EstiloColor
End If
End With

Application.OnTime Siguiente, "Iniciar"

End Sub

Private Sub IniciarColor()

If Iniciado = False Then
EstiloColor = ActiveWorkbook.Styles(EstiloNombre).Interior.Color
Iniciado = True
End If

29
30
31
32
33
34
35
36
37
38
End Sub

Sub Detener()

Application.OnTime Siguiente, "Iniciar", schedule:=False
ActiveWorkbook.Styles(EstiloNombre).Interior.Color = EstiloColor

End Sub
Primero explicar el objetivo de las variables y constantes definidas en las
primeras cinco lneas de cdigo:
Siguiente: Define el intervalo del siguiente parpadeo de la celda. Es del
tipo Date porque almacenar un valor de tiempo determinado entre parpadeos.
EstiloColor: Guardar el color de fondo del estilo de celda que hayamos
definido para dar el efecto de intermitencia.
Iniciado: Esta variable me ayudar a saber si ya se ha inicializado el valor de
la variableEstiloColor. En un principio el valor de esta variable ser falso, pero
en cuanto se asigne un valor a la variable EstiloColor, la
variable Iniciado tendr un valor verdadero.
EstiloNombre: Esta constante ser el nombre del estilo que creamos en al
Paso 1 y que para nuestro ejemplo ser el estilo Intermitente.
EstiloColor2: Ser el color con el que se alternar el color de fondo original del
estilo de celda que para nuestro ejemplo ser el color negro (0).
En el cdigo mostrado previamente estn definidas tres subrutinas y una de
ellas es privada, lo que significa que no ser mostrada en la lista de macros,
as que comenzar explicando la subrutinaIniciar que es donde comienza todo.
La primera lnea de cdigo establece el valor de la variableSiguiente con el
valor del momento actual (Now) ms 1 segundo. Esto quiere decir que entre
un cambio de color y el otro habr 1 segundo de diferencia.
La segunda instruccin es el llamado a la subrutina privada IniciarColor, as
que analicemos de una vez el cdigo de dicha subrutina. Lo nico que
hacemos dentro de IniciarColor es evaluar el valor de la variable Iniciado para
saber si necesitamos establecer el valor de la variable EstiloColor con el valor
del color original del estilo de celda. Este procedimiento se ejecutar solo la
primera vez ya que de inmediato establecemos el valor de la
variable Iniciado igual a True y por lo tanto la prxima vez que se llame esta
subrutina la evaluacin resultar falsa.
Ahora que la variable EstiloColor ya tiene el color original del estilo de celda
regresaremos a la subrutina Iniciar y podemos ver que la siguiente instruccin
es precisamente la evaluacin de la propiedad Color del estilo de celda. Si el
valor del color de fondo es igual al color original, entonces lo cambiar por el
color definido en la variable EstiloColor2, de lo contrario regresamos al color
original. Esta alternancia en el valor de la propiedad Interior.Color es
precisamente lo que dar el efecto de color intermitente a la celda de Excel.
La subrutina Iniciar finaliza con la instruccin Application.OnTime que establece
la nueva ejecucin de la subrutina en el intervalo definido por la
variable Siguiente. Puedes ver que hay una instruccin similar dentro de la
subrutina Detener, con la diferencia de que se agrega el
argumentoschedule:=False para detener la ejecucin cclica de la
subrutina Iniciar.
Es as como la subrutina Detener para por completo el parpadeo de la celda y
finalmente restablece el color original del estilo de celda. Ahora que tenemos
una mejor idea de lo que hacen las subrutinas, debemos dar el paso final para
activar el color intermitente en la celda.
Color intermitente en una celda de Excel
Tal como lo suger en el primer paso, debemos aplicar el estilo de celda
Intermitente a aquella celda que deseamos dar el efecto de parpadeo. Una
vez hecho esto, solo restar ir a la ficha Vista, pulsar el botn Macros y
finalmente elegir la macro Iniciar:

Al pulsar el botn Ejecutar la celda, o celdas, que tengan el estilo Intermitente
comenzarn a parpadear, es decir a alternar su color de fondo tal como se
observa en la siguiente animacin:

Para detener la ejecucin de la macro debemos ir de nueva cuenta a la ficha
Vista, pulsar el botnMacros, seleccionar la macro Detener y pulsar el
botn Ejecutar.
Observaciones importantes
En este ejemplo he elegido los colores rojo y negro como los colores
alternantes. El color rojo fue elegido grficamente al momento de crear el estilo
de celda, pero el valor numrico del color negro fue colocado directamente en
el cdigo. Si quieres alternar con un color diferente al negro, ser indispensable
conocer su valor numrico y la nica manera hacerlo en Excel es a travs de
cdigo VBA.
Te recomiendo consultar el artculo Operaciones con colores en Excel donde
encontrars la funcin OBTENERCOLOR que te ayudar a obtener el valor
numrico de cualquier color de fondo de una celda. Es muy importante recordar
que los colores que podemos controlar con los mtodos mostrados son
aquellos que han sido aplicados con las herramientas de estilo de Excel y no
funcionar con los colores aplicados por formato condicional ya que dicha
informacin de color se guarda en propiedades muy diferentes.
Otra cosa que vale la pena mencionar es que en este ejemplo no se ha
modificado el color de la fuente, pero puede llegar a ser necesario si dicho color
no contrasta adecuadamente con el color de fondo que hayas elegido. En ese
caso ser necesario modificar tambin el color de la fuente establecido en el
estilo de celda el cual estar guardado en la propiedad Font.Color.

Para no dejar dudas a esta ltima observacin, en el archivo de descarga
encontrars un segundo libro de trabajo donde agrego las instrucciones VBA
para cambiar tambin el color de la fuente de la celda que est parpadeando.
Solo resta que descargues el libro de trabajo y compruebes por ti mismo los
mtodos que he mostrado para aplicar un color intermitente a una celda de
Excel.
Conversin de unidades
en Excel
Las unidades de medida han estado presentes a lo largo de la historia de la
humanidad y son adoptadas por convencin para medir una determinada
magnitud fsica. Sin embargo, hoy en da no todos los pases del mundo han
adoptado el mismo sistema de medicin por lo que se hace necesario recurrir a
la conversin de unidades para encontrar los valores equivalentes entre
ambos sistemas.
Cuando hablamos de la conversin de unidades nos referimos primordialmente
a la conversin entre el Sistema Internacional de Unidades y el Sistema
anglosajn de unidades que son los dos sistemas ms reconocidos en el
mundo, aunque este ltimo es utilizado de manera oficial solamente por tres
pases: Estados Unidos, Liberia y Birmania.
Conversin de unidades en Excel
Debido al uso tan frecuente de las unidades de medida y la necesidad de hacer
conversiones entre los diferentes sistemas, Excel ha incluido la funcin
CONVERTIR desde la versin de Excel 2007. Los argumentos de esta funcin
son los siguientes:
Nmero: El nmero que se va a convertir.
Desde_unidad: La unidad de medida del Nmero que se va a convertir.
A_unidad: Las unidades del resultado devuelto por la funcin.
De esta manera, si queremos convertir 95 grados Fahrenheit a grados
Centgrados podemos utilizar la siguiente frmula:
=CONVERTIR(95,"F","C")
Al utilizar esta frmula en nuestra hoja de clculo obtendremos el resultado
correcto, que son 35 grados Centgrados:

Como puedes notar, el segundo y tercer argumento de la funcin
CONVERTIR utilizan abreviaturas para indicar las unidades de medida de
origen y destino, as que es de suma importancia conocer dichas abreviaturas
que nos permitirn convertir unidades en Excel y para eso dejar una lista
detallada en la ltima seccin de este artculo.
Planilla de conversin de unidades en Excel
Para facilitar la conversin de unidades en Excel he creado una planilla que
contiene todos los tipos de medidas entre los cuales se puede realizar una
conversin utilizando la funcin CONVERTIR. La manera de utilizarla es muy
sencilla, por ejemplo, si deseo convertir 100 gramos a libras el primer paso ser
colocar el valor 100 en la celda que se encuentra en la interseccin de la
fila Gramo y la columna Gramo:

Como resultado, todas las celdas de la fila Gramo mostrarn el valor
equivalente as que el segundo paso ser obtener el valor que se encuentra en
la columna Libra el cual me indicar que 100 gramos es equivalente a 0.22
libras. En este ejemplo he utilizado la tabla de Peso y masapero en la planilla
encontrars 10 tablas con las diferentes categoras de unidades de medida que
podemos utilizar con la funcin CONVERTIR.
Descarga la planilla de conversin de unidades en Excel.
Unidades de medida en Excel
A continuacin encontrars el listado completo de unidades junto con sus
abreviaturas tal como las debemos utilizar en la funcin CONVERTIR en Excel:
Unidades de peso y masa
g Gramo
sg Slug
lbm Libra (masa)
u U (unidad de masa atmica)
ozm Onza (masa)
Unidades de longitud
m Metro
mi Milla terrestre
Nmi Milla nutica
in Pulgada
ft Pie
yd Yarda
ang Angstrom
pica Pica
Unidades de tiempo
yr Ao
day Da
hr Hora
mn Minuto
sec Segundo
Unidades de presin
Pa Pascal
atm Atmsfera
mmHg mm de mercurio (torr)
Unidades de fuerza
N Newton
din Dina
lbf Libra fuerza
Unidades de energa
J Julio
e Ergio
cal Calora IT
eV Electronvoltio
HPh Caballos de fuerza-hora
Wh Vatio-hora
flb Libra-pie
BTU BTU (Unidad trmica inglesa)
c Calora termodinmica
Unidades de potencia
HP Caballos
W Vatio
Unidades de magnetismo
T Tesla
ga Gauss
Unidades de temperatura
C Grado Celsius
F Grado Fahrenheit
K Kelvin
Unidades de capacidad
tsp Cucharadita
tbs Cucharada
oz Onza lquida
cup Taza
pt Pinta de EE.UU.
uk_pt Pinta del Reino Unido
qt Cuarto de galn
gal Galn
l Litro
Cmo ejecutar una macro
al abrir Excel
Si quieres ejecutar ciertas acciones automticamente al momento de abrir
Excel, es posible grabar o escribir una macro que sea ejecutada en el momento
de abrir un libro. En esta ocasin te mostrar dos alternativas para ejecutar
una macro al abrir Excel, uno de los mtodos es ideal para aquellos que
apenas comienzan con la programacin de macros y el otro mtodo para
aquellos usuarios que son un poco ms experimentados.
El primer mtodo que mostrar har uso de la grabadora de macros. Y como
probablemente lo sabes, una vez que activamos la grabacin, todas las
acciones realizadas en la interfaz de Excel sern grabadas hasta el momento
en que detengamos dicha grabacin. El truco para nuestro primer ejemplo
radica en el momento en que guardamos la macro.
La subrutina Auto_Open en Excel
Para beneficio de todos los lectores, en especial para aquellos que no tienen
experiencia con macros, haremos este ejercicio paso a paso. Para comenzar
con la grabacin de una macro debes pulsar el botn Grabar que se encuentra
en el extremo inferior izquierdo de la barra de estado de Excel:

Esto abrir el cuadro de dilogo Grabar macro, donde tendremos que nombrar
forzosamente la macro como Auto_Open.

El nombre de la macro deber ser Auto_Open porque esa es la manera en que
Excel sabr que existe cdigo que deber ejecutar al abrirse. Si no colocas
este nombre a la macro, entonces no suceder nada al abrir el libro de Excel.
Para comenzar la grabacin de la macro debers hacer clic en el botn
Aceptar.
Para este primer ejemplo nuestro objetivo ser colocar en la celda B1 la fecha y
hora actual de manera que al momento de abrir el libro de Excel quede
registrado el momento en que se abri el archivo. Para lograr esto realizar las
siguientes acciones (recuerda que estoy grabando la macro):
1. Seleccionar la celda B1
2. En la barra de frmulas insertar la frmula =AHORA() y pulsar Entrar.
3. Seleccionar la celda B1 y copiar su contenido (CTRL+C).
4. Hacer clic derecho sobre la celda B1 y seleccionar Opciones de pegado >
Valores.
5. Pulsar la tecla Esc.
6. Pulsar el botn Detener.
El botn Detener lo encontrars en la barra de estado, en el mismo lugar donde
inicialmente se encontraba el botn Grabar. Con esto habremos terminado de
grabar la macro y tendrs un resultado como el siguiente:

La macro que acabamos de grabar hace lo siguiente: Primero inserta la funcin
AHORA en la celda B1 para obtener la fecha y hora actuales. En seguida copia
el valor de la celda B1 y lo vuelve a pegar sobre s misma como un valor, de
esta manera la celda ya no tendr una frmula sino un valor de fecha y hora
que permanecer esttico mientras trabajamos con el libro.
Finalmente debemos guardar el libro asegurndonos de guardarlo como
un Libro de Excel habilitado para macros. La prxima vez que abras este libro,
el valor de la celda B2 se actualizar automticamente con la fecha y hora
actuales. Es as como podrs ejecutar una macro al abrir Excel utilizando la
subrutina Auto_Open.
Observaciones del primer mtodo
Una vez que has creado la macro llamada Auto_Open podrs ver su cdigo
VBA desde la ficha Vista > Macros y dentro del cuadro de
dilogo Macro debers seleccionarla y pulsar el botnModificar.

Esto abrir el Editor de Visual Basic y podrs modificar el cdigo de la
subrutina si as lo deseas, aunque si eres un usuario principiante esto te
parecer un tanto intimidante, pero aun as te recomiendo revisar el cdigo de
la macro recin creada ya que es un buen mtodo para aprender ms sobre
programacin en VBA.
Si quieres sobrescribir la subrutina Auto_Open sin editar el cdigo VBA, puedes
hacerlo con la Grabadora de macros. Lo nico que debes hacer es volver a
grabar la macro y colocar de nueva cuenta el nombre Auto_Open y Excel
enviar una notificacin para saber si deseas sobrescribirla.

El evento Workbook_Open en Excel
Con el mtodo anterior estaremos siempre obligados a tener una subrutina
llamada Auto_Openpero si eres un usuario ms experimentado y deseas un
poco ms de control para ejecutar una macro al abrir Excel te interesar el
segundo mtodo que describir a continuacin.
Comenzaremos por abrir el Editor de Visual Basic desde la ficha
Programador o con el atajo de teclado ALT+F11 . Posteriormente vamos al
men Insertar > Mdulo para crear un nuevo mdulo de cdigo donde
colocaremos la subrutina que se ejecutar al abrir Excel. Para nuestro ejemplo
utilizar el siguiente cdigo:
1
2
3
4
5
Sub Iniciar()

MsgBox "Bienvenido a Excel"

End Sub
El nombre de la subrutina no es relevante y para el ejemplo la he nombrado
como Iniciar pero podrs utilizar cualquier nombre. Dentro de esta subrutina
puedo colocar cualquier cdigo VBA que deseo que se ejecute al abrirse Excel,
pero por simplicidad del ejemplo solamente abrir un cuadro de dilogo con un
mensaje de bienvenida. En este momento debers tener una vista del Editor de
Visual Basic como la siguiente:

El siguiente paso es hacer clic sobre el objeto ThisWorkbook que se encuentra
enlistado en el panel izquierdo y posteriormente debemos seleccionar de las
listas desplegables las opcionesWorkbook y Open tal como se muestra en la
siguiente imagen:

Dentro del evento Workbook_Open debers colocar el nombre de la subrutina
previamente creada. Cada vez que un libro de Excel es abierto, se revisa
automticamente el evento Workbook_Open y se ejecuta cualquier cdigo
especificado dentro del mismo. Lo nico que resta es guardar el cdigo y el
libro del ejemplo. Para probar nuestro cdigo debers cerrar el libro y volver a
abrirlo para entonces confirmar que se mostrar el mensaje previamente
programado.

Ejecutar una macro al abrir Excel
Con los dos ejemplos anteriores tendrs herramientas suficientes para
poder ejecutar una macro al abrir Excel. Ya sea que quieras utilizar la
subrutina Auto_Open o que desees crear tu propia subrutina para
posteriormente llamarla desde el evento Workbook_Open.
En ambos ejemplos anteriores, la macro se ejecutar el abrir especficamente
el libro para el cual ha sido creada. Si quieres que una macro se ejecute al
momento de abrir cualquier libro de Excel en tu equipo, entonces tendrs que
colocar el cdigo dentro del Libro de macros personal pero este procedimiento
solamente lo recomiendo para aquellos que tienen amplia experiencia en el
tema ya que estarn modificando el comportamiento de Excel para todos los
libros.
Un ltimo ejemplo
En el archivo que podrs descargar con los ejemplos anteriores he incluido un
tercer libro que contiene una macro que autoincrementa el valor de una celda
cada vez que se abre dicho libro.

Este tercer ejemplo hace uso del evento Workbook_Open por lo que es muy
similar al segundo ejemplo que hicimos, con la nica diferencia de que he
editado el cdigo de la subrutina Iniciar de la siguiente manera:
1
2
3
4
5
6
7
8
Sub Iniciar()

Worksheets("Hoja1").Range("B1").Value = _
Worksheets("Hoja1").Range("B1").Value + 1

ThisWorkbook.Save

End Sub
El cdigo se encarga de guardar el libro despus de incrementar el valor de la
celda. Tal vez una mejora a dicho ejemplo sera proteger la celda de manera
que nadie pueda modificar su valor y por lo tanto siempre conocer las veces
que ha sido abierto el libro, pero eso lo dejo a tu criterio e imaginacin.
Solo resta descargar el archivo comprimido que contiene todos los ejemplos
mostrados en este artculo y que comiences a crear macros que se ejecuten al
abrir un libro de Excel.

Вам также может понравиться