lunes, 15 de junio de 2009

Contar en una Tabla Dinámica

Descargar el fichero: tdcontar.xlsx

Las Tablas Dinámicas son la revolución de las hojas de cálculo. Permiten obtener informes de forma rápida y flexible. Son "un sueño" para los controler y los gestores que han de reportar informes complejos y de forma rápida. En esta ocasión, vamos a presentar un caso donde a la Tabla Dinámica le cuesta constestar a nuestra pregunta. La solución será aplicar una fórmula al contenido de la propia tabla dinámica. Usaremos la famosa función IMPORTARDATOSDINAMICOS.

Disponemos de una pequeña base de datos con unos clientes, productos y valores. Deseamos saber: Cuantos clientes adquieren el Producto 1. A simple vista, podemos apreciar que la respuesta es 2.

Realizamos la Tabla Dinámica que se ve en la imagen y observamos que el Total General del Producto 1 da como resultado 3 (celda azul). Aquí lo que esta haciendo la Tabla Dinámica es contar cuantas líneas de la Base de Datos contiene el Producto 1. Pero esto no responde a nuestra pregunta, ya que nosotros deseamos saber cuántos clientes han adquirido el Producto 1, y la respuesta es 2. Concretamente los clientes que han adquirido el Producto 1 son ABC y FGH.

Para contestar correctamente a nuestra pregunta creamos otra tabla vinculando a la Tabla Dinámica anterior, con lo cual surge la función: IMPORTARDATOSDINAMICOS. Y sobre ella vamos a construir la siguiente fórmula para la celda G14:

=--(IMPORTARDATOSDINAMICOS("Valor";$F$5;"Cliente";$F14;"Producto";G$13)>0)

Con ello lo que pretendemos es determinar cuantos valores de la Tabla Dinamica son estrictamente mayores que cero. Esto hace que el valor 2 de la celda G7 ahora se cuente como 1, ya que la condición VERDADERO se transforma en un 1. Esto se consigue con los dos signos menos al incio de la fórmula.



jueves, 11 de junio de 2009

TIR calculada con Macro

Descargar el fichero: tirmacro.xlsm

TIR es la Tasa Interna de Retorno. Se define como la tasa que hace el VAN igual a cero, y se interpreta como la rentabilidad interna de la operación. En inglés IRR (Internal Rate of Return). En este blog ya hemos comentado ampliamente este concepto y sus fórmulas de cálculo: TIR, TIR.NO.PER, TIRM. Ahora se trata de comprobar que efectivamente el cálculo de la TIR que hace Excel es correcto. Para ello, vamos a crear una macro muy didáctica que nos permitirá ver, paso a paso, cómo converge el valor de la TIR a la tasa que hace el VAN igual a cero.



Este algoritmo es el típico que se utiliza para calcular las raices de un polinomio, puesto que las raices son los puntos de corte con el eje horizontal. El procedimiento es el siguiente:

  1. Se toma un valor por defecto para la estimación de la TIR. Este valor lo denominaremos Inferior e inicialmente será cero.
  2. Se toma un valor por exceso para la estimación de la TIR. Este valor lo denominaremos Superior e inicialmente será 1, que en tanto por ciento equivale al 100%.
  3. Con estos dos valores así elegidos calculamos el VAN para cada uno de ellos. El VAN a tipo cero se supone que ha de ser positivo, y al tipo Superior del 100% se supone que el VAN ha de ser negativo. Si esto no se cumpliera se ha de elegir otro valor aún mayor al 100% hasta que se cumpla.
  4. Entre el valor Inferior y el Superior calculamos otro valor denominado Medio. El valor Medio es la media entre el Inferior y el Superior. Medio=(Inferior+Superior)/2. Y calculamos el VAN correspondiente a este tipo.
  5. Si el VAN al tipo Medio es POSITIVO, entonces el nuevo tipo Inferior será igual al tipo Medio actual.
  6. Si el VAN al tipo Medio es NEGATIVO, entonces el nuevo tipo Superior será igual al tipo Medio actual.
  7. Repetir este análisis (ir al punto 4) mientras se cumpla que el VAN al tipo Medio difiera en valor absoluto de cero en menos de un cierto error admitido.
Hemos creado dos botones que lanzan la macro, ya que si no se relentiza un poco la ejecución, es tan rápida que no se aprecian los cambios que se producen en las celdas.


Validación de Datos

Descargar el fichero: validacion.xlsx

Zonas donde el usuario deba escribir datos que cumplan ciertas condiciones. Esto es lo que se consigue con la VALIDACIÓN de datos. En ciertas celdas que indiquemos podemos limitar los valores que el usuario puede llegar a escribir. Por ejemplo, podemos pedir que en la celda se escriban valores numéricos enteros entre un mínimo y un máximo dados. Si el usuario escribe en esa celda cualquier otro valor que no cumpla el filtro impuesto por la validación de datos, podemos avisarle o impedir que ese dato pueda ser introducido.

Un problema importante de la validación de datos es que si impide o avisa de la entrada de datos escritos por el usuario, pero si este los copia de otra celda el filtro no actua.

Validación de Datos

Vamos a efectuar una encuesta donde el usuario responderá a una serie de preguntas, sobre las que limitaremos las posibles respuestas.




Para acceder al menú de la Validación de Datos, en la versión de Excel 2003 y anteriores, se ha de ir al menú Datos, Validación.

Primero preguntamos el teléfono habitual. Este ha de ser un número entero, y en España actualmente comienza por 6 y tiene en total 9 dígitos. Por tanto, esta comprendido entre un mínimo que es 600000000 y un máximo que es 699999999.



Existen otras formas de filtrar los valores que el usuario puede llegar a introducir en una celda. Se puede filtrar por fechas, véase la pregunta 2 de la encuesta. Un filtro muy interesante es el que se denomina Personalizada, que permite establecer una fórmula que ha de cumplirse, vease la pregunta 3. Si filtramos mediante Lista estamos creando un desplegable del que el usuario puede elegir un valor, y si escribe otro que no esta en la lista le avisa o le impide su introducción.

Un caso especial que vamos a comentar es el de dos listas ecadenadas. Nos referimos al caso en el que elegimos un valor en la primera lista (por ejemplo un pais) y en la segunda lista aparecen las opciones que estan relacionadas con la elección realizada anteriormente (por ejemplo, únicamente aparecen ciudades del pais elegido previamente).

En la pregunta 5 elegimos un pais de la lista de paises.

En la pregunta 6 observamos que las ciudades disponibles se actualizan en función del pais elegido previamente. Esto se consigue teniendo en cuenta dos aspectos:

  1. Se han de nombrar los rangos de pais y ciudades. El nombre de rango de las ciudades correspondientes a cada pais ha de ser el nombre de su pais. Por ejemplo, las cuatro ciudades de España se han de nombrar con el nombre de rango España.
  2. En la pregunta 6, correspondiente a las ciudades, la validación ha de ser de Lista, y en Origen se ha de poner la fórmula =INDIRECTO(E12).


INDIRECTO

Descargar el fichero: indirecto.xlsx

Vincular a una celda es una tarea bastante habitual y sencilla. Simplemente ha de hacer referencia a la celda a la que quiere vincular. Pero existe otro método para vincular a una celda, utilizando la función INDIRECTO. La diferencia entre ambos métodos radica en que al mover la celda vinculada, si hemos utilizado la vinculación clásica, nuestro valor se actualiza. Por el contrario, si utilizamos INDIRECTO se seguirá apuntando a la celda donde originariamente estuviera el dato inicial, pese a haberse movido.

Hoja1

La función INDIRECTO.

=INDIRECTO(ref;tipo)

Vease un post anterior denominado:

Un desplegable con INDIRECTO

En nuestro caso utilizaremos la función INDIRECTO con el tipo de referencia a celda habibual A1, por tanto en tipo no indicaremos nada.

En B4 ponemos un dato, por ejemplo 100.

Si deseamos vincular a esa celda desde otra, por ejemplo desde C7, simplemente pondremos la referencia: =+B4. Este es el modo habitual de vincular con otra celda.

Un método alternativo con la función INDIRECTO consiste en poner en otra celda, por ejemplo en B10, el valor B4 como texto, que hace referencia a la celda B4. Y en C10 ponemos la fórmula:

=INDIRECTO(B10)

El resultado obtenido en C10 sera 100, al igual que el que se obtuvo al vincular con B4 desde C7. ¿Entonces para que vale INDIRECTO, si hace lo mismo que si vinculamos?, y además vincular es más fácil, e intuitivo.

La respuesta a esta pregunta la vamos a comprender al mover la celda amarilla (B4) a cualquier otro posición. Por ejemplo, movámosla hasta la celda E4. ¿Qué observamos?. Vemos que la celda C7 conserva el valor 100, ya que adapta su fórmula y ahora pone: =+E4. Esto es, al mover una celda, todas las fórmulas que apuntaban a esa celda se actualizan con la nueva celda.

Por el contrario, en C10 ahora pone 0. Esto es así, ya que la función INDIRECTO apunta siembre a la referencia de celda que se indica en B10, y en ésta sigue poniendo B4. Puesto que, tras el movimiento, en B4 ahora no hay nada, el valor que devuelve INDIRECTO es cero.






Hoja2

La función INDIRECTO con rangos.

Este caso es similar al anterior, pero trabajamos con rangos de celdas.

En las celdas amarillas escribimos unos datos. En las celdas verdes vinculamos con las amarillas pero de forma matricial. Esto se hace de la siguiente forma:

  1. Primero seleccionamos las celdas verdes: C7:C8
  2. Escribimos una fórmula comenzando con el signo + y luego marcamos con el ratón las celdas amarillas: B4:B5
  3. Y ahora no pulsamos Intro. Para validar debemos pulsar: Control+Mayúsculas+Intro
En B10 ponemos como texto la referencia a las celdas amarillas: B4:B5.

Las celdas azules las creamos matricialmente con INDIRECTO, siguiendo estos pasos:

  1. Seleccionamos las dos celdas azules: C10:C11
  2. Escribimos la fórmula: =INDIRECTO(B10)
  3. No validamos con Intro. Validamos con Control+Mayúsculas+Intro
Si movemos las celdas amarillas a otra posición de la hoja, sucederá lo mismo que se ha comentado anteriormente. Veremos que las referencias a celdas se actulizan, pero en el caso de la función INDIRECTO se rellenara con ceros.


Puede ver una aplicación de la función INDIRECTO en un post anterior, denominado:


La función INDIRECTO es una de esas funciones avanzadas que permite crear fantásticos trucos en Excel.

miércoles, 10 de junio de 2009

Extraer valores de una tabla con fórmulas matriciales

Descargar el fichero: matricial_extrae.xlsx

Vamos a extraer valores de una tabla mediante funciones matriciales. Tenemos dos métodos. El primero válido para datos numéricos y el segundo válido para cualquier tipo de datos, numéricos o de texto. Para el segundo caso utilizaremos la función INDICE, que permite extraer un cierto valor de una matriz, indicando la fila y columna donde se encuentra el valor que deseamos extraer.


Método 1

Unicamente válido para valores numéricos. Para texto da error. Para la celda I10 se utiliza la expresión:

=SUMA((date=I$9)*datos*(+emp=$H10))

es una fórmula matricial que se ha de validar con Control+Mayúsculas+Intro.

Método 2

Válido también para texto. Se basa en la función:

=INDICE(matriz;núm_fila;núm_columna)

que permite extraer un elemento de una matriz, de la que se indica la fila y columna.


Buscar la Pareja

Descargar el fichero: emparejar.xlsx

Hemos creado un caso que permite buscar la pareja correspondiente a una persona según una tabla de parejas. La novedada es que nos pueden dar cualquiera de las dos personas correspondiente a la columna de la derecha o de la izquierda, y nosotros debemos buscar la contraparte. Para ello utilizaremos la función DESREF.

La tabla de la izquierda tiene dos columnas Persona_1 y Persona_2 que establecen las parejas existentes. Estas columnas se nombran con nombres de rango: PER1 y PER2.

En la segunda tabla disponemos de dos columnas Pareja A y Pareja B. Todos los valores se generan con números aleatorios. Esto supone que al pulsar la tecla de función F9 cambian los valores de esta segunda tabla.

Veamos la columan Pareja A. En este caso se extrae el nombre de una persona de forma aleatoria sea de la primera o segunda columna de la tabla de datos. Se emplea la función:

=DESREF(ref;filas;columnas;alto;ancho)

Esta función tiene dos formas de trabajar:
  1. Si utilizamos los tres primeros argumentos, la función permite extraer un valor de una tabla comenzando a contar desde la celda ref, y desde ella bajando el número de filas indicado, y moviéndonos a la derecha el número de columnas indicado. Si las filas son negativas nos movemos hacia arriba. Si las columnas son negativas nos movemos hacia la izquierda.
  2. Si utilizamos los cinco argumentos, la función trabaja como una función matricial, y lo que extrae no es un valor sino un rango de valores. Este rango extraido tiene como esquina superior izquierda la definida por los tres primeros argumentos, tal y como se han definido antes, y el argumento alto y ancho indican la dimensión del rango extraido. Al ser una función matricial, en primer lugar se han de seleccionar las celdas donde la matriz devolverá su resultado, y finalmente se ha de validar con Control+Mayusculas +Intro.
En este caso se extrae un único valor, no utilizandose la vesión matricial.

La fórmula utilizada para la Pareja A es la siguiente:

=DESREF($A$4;ALEATORIO.ENTRE(1;6);ALEATORIO.ENTRE(1;2))

Esto permite extraer de forma aleatoria cualquier persona de la primera tabla, este en la columna de la izquierda o de la derecha.


Para determinar la Persona B disponemos de varios métodos. El primero de ellos utiliza la siguiente expresión, para la celda F6:

=SI(ESNUMERO(COINCIDIR(E6;PER1;0));BUSCARV(E6;TODO;2;0);DESREF($B$5;COINCIDIR(E6;PER2;0);0))


Se utiliza la función:

=ESNUMERO(valor)

determina si es número, respondiendo con VERDADERO o FALSO.

El segundo método utiliza la expresión, para la celda G6:

=SI(ESERROR(BUSCARV(E6;TODO;2;0));DESREF($B$5;COINCIDIR(E6;PER2;0);0);BUSCARV(E6;TODO;2;0))

La función:

=ESERROR(valor)

responde con VERDADERO o FALSO. Si detecta un error responde con VERDADERO, y considera que #N/A es un error. Existe otro función, =ESERR que no considera como error el valor #N/A.

Tanto el método 1 para la celda F6, como el método 2 para la celda G6 requieren copiar la fórmula hacia abajo para toda su columna. Vamos a buscar una alternativa con nombres de rango donde la fórmula se la misma para todas las celdas de su columna.

El método 3 trabaja con el rango ParejaA, lo que permite que la fórmula sea la misma para todas las celdas de la columna H. Su expresión es:

=SI(ESERROR(BUSCARV(ParejaA;TODO;2;0));DESREF($B$5;COINCIDIR(ParejaA;PER2;0);0);BUSCARV(ParejaA;TODO;2;0))

El método 4 es una variante del anterior que trabaja de forma matricial.


martes, 9 de junio de 2009

Sumaproducto saltando celdas en blanco

Descargar el fichero: sinblancos.xlsx

Queremos efectuar una operación típica con la función SUMAPRODUCTO pero saltando los elementos cuyo valor en la columna contigua esten en blanco. El supuesto práctico es el siguiente: Tenemos un proveedor habitual que nos suministra los productos A, B, C, D y E. Para conocer el importe total de la factura multiplicamos el precio unitario de cada producto por el número de productos que necesitamos adquirir. Surge un nuevo proveedor que nos puede suministrar todos los producto salvo uno de ellos, el producto D. Queremos comparar el importe de la factura de ambos proveedores para determinar el más económico. El problema es que del proveedor habitual debemos descontar de la factura el producto D, para que la comparación sea homogénea.

La función utilizada habitualmente es:

=SUMAPRODUCTO(matriz1;matriz2;matriz3; ...)

esta función multiplica los elementos de las diferentes matrices implicadas y luego los suma para obtener el total.

En nuestro caso, podemos calcular la factura completa del proveedor habitual de la siguiente forma:

=SUMAPRODUCTO(Precio;Cantidades)

previamente hemos nombrado rangos. El resultado obtenido será de 475.000 €.

Para el nuevo proveedor la fórmula utilizada será:

=SUMAPRODUCTO(Cantidades;Nuevo)

que supone un importe total de 375.000 €.

Ambas cantidades no son comparables, ya que no son homogéneas. Para el proveedor habitual estamos incluyendo todos los productos, pero para el nuevo proveedor no se incluye el producto D, ya que no lo suministra.

Para poder recalcular la factura total del proveedor habitual en términos homogéneos debemos eliminar el producto D. Esto se hace con una función matricial:

=+SUMA(Cantidades*Precio*(Nuevo<>0))

Recordar que esta función se valida con Control + Mayúsculas + Intro

La condición (Nuevo<>0) nos proporciona el siguiente Array:

{VERDADERO\VERDADERO\VERDADERO\FALSO\VERDADERO}

Recordar que en informática VERDADERO es un 1, y FALSO es un 0. Por tanto el vector es:

{1\1\1\0\1}

que al multiplicarse por los otros vectores consigue excluir el producto D.


Celdas Alternas con INDIRECTO

Puede descargar los archivos de Excel siguientes.

Hoja1

Supongamos que queremos mostrar una lista vertical con los beneficios de una empresa a lo largo de múltiples años. Los datos originales los tenemos en una fila y alternos. Disponemos de los ingresos, los gastos y por diferencia los resultados. Si tratáramos de crear la columna de beneficios vinculando celda a celda nos encontraríamos con una tarea muy ardua y llena de posibles errores. Aquí mostramos un método estupendo con la función INDIRECTO utilizando referencias de Fila Columna: F1C1.






Hoja2

En la Hoja2 hemos dispuesto los datos originales en una tabla vertical y deseamos obtener el Resultado también en una tabla vertical. Hemos utilizado dos métodos.
  1. Método 1: usando la función INDIRECTO
  2. Método 2: usando la función INDICE



Un desplegable con INDIRECTO

Descargar el fichero: vinculo.xlsx

INDIRECTO es una función fascinante que nos permite idear trucos muy interesantes en Excel. En este caso vamos a ver cómo se puede utilizar para extraer información de varias tablas según elijamos una y otra con un desplegable, también denominado combobox o cuadro combinado.

La función tiene los siguientes argumentos

=INDIRECTO(ref;a1)

donde

ref  representa una referencia a celda, que podemos escribir en la fórmula o puede estar escrita en otra celda a la que aquí se haga referencia

a1 representa el método que utilizamos para hacer referencia a una celda. Existen dos métodos. El clásico A1 que indica columna A, fila 1. Y el menos conocido R1C1 que indica Row (fila) 1 y Column (columna) 1. En español sería F1C1, que supone hablar de la Fila 1 y la Columna 1. Y en otras ocasiones, según tengamos definido en Windows la configuración regional, estaríamos hablando de L1C1, que es Línea 1 y Columna 1.
  • Si este argumento se omite o ponemos VERDADERO o 1, se utiliza el método A1.
  • Si en este argumento ponemos FALSO o 0, se utilizara la referencia tipo F1C1.

Disponemos de tres hojas: Hoja1, Hoja2 y Hoja3, en las que tenemos tres tablas con diferentes valores núméricos. También disponemos de una hoja denominada Index, en la que queremos mostrar los valores de alguna de las tres tablas anteriores, en función de la selección que haga el usuario mediante un desplegable. Si el usuario elige la Hoja1 se mostrará la tabla correspondiente a esa hoja, si elige la Hoja2 se mostrará la tabla correspondiente a ella, y si elige la Hoja3 se mostrará la tercera tabla.

Esta resuelto de dos formas, con o sin formula matricial.



Alternativa a BUSCARV


Descargar el fichero: sinbuscarv.xlsx

Buscar en una tabla es una de las tareas más comunes por parte de todo gestor de información. La función BUSCARV permite una búsqueda vertical en una tabla. Existe otro función denominada BUSCARH que permite una búsqueda horizontal en una tabla. BuscarV permite búsquedas por intervalos o búsquedas exactas. Su utilización esta muy extendida, pero tiene algunos inconvenientes.

Basicamente son dos los problemas:
  • En búsqueda por intervalos la primera columna debe estar ordenada de menor a mayor. Admite tanto valores numéricos como texto, en este caso el orden de menor a mayor supone orden alfabético. El problema radica en que en ocasiones no es posible tener los datos ordenados de esta forma.
  • La tabla que constituye la base de datos requiere que la primera columna sea sobre la que luego se buscará, y todas las demás columnas deben estar a su derecha. Esto en ocasiones no es posible, y la columna que tiene la referencia principal no es la primera columna de la tabla.
Por estos motivos vamos a ver una alternativa a esta fución. Para ello utilizaremos las funciones DESREF y COINCIDIR.

=DESREF(ref;filas;columnas;alto;ancho)

La función DESREF se puede utilizar con los tres primeros agumentos o con los cinco. Si usamos todos los argumentos trabaja como una función matricial. Este no es nuestro caso. Nosotros aquí utilizaremos únicamente los tres primeros argumentos, en cuyo caso nos devuelve un valor de una celda. La forma de localizar el valor que devuelve es estableciendo una celda de referencia desde la que contar (ref), y desde ella contar hacia abajo un cierto número de filas, y hacia la derecha un cierto número de columnas. Si el número de fila fuera negativo se va hacia arriba. Si el número de columnas fuera negativo se va hacia la izquierda. Por eso en la fórmula:

=DESREF($E$4;COINCIDIR($B13;$E$5:$E$9;0);-3)

Al poner -3 columnas, esto permite movernos hacia la izquierda. Esto es importante, ya que nos permite tener la columna de referencia en el lugar que queramos y no necesariamente como primera columna.



La función COINCIDIR permite encontrar el orden que ocupa un valor que coincide con un elemento de una lista. Si existen dos o más valores nos da la coincidencia del primero.

=COINCIDIR(valor_buscado;matriz_buscada;tipo_de_coincidencia)


Doble BUSCARV


Descargar el fichero: DobleBuscarv.xlsx


La función BUSCARV es probablemente la función de Excel más utilizada por los gestores de información avanzados. Esta función permite efectuar una búsqueda vertical en una tabla. Existe la función BUSCARH que permite efectuar una búsqueda horizontal en una tabla. Esta función permite efectuar una búsqueda por intervalos o una búsqueda exacta. 

=BUSCARV(valor_buscado;matriz_buscar_en;indicador_columnas;ordenado)

Supongamos una base de datos con Productos (Asfalto, Butano, Fueloil, Gasoil, Gasolina), Cliente, Mes (Ene, Feb, Mar), Litros y Precio. El precio es un campo calculado en base a una tabla de precios en la que se proporciona un precio distinto por cada producto y mes. Podemos calcular el precio por tres métodos.

Método 1

En este caso calculamos el precio con un doble BUSCARV. Utilizamos un Buscarv dentro de otro Buscarv. Hemos tenido que crear una tabla auxiliar denominada meses, en el rango L13:M15. Esta tabla auxiliar sirve para localizar la columna de la tabla de Precios donde esta el precio correspondiente al mes que buscamos.

Este método tiene el inconveniente de que tanto la tabla meses como la tabla precios debe estar ordenada de menor a mayor en su primera columna.


Método 2

Utilizamos otras fórmulas de excel, como DESREF y COINCIDIR


=DESREF(ref;filas;columnas;alto;ancho)

=COINCIDIR(valor_buscado;matriz_buscada;tipo_de_coincidencia)

Método 3

Utilizamos INDICE y COINCIDIR. 

=INDICE(matriz;núm_fila;núm_columna)

Los método 2 y 3 tienen la ventaja de no necesitar ordenar de menor a mayor los elementos de la primera columna de la tabla de precios.


viernes, 5 de junio de 2009

Calcular el tiempo entre dos fechas


Descargar el fichero: SiFecha.xlsm


Para calcular el tiempo transcurrido entre dos fechas, podemos restar ambas fechas y nos dará los días transcurridos. Se ha de poner la celda donde se efectua la resta en formato celda GENERAL. Excel utiliza un sistema para trabajar con fechas que consiste en asignar a cada fecha un número correlativo comenzando el 1-enero-1900. Por eso al restar dos fechas nos da el número de días transcurridos entre una y otra.



Hoja1

En Excel existe una fórmula, no documentada en la ayuda y que no figura en el asistente de funciones, denominada:

=sifecha(fecha inicial;fecha final;tipo)

donde:

tipo es el tipo de respuesta que da la función, y puede ser:
  • y Calcula el número de años transcurridos
  • m Calcula el número de meses transcurridos
  • d Calcula el número de días transcurridos. Equivale a restar ambas fechas
  • ym Calcula los meses sin considerar los años enteros transcurridos
  • md Calcula los días sin considerar los años y meses enteros transcurridos


Hoja2

En ésta hoja hemos creado unos controles numéricos que el usuario puede ir modificando para ir aumentando o disminuyendo los años, meses y días.

Podemos calcular la edad en años de una persona, o podemos calcular la antiguedad en la empresa de un trabajador.

Se puede detectar un error de la fórmula tal y como se ve en la celda C7, que aparece de color rojo cuando difiere de la celda D18.


Otro aspecto curioso de esta hoja es la fórmula programada:

=DisplayCellFormula(Celda)

que nos da la fórmula de la celda que se indique.

Código:

'Función que muestra la fórmula de una celda
'Devuelve la fórmula que contiene una celda en lenguaje local
'Si se quita la palabra 'Local' devuelve la fórmula en inglés.
Function DisplayCellFormula(Celda As Range) As String
DisplayCellFormula = Celda.FormulaLocal
End Function