You are on page 1of 117

FRMULAS VARIAS

Poner en una celda el nombre del libro: [Ejemplo]


=EXTRAE(CELDA("nombrearchivo");ENCONTRAR("[";CELDA("nombrearchivo"))+1;ENCONTRAR("]";CELD
Nota: para que esto funcione es necesario haber guardado el libro al menos una vez.

Poner en una celda el nombre de la hoja: [Ejemplo]


=EXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("]";CELDA("nombrearchivo";A1))+1;32)

Si el libro tiene una sola hoja y adems libro y hoja se llaman igual, es necesario complicar bastante la frmula: [Ejem

=SI(ESERROR(EXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("]";CELDA("nombrearchivo";A1))+1;32)

Saber la edad exacta (o cualquier otro perodo de tiempo) expresada en aos, meses y das: [Ejemplo]
=SIFECHA(A1;HOY();"y") & " aos " & SIFECHA(A1;HOY();"ym") & " meses " & SIFECHA(A1;HOY();"md") &
(suponiendo que la fecha de nacimiento estuviera en A1 y que se quisiera saber la edad a fecha de hoy).

Si no se desea que aparezcan incoherencias como, por ejemplo, "0 meses" o "1 das", se puede usar una frmula ms
=SI(SIFECHA(A1;HOY();"y")>0;SIFECHA(A1;HOY();"y")&" "&ELEGIR(MIN(SIFECHA(A1;HOY();"y")+1;3);"

Esta misma frmula, con unas pequeas modificaciones, sirve tambin para convertir en aos, meses y das un nmer

=SI(SIFECHA(--"1-1-1900";A1+2;"y")>0;SIFECHA(--"1-1-1900";A1+2;"y")&" "&ELEGIR(MIN(SIFECHA(--"1-1

Como curiosidad, en esta frmula todos los +2 deberan ser +1. Esa unidad adicional es necesaria porque Excel, para

Sumar las celdas situadas en las filas impares de una columna: [Ejemplo]
{=SUMA((RESIDUO(FILA(A1:A100);2)=1)*A1:A100)}

=SUMAPRODUCTO((RESIDUO(FILA(A1:A100);2)=1)*A1:A100)

Sumar las celdas situadas en las filas pares de una columna: [Ejemplo]
{=SUMA((RESIDUO(FILA(A1:A100);2)=0)*A1:A100)}

=SUMAPRODUCTO((RESIDUO(FILA(A1:A100);2)=0)*A1:A100)

Sumar las celdas situadas en las columnas impares de una fila (A,C,E, etc.): [Ejemplo]
{=SUMA((RESIDUO(COLUMNA(A1:D1);2)=1)*(A1:D1))}

=SUMAPRODUCTO((RESIDUO(COLUMNA(A1:G1);2)=1)*A1:G1)

Sumar las celdas situadas en las columnas pares de una fila (B,D,F, etc.): [Ejemplo]
{=SUMA((RESIDUO(COLUMNA(A1:D1);2)=0)*(A1:D1))}

=SUMAPRODUCTO((RESIDUO(COLUMNA(A1:G1);2)=0)*A1:G1)

Nota 1: estas frmulas sirven tambin, lgicamente, para sumar cada n filas o columnas. Por ejemplo, para sumar cad
{=SUMA((RESIDUO(FILA(A1:A100);5)=0)*A1:A100)}

Saber el nmero de elementos distintos que hay en un rango: [Ejemplo]


Si en el rango no hay celdas vacas, se puede usar:
{=SUMA(1/CONTAR.SI(A1:A10;A1:A10))}

=SUMAPRODUCTO(1/CONTAR.SI(A1:A10;A1:A10))

Si hubiera o pudiera haber celdas vacas:


{=SUMA((A1:A10<>"")/CONTAR.SI(A1:A10;A1:A10&""))}

=SUMAPRODUCTO((A1:A10<>"")/CONTAR.SI(A1:A10;A1:A10&""))
(lgicamente, estas dos funciones se pueden usar tambin si no hay celdas vacas)

y si slo hubiera nmeros en las celdas se podra usar:


=SUMA(SIGNO(FRECUENCIA(A1:A10;A1:A10)))
que sirve tanto si hay celdas vacas como si no las hay.

Hallar la suma de los valores nicos en un rango: [Ejemplo]


Si se necesita saber la suma de los valores nicos de un rango con nombre llamado Lista (es decir, sumando una sola
{=SUMA(Lista/CONTAR.SI(Lista;Lista))}
Lo mismo hace;
=SUMAPRODUCTO(Lista/CONTAR.SI(Lista;Lista))

Nota: el rango no puede tener ni celdas vacas, ni textos, ni valores lgicos. Si hubiera fechas, la frmula las consider

Mostrar los datos de una lista omitiendo los duplicados [Ejemplo]


Suponiendo que en un rango con nombre llamado 'Lista' (de una sola columna y sin celdas vacas) hay un conjunto de
{=INDICE(Lista;K.ESIMO.MENOR(SI(COINCIDIR(Lista;Lista;0)=FILA(INDIRECTO("1:"&CONTARA(Lista)));

La frmula anterior habra que ponerla en la fila 1 de una columna cualquiera, y copiarla hacia abajo. Cuando no qued

Si la frmula matricial hubiera de estar situada en una fila distinta a la 1, habra que restar el nmero de dicha fila me
{=INDICE(Lista;K.ESIMO.MENOR(SI(COINCIDIR(Lista;Lista;0)=FILA(INDIRECTO("1:"&CONTARA(Lista)));

Si el rango con nombre 'Lista' estuviera dispuesto en una fila en lugar de en una columna, las frmulas seran:
{=INDICE(Lista;K.ESIMO.MENOR(SI(TRANSPONER(COINCIDIR(Lista;Lista;0))=FILA(INDIRECTO("1:"&CO
e

{=INDICE(Lista;K.ESIMO.MENOR(SI(TRANSPONER(COINCIDIR(Lista;Lista;0))=FILA(INDIRECTO("1:"&CO

Obtener una lista ordenada de los valores nicos de un rango. [Ejemplo]


Suponiendo que en un rango con nombre llamado "Lista" (de una sola columna y sin celdas vacas) hay un conjunto d
{=SI(ESERROR(K.ESIMO.MAYOR(SI(FRECUENCIA(Lista;Lista)>0;Lista);FILA()));"Valor repetido";K.ESIMO.M

Si se deseara que la lista estuviera ordenada de menor a mayor, la frmula sera:


{=SI(ESERROR(K.ESIMO.MENOR(SI(FRECUENCIA(Lista;Lista)>0;Lista);FILA()));"Valor repetido";K.ESIMO.M

En Excel 2007-2010 es posible utilizar la funcin SI.ERROR en lugar de la pareja SI y ESERROR, con lo que las fr

{=SI.ERROR(K.ESIMO.MAYOR(SI(FRECUENCIA(Lista;Lista)>0;Lista);FILA());"Valor repetido")}
{=SI.ERROR(K.ESIMO.MENOR(SI(FRECUENCIA(Lista;Lista)>0;Lista);FILA());"Valor repetido")}

La funcin FILA() que utilizan todas las frmulas puede ser sustituida por un entero concreto, en cuyo caso la frmul

Si las frmulas hubiesen de estar situadas a partir de una fila distinta a la 1 habra que sustituir FILA() por FILA()-n,

Nota: las listas generadas por ambas frmulas tambin pueden servir si lo que se necesita es una jerarquizacin de los

Nmeros de puesto nicos. [Ejemplo]


Si, por ejemplo, se tiene un rango con nombre llamado Notas, en el que las notas estn repetidas (p.ej., 2 dieces, 2 nue

{=COINCIDIR(A2;K.ESIMO.MAYOR(SI(FRECUENCIA(Notas;Notas)<>0;Notas);FILA(INDIRECTO("1:"&SUMA(1/CONTAR.SI(Notas;No

Sustituyendo K.ESIMO.MAYOR por K.ESIMO.MENOR es posible obtener los puestos nicos, pero otorgndole a la

Averiguar los valores que faltan en una serie de nmeros enteros [Ejemplo]
Si se quiere un listado de los nmeros que faltan en una serie de nmeros enteros positivos llamada Lista, se podra u

{=K.ESIMO.MAYOR(SI(CONTAR.SI(Lista;FILA(INDIRECTO(MIN(Lista)&":"&MAX(Lista))))=0;FILA(INDIRECTO(MIN(Lista)&":"&MAX(

La frmula habra que ponerla en la fila 1 de una columna vaca y copiarla hacia abajo. Los nmeros faltantes iran ap

Si se necesitara que los nmeros faltantes fueran apareciendo ordenados de menor a mayor, se podra usar la frmula:

{=K.ESIMO.MENOR(SI(CONTAR.SI(Lista;FILA(INDIRECTO(MIN(Lista)&":"&MAX(Lista))))=0;FILA(INDIRECTO(MIN(Lista)&":"&MAX
En este caso, cuando no queden ms nmeros faltantes comenzar a mostrarse el error #!NUM

La serie de nmeros no tiene que estar necesariamente ordenada ni de mayor a menor ni a la inversa, si bien el ejemp

He recibido una consulta que plantea una situacin interesante que me ha hecho escribir una nueva frmula: se trata d

En este caso, las formulas anteriores fallaran porque no pueden procesar nmeros superiores al mximo de filas de E

{=MIN(Lista)-1+K.ESIMO.MAYOR(SI(ESERROR(COINCIDIR(FILA(INDIRECTO(MIN(Lista)-MIN(Lista)+1&"

para que los nmeros faltantes aparecieran ordenados de menor a mayor, y sustituir .MENOR por .MAYOR si el orde

Lgicamente, esta ltima frmula puede usarse tambin si la serie comienza con cualquier nmero ms bajo. Otra ven

Si se sabe que tan slo falta un nmero en la serie de enteros positivos y que no hay repeticiones, es posible utilizar u

Err:522

Obtener un valor aleatorio de entre las filas con datos de una columna: [Ejemplo]
=INDICE(A:A;REDONDEAR(ALEATORIO()*(CONTARA(A:A)-1)+1;0))
En este caso, los datos estaran en la columna A.
Los datos deben empezar en la fila 1 y no tener celdas vacas entre medias.

Contar y/o sumar las celdas cuyo valor se encuentra entre dos valores dados: [Ejemplo]
0
o, usando la funcin CONTAR.SI:
=CONTAR.SI(A1:A25;">=5")-CONTAR.SI(A1:A25;">15")
Ambas frmulas devolveran el nmero de celdas cuyo valor estuviera entre 5 y 15 en el rango A1:A25.

.=SUMAPRODUCTO((A1:A13>=5)*(A1:A13<=15)*A1:A13)
o, usando la funcin CONTAR.SI:
=SUMAR.SI(A1:A25;">=5")-SUMAR.SI(A1:A25;">15")
Ambas frmulas devolveran la suma de los nmeros cuyo valor estuvieran entre 5 y 15 en el rango A1:A25

Contar las celdas de un determinado mes y ao:


.=SUMAPRODUCTO((MES(A1:A3)=1)*(AO(A1:A3)=2009))
En este caso, se contaran las celdas en el rango A1:A15 cuya fecha fuera del mes de enero del ao 2009.
o, usando las funciones CONTAR.SI y FECHA:
=CONTAR.SI(A1:A15;">="&FECHA(2009;1;1))-CONTAR.SI(A1:A15;">"&FECHA(2009;1;31))
Sumar los X valores mayores o menores en una columna: [Ejemplo]
{=SUMA(K.ESIMO.MAYOR(A1:A50;FILA(INDIRECTO("1:3"))))}
o, usando SUMAPRODUCTO:
=SUMAPRODUCTO(K.ESIMO.MAYOR(A1:A50;FILA(INDIRECTO("1:3"))))
En este caso, se sumaran los 3 valores mayores del rango A1:A50
Para sumar los 3 valores menores, habra que sustituir K.ESIMO.MAYOR por K.ESIMO.MENOR

Nota: Las cuatro frmulas siguientes son ejemplos que trabajan con el rango A1:A100.
Saber el nmero de la primera fila con datos en una columna:
{=MIN(SI(A1:A100<>"";FILA(A1:A100)))}

Saber el valor de la primera fila con datos en una columna:


{=INDICE(A1:A100;MIN(SI(A1:A100<>"";FILA(A1:A100))))}

Saber el nmero de la ltima fila con datos en una columna:


{=MAX((A1:A100<>"")*FILA(A1:A100))}

Saber el valor de la ltima fila con datos en una columna:


=BUSCAR(2;1/(A1:A100<>"");A1:A100)
{=INDICE(A1:A100;MAX(SI(A1:A100<>"";FILA(A1:A100))))}

Nota: Las cuatro frmulas siguientes son ejemplos que trabajan con el rango A1:Z1
Averiguar el nmero de la primera columna con datos en una fila:
{=MIN(SI(A1:Z1<>"";COLUMNA(A1:Z1)))}

Averiguar el valor de la primera columna con datos en una fila:


{=INDICE(A1:Z1;;MIN(SI(A1:Z1<>"";COLUMNA(A1:Z1))))}

Averiguar el nmero de la ltima columna con datos en una fila:


{=MAX((A1:Z1<>"")*COLUMNA(A1:Z1))}

Averiguar el valor de la ltima columna con datos en una fila:


=BUSCAR(2;1/(A1:Z1<>"");A1:Z1)
{=INDICE(A1:Z1;;MAX(SI(A1:Z1<>"";COLUMNA(A1:Z1))))}

Frmulas para conocer el nmero de la primera o ltima fila cuyo valor es distinto de algo (o su valor):
Imagen (13 kb)
Partiendo del ejemplo anterior, si se necesita:
el nmero de fila de la primera celda cuyo valor no es "a":
{=MIN(SI(A1:A10<>"a";FILA(A1:A10)))}

el valor de dicha celda:


{=DESREF(A1;MIN(SI(A1:A10<>"a";FILA(A1:A10)))-1;0)}

el nmero de fila de la ltima celda cuyo valor no es "a":


{=MAX(SI(A1:A10<>"a";FILA(A1:A10)))}

el valor de dicha celda:


{=DESREF(A1;MAX(SI(A1:A10<>"a";FILA(A1:A10)))-1;0)}

Si hubiera o pudiera haber celdas vacas en el rango a evaluar, habra que sustituir las dos primeras frmulas por:
para el nmero de fila:
{=MIN(SI(A1:A10<>"a";SI(A1:A10<>"";FILA(A1:A10))))}

para el valor:
{=DESREF(A1;MIN(SI(A1:A10<>"a";SI(A1:A10<>"";FILA(A1:A10))))-1;0)}

Averiguar el nmero de veces en que coinciden los valores de dos columnas


Imagen (19 kb)
En este ejemplo se necesita saber cuantas veces tienen el mismo valor ambas celdas de la misma fila. Dos posibilidad
{=SUMA((A1:A10=B1:B10)*1)}
1

Estas mismas frmulas serviran si la comparacin hubiera de hacerse entre dos filas:
{=SUMA((A1:J1=A2:J2)*1)}
9

Saber el valor mnimo o el valor mximo que hay en un rango a partir de un valor dado
La funcin MIN devuelve el valor mnimo de un rango, pero si se necesita hallar el mnimo a partir de un nmero det
{=MIN(SI(A1:A10>0;A1:A10))}

De igual forma, si se necesita saber el valor mximo a partir de un valor determinado se puede usar:
{=MAX(SI(A1:A10<10;A1:A10))}
En este caso, la frmula devolvera el valor mximo en A1:A10 excluyendo los valores superiores a 10.

Encontrar un valor en un rango de varias filas y columnas [Ejemplo]


Si, por ejemplo, se desea averiguar la direccin de la celda en la que se encuentra el nmero 111111 dentro del rango
{=DIRECCION(COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;FILA(Datos)-CELDA("fila";Datos);;1;);1111

A partir de Excel 2007 se puede utilizar esta frmula junto con ESERROR() y NO() como frmula para una regla de

Conviene recordar que la funcin DIRECCION() admite otros dos argumentos adicionales (tres en realidad, pero el
- direccin absoluta, relativa o una mezcla de ambas
- estilo de referencia A1 (por defecto) o R1C1 (si se pone un 0 como ltimo argumento)

Nota: El uso de la funcin CELDA() resultara innecesario si se supiese con total seguridad que el rango con nombre

{=DIRECCION(COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;FILA(Datos)-1;;1;);111111));0);COINCIDIR(

y adems se habra conseguido ahorrar un nivel de anidamiento con respecto a la primera frmula, con lo que esta seg

=NO(ESERROR(DIRECCION(COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;FILA(Datos)-1;;1;);F1));0);CO

Frmulas para averiguar el ttulo de la columna o de la fila en que se encuentra el valor mximo o mnimo de un rang
Imagen (28 kb)
A partir del ejemplo, si se necesita:
El encabezado de la columna en que aparece por primera vez el valor mayor:
{=INDICE(B1:D1;MIN(SI(MAX(B2:D4)=B2:D4;COLUMNA(B2:D4)))-1)}

El encabezado de la columna en que aparece por ltima vez el valor mayor:


{=INDICE(B1:D1;MAX((B2:D4=MAX(B2:D4))*COLUMNA(B2:D4))-1)}

El encabezado de la columna en que aparece por primera vez el valor menor:


{=INDICE(B1:D1;MIN(SI(MIN(B2:D4)=B2:D4;COLUMNA(B2:D4)))-1)}

El encabezado de la columna en que aparece por ltima vez el valor menor:


{=INDICE(B1:D1;MAX((B2:D4=MIN(B2:D4))*COLUMNA(B2:D4))-1)}

El encabezado de la fila en que aparece por primera vez el valor mayor:


{=INDICE(A2:A4;MIN(SI(MAX(B2:D4)=B2:D4;FILA(B2:D4)))-1)}

El encabezado de la fila en que aparece por ltima vez el valor mayor:


{=INDICE(A2:A4;MAX((B2:D4=MAX(B2:D4))*FILA(B2:D4))-1)}

El encabezado de la fila en que aparece por primera vez el valor menor:


{=INDICE(A2:A4;MIN(SI(MIN(B2:D4)=B2:D4;FILA(B2:D4)))-1)}

El encabezado de la fila en que aparece por ltima vez el valor menor:


{=INDICE(A2:A4;MAX((B2:D4=MIN(B2:D4))*FILA(B2:D4))-1)}
Sumar las cantidades correspondientes a los ltimos doce meses
Suponiendo que en el rango A1:A50 hay una serie de fechas, en B1:B50 unos importes correspondientes a cada una d
=SUMAPRODUCTO((A1:A50>=FECHA(AO(HOY())-1;MES(HOY());1))*(A1:A50<FECHA(AO(HOY());ME
Y si se necesitara excluir de la suma los importes correspondientes al mes en curso, la frmula sera:
=SUMAPRODUCTO((A1:A50>=FECHA(AO(HOY())-1;MES(HOY())+1;1))*(A1:A50<FECHA(AO(HOY());M

Totalizar por semanas los importes de una tabla de meses y das


ver libro con un ejemplo (34 kb)
Nota sobre este ejemplo: la gran cantidad de frmulas matriciales -cincuenta y tres- que tiene la nica hoja de este lib

Calcular un descuento en funcin de un baremo y de la cantidad comprada o vendida


Imagen (79 kb)
Si se necesita aplicar un descuento dependiendo del nmero de unidades compradas o vendidas, es posible hacerlo an
=SI(D2<=10;0,05;SI(D2<=20;0,08;SI(D2<=30;0,11;SI(D2<=40;0,14;SI(D2<=50;0,17;SI(D2<=60;0,2;SI(D2<=70;0,
Pero si los tramos son ms de siete (que es el caso del ejemplo), se puede recurrir a una frmula matricial:
{=SI(D2>0;SI(D2>0;INDICE(B$2:B$11;MIN(SI((A$2:A$11>=D2);FILA(A$2:A$11)-1));1);0);0)}

Averiguar la fecha del domingo de Pascua de un ao (entre 1900 y 2203)


La siguiente frmula devuelve la fecha del domingo de Pascua del ao especificado en A1. Su autor es Thomas Jansen. Fue pre
.=DOLLAR((DAY(MINUTE(A1/38)/2+55)&".4."&A1)/7,)*7-6
Yo lo nico que he hecho ha sido traducirla al Excel en espaol:
=MONEDA((DIA(MINUTO(A1/38)/2+55)&"-4-" & A1)/7;)*7-6
Lgicamente, tambin es posible sustituir la referencia a la celda A1 por un ao. Por ejemplo, para el ao 2008:
=MONEDA((DIA(MINUTO(2008/38)/2+55)&"-4-" & 2008)/7;)*7-6

Otra, un poco ms larga:


=MULTIPLO.INFERIOR(DIA(MINUTO(A1/38)/2+56)&"-5-"&A1;7)-34

Nota: Pedro Wave me ha corregido amablemente el rango de fechas de estas frmulas y me seala que fallan para el a

La celda en la que se ponga cualquiera de las dos frmulas ha de tener formato de fecha, dado que devuelven un nm

Averiguar cual es el siguiente ao Jacobeo


Para averiguar cual es el prximo ao Jacobeo (el da 25 de julio es domingo), se puede usar la frmula:
{=AO(HOY())+COINCIDIR(VERDADERO;DIASEM(FECHA(AO(HOY())+FILA(INDIRECTO("1:11"))-1;7;2

Averiguar el valor mximo de la suma de las celdas de varias columnas (o filas)


Por ejemplo, en el rango A1:C10 hay una serie de valores, y lo que se necesita es el valor mximo de la suma de cada
{=MAX(A1:A10+B1:B10+C1:C10)}

Para saber en qu fila se encuentra el mximo anterior, la frmula sera:


{=SUMA((MAX(A1:A10+B1:B10+C1:C10)=(A1:A10+B1:B10+C1:C10))*FILA(A1:A10))}
si no hay duplicados, y:
{=MAX((MAX(A1:A10+B1:B10+C1:C10)=(A1:A10+B1:B10+C1:C10))*FILA(A1:A10))}
si pudiera haberlos. sta frmula devuelve el nmero de la ltima fila cuyas celdas suman el valor mximo.

Las frmulas para averiguar el valor mnimo son muy parecidas a las anteriores:
{=MIN(A1:A10+B1:B10+C1:C10)}
{=SUMA((MIN(A1:A10+B1:B10+C1:C10)=(A1:A10+B1:B10+C1:C10))*FILA(A1:A10))}
{=MAX((MIN(A1:A10+B1:B10+C1:C10)=(A1:A10+B1:B10+C1:C10))*FILA(A1:A10))}

Las frmulas para el caso de que los datos estuvieran situados de forma horizontal (p.ej., A1:J3) seran:
{=MAX(A1:J1+A2:J2+A3:J3)}
{=SUMA((MAX(A1:J1+A2:J2+A3:J3)=(A1:J1+A2:J2+A3:J3))*COLUMNA((A1:J3)))}
{=MAX((MAX(A1:J1+A2:J2+A3:J3)=(A1:J1+A2:J2+A3:J3))*COLUMNA(A1:J1))}
para el valor mximo, y:
{=MIN(A1:J1+A2:J2+A3:J3)}
{=SUMA((MIN(A1:J1+A2:J2+A3:J3)=(A1:J1+A2:J2+A3:J3))*COLUMNA((A1:J3)))}
{=MAX((MIN(A1:J1+A2:J2+A3:J3)=(A1:J1+A2:J2+A3:J3))*COLUMNA(A1:J1))}
para el valor mnimo.

Contar y resumir datos filtrados [Ejemplo]


Normalmente, las funciones de Excel para resumir o contar datos en base a criterios trabajaran con la lista completa (

Partiendo del ejemplo anterior, si por ejemplo se necesitara (siempre sobre las filas visibles):
sumar las celdas de la columna B cuyo valor fuera superior a 50, la frmula sera:
{=SUMA((B2:B15>50)*(SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1)))*B2
contar dichas celdas:
{=SUMA((B2:B15>50)*(SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1))))}
sumar las celdas visibles de la columna B:
{=SUMA((SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1)))*B2:B15)}
(Nota: =SUBTOTALES(9;B2:B15) hace lo mismo, la frmula anterior es slo otro ejemplo de esta forma de us
contar dichas celdas:
{=SUMA((SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1))))}
(Nota: =SUBTOTALES(2;B2:B15) hace lo mismo, la frmula anterior es slo otro ejemplo de esta forma de us
contar los valores nicos en el rango de valores filtrado (B2:B15 en el ejemplo):
{=SUMA(SIGNO(FRECUENCIA(SI(SUBTOTALES(3;DESREF(B2:B15;FILA(B2:B15)-2;;1))>0;B2:B15);S
averiguar el nmero de fila de la primera que cumple la condicin activa:
{=COINCIDIR(1;SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1));0)+1}
averiguar el nmero de fila de la ltima que cumple la condicin activa:
{=MAX(SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1))*FILA(A2:A15))}
averiguar el valor activo en el filtro:
{=SI(SUMA((SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1))))=FILAS(A2:A15);"N

Nota sobre esta ltima frmula: hasta Excel 2003 tan slo poda haber una condicin activa en el filtro, pero en la ver

{=SI(SUMA((SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1))))=FILAS(A2:A15);"N

que devolver la primera condicin activa. Para devolver las siguientes, habra que sustituir el ltimo 1 de la frmula

Esta frmula trabaja con el supuesto de que hay tan slo una fila de ttulos. Si hubiese ms, habra que sustituir el -1 p

Hay disponible otro libro de ejemplo con esta frmula, que slo funcionar a partir de la versin 2007 puesto que sup

Frmula que simula la funcin BUSCARV, pero buscando en dos columnas


Imagen (19 kb)
En el ejemplo se necesita averiguar el valor de la celda de la columna C en cuya fila la columna A tiene el valor 20 y
{=INDIRECTO("C"&COINCIDIR("202";A1:A9&B1:B9;0))}

o, usando la funcin INDICE:

{=INDICE(C1:C9;COINCIDIR("202";A1:A9&B1:B9;0))}

Averiguar la posicin de la ltima aparicin de un carcter en un texto


La funcin HALLAR devuelve la posicin en que aparece por primera vez un carcter dentro de una cadena de texto,
=ENCONTRAR(CARACTER(255);SUSTITUIR(A1;"b";CARACTER(255);LARGO(A1)-LARGO(SUSTITUIR(A1

En este caso la frmula devolvera la posicin de la ltima b dentro del texto que est en A1.

CARACTER(255) puede sustituirse por cualquier otro carcter que se sepa que en ningn caso va a estar en el texto.
=ENCONTRAR("0";SUSTITUIR(A1;"b";"0";LARGO(A1)-LARGO(SUSTITUIR(A1;"b";""))))

Extraer los nmeros situados a la derecha o a la izquierda en una cadena de texto. [Ejemplo]
Si se desea extraer el nmero situado a la derecha en una cadena situada en A1 (por ejemplo, extraer 9854 de la caden

{=BUSCAR(9,99999999999999E+307;1*(DERECHA(A1;FILA(INDIRECTO("1:"&LARGO(A1))))))}

Para extraer el nmero situado a la izquierda (por ejemplo, extraer 9854 de la cadena 9854abcd), lo nico que habra

Estas frmulas funcionarn con nmeros con decimales, siempre que el separador decimal en la cadena de texto sea e
Extraer un nmero de una cadena de texto [Ejemplo]
Si se tiene que extraer un nmero de una cadena de texto situada en A1 pero la posicin del nmero no es fija, se pued
{=EXTRAE(A1;COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1));0);L

La frmula devolver el nmero como cadena de texto. Si se necesitase convertirlo en su valor para poder operar num

La frmula sirve tambin para extraer una fecha o una hora de una cadena de texto. En este caso sera posible convert

Hay que tener en cuenta que tan slo puede haber un nmero en la cadena de texto. Es decir, por ejemplo la frmula f

Si se sabe con seguridad que los nmeros a extraer de las cadenas de texto son enteros (no tienen decimales), es posib
{=EXTRAE(A1;COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1));0);C

Extraer todos los caracteres numricos de una cadena de texto [Ejemplo] <--Este ejemplo slo funciona en Excel 20
Una complicacin de la frmula anterior sirve para extraer todos los caracteres numricos de una cadena de texto, con

Esta frmula slo funcionar a partir de la versin 2007 ya que supera los siete niveles de anidamiento permitidos com

{=REPETIR("0";COINCIDIR(1;ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))*(EXT

En la frmula propuesta, a la expresin necesaria para extraer los nmeros (a partir de SUMA), ya de por s bastante l

{=SUMA(EXTRAE(A1;K.ESIMO.MAYOR(ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)

Si se tratara de un nmero con decimales (por ejemplo extraer el nmero 987,0654 de la cadena "a9b8c7,0d6e5f4"), s
{=SUMA(EXTRAE(A1;K.ESIMO.MAYOR(ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)
en la que si el separador decimal fuese el punto en vez de la coma habra que sustituir los "," por ".".

Si no se sabe con seguridad cual podr ser el separador decimal en el equipo en el que se vaya a usar esta ltima frm
{=SUMA(EXTRAE(A1;K.ESIMO.MAYOR(ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)

Estas frmulas procesan la cadena de texto situada en A1.

Extraer una direccin de correo electrnico de una cadena de texto [Ejemplo]


Sospecho que esta frmula podra ser utilizada para fines maliciosos, pero como tambin podra ser til para alguien c

Se trata de extraer la direccin de correo electrnico de una celda en la que se encuentran datos personales (nombre, d

=ESPACIOS(EXTRAE(SUSTITUIR(","&A1&",";",";REPETIR(" ";500));HALLAR("@";SUSTITUIR(","&A1&",";
Saber el nmero de veces que aparece un carcter o una cadena en un texto
Suponiendo que A1 contiene el texto ABACDCABAEFE, para averiguar el nmero de aes que aparecen en el texto:
=LARGO(A1)-LARGO(SUSTITUIR(A1;"A";""))
y para averiguar el nmero de veces que aparece ABA:
=(LARGO(A1)-LARGO(SUSTITUIR(A1;"ABA";"")))/3

Si se quisiera saber el nmero de aes que aparecen en el rango A1:A10, la frmula sera:
{=SUMA(LARGO(A1:A10)-LARGO(SUSTITUIR(A1:A10;"A";"")))}
y para averiguar el nmero de veces que aparece ABA en el mismo rango:
{=SUMA((LARGO(A1:A10)-LARGO(SUSTITUIR(A1:A10;"ABA";"")))/3)}

Averiguar el texto ms repetido en un rango


La funcin MODA devuelve el valor que ms se repite en un rango, pero tan slo se puede aplicar a valores numrico
=INDICE(A1:A10;MODA(COINCIDIR(A1:A10;A1:A10;0)))

Averiguar el elemento menos repetido en un rango


Si se necesita saber cual es el elemento menos repetido de, por ejemplo, el rango A1:A10 (en el que no puede haber c
{=INDICE(A1:A10;COINCIDIR(MIN(CONTAR.SI(A1:A10;A1:A10));CONTAR.SI(A1:A10;A1:A10);0))}
teniendo en cuenta que si hubiese ms de un elemento con el menor nmero de repeticiones la frmula devolvera el s

Esta frmula sirve para cualquier tipo de datos.

Averiguar el 2, 3er., 4 etc. valor ms repetido en un rango [Ejemplo]


Sabemos que la funcin MODA devuelve el elemento ms repetido de un rango. Si se necesita averiguar cul es el 2

{=INDICE(Datos;COINCIDIR(K.ESIMO.MAYOR(SI(COINCIDIR(Datos;Datos;0)=FILA(Datos);CONTAR.SI(Dat

Para que esta frmula tal como est aqu devolviese el 2 valor ms repetido, tendra que estar situada en la fila 2

La parte de la frmula que determina el elemento a devolver es la funcin FILA(), por lo que si se sustituye esta func

Esta frmula necesita jerarquizar los elementos nicos del rango que procesa al objeto de deshacer los posibles "empa

Si los elementos en el rango Datos fuesen cadenas de texto, se podra usar la siguiente variante de la frmula:
{=INDICE(Datos;COINCIDIR(K.ESIMO.MAYOR(SI(COINCIDIR(Datos;Datos;0)=FILA(Datos);CONTAR.SI(Dat

Esta frmula trabajar (en principio) tambin si los elementos son una mezcla de valores y texto o incluso si tan slo

En caso de empate en el nmero de repeticiones, estas frmulas devolvern primero el situado ms arriba en el rango
Averiguar el nmero de palabras de un texto y/o el promedio de sus longitudes
Suponiendo que la celda A1 tiene un texto cuyas palabras estn separadas por espacios, la frmula para averiguar el n
=LARGO(A1)-LARGO(SUSTITUIR(A1;" ";""))+1

Para saber el promedio de las longitudes de las palabras del texto situado en la celda A1 la frmula sera:
=LARGO(SUSTITUIR(A1;" ";""))/(LARGO(A1)-LARGO(SUSTITUIR(A1;" ";""))+1)

Notas:
Hay que hacer notar que si hubiera signos de puntuacin seran tenidos en cuenta al calcular el promedio de los largos
Si las palabras estuviesen separadas por, por ejemplo, guiones, lo nico que habra que hacer es sustituir en las frmu

Averiguar cual es el texto ms largo de un rango [Ejemplo]


Si se deseara saber la fila con el texto ms largo en el rango A1:A10, la frmula sera:
{=MAX(LARGO(A1:A10))}
Para obtener dicho texto ms largo:
{=INDICE(A1:A10;COINCIDIR(1;SIGNO(LARGO(A1:A10)=MAX(LARGO(A1:A10)));0))}

Si hubiera dos o ms celdas con el texto de la misma longitud, esta frmula devolver la primera de ellas.

Sera posible usar un formato condicional para resaltar todas las celdas cuyos textos fueran los ms largos del rango. L
.=LARGO(A1)=MAX(LARGO(A$1:A$2))
Esta frmula habra que aplicarla a todo el rango A1:A10

Averiguar el carcter o el dgito ms repetido en una celda y/o el nmero de veces que aparece [Ejemplo]
Suponiendo que se quiera saber cual es el carcter o el nmero ms repetido en la celda A1, se podra usar:
{=EXTRAE(A1;MODA(COINCIDIR(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1);EXTRAE(A1;FIL

teniendo en cuenta que si dos o ms caracteres y/o dgitos se repiten el mismo nmero de veces, la frmula devolver
{=INDICE(MODA.VARIOS(COINCIDIR(EXTRAE($A$1;FILA(INDIRECTO("1:"&LARGO($A$1)));1);EXTRAE

que habra que colocar en la fila 1 de cualquier columna vaca y copiarla y pegarla hacia abajo. Cuando no haya ms

Complicando un poco la primera frmula propuesta es posible, en caso de empate, devolver el carcter ms a la derec
{=EXTRAE(A1;LARGO(A1)-MODA(COINCIDIR(EXTRAE(A1;LARGO(A1)-FILA(INDIRECTO("1:"&LARGO

Es posible tambin averiguar el nmero de veces que aparece el carcter o dgito que ms lo hace, usando la frmula:
{=MAX(LARGO(A1)-LARGO(SUSTITUIR(A1;EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1);"")))}

Averiguar la posicin del primer carcter o nmero en una celda


Si se desea obtener la posicin del primer carcter no numrico en la celda A1, se puede usar:
{=COINCIDIR(VERDADERO;ESERROR(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)));0)}
Y para obtener el carcter que es:
{=EXTRAE(A1;COINCIDIR(VERDADERO;ESERROR(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO

Para obtener la posicin del primer nmero o el nmero en s, bastara con sustituir VERDADERO por FALSO.

Averiguar la posicin del ltimo carcter o nmero en una celda


Si se desea obtener la posicin del ltimo carcter no numrico en la celda A1, se puede usar:
{=MAX(ESERROR(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))*FILA(INDIRECTO("1:"&
Y para obtener el carcter que es:
{=EXTRAE(A1;MAX(ESERROR(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))*FILA(INDI

Si se desea el ltimo nmero, las frmulas seran:


{=MAX(ESNUMERO(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))*FILA(INDIRECTO("1
y:
{=EXTRAE(A1;MAX(ESNUMERO(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))*FILA(IN

Saber si todos los caracteres del texto de una celda son letras [Ejemplo]
Excel dispone de la funcin ESTEXTO para saber si el contenido de una celda es un texto, pero dicha funcin no eva

Si, por ejemplo, se necesitara saber si todos y cada uno de los caracteres de una celda son letras maysculas, excluyen

=SUMAPRODUCTO((CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))>64)*(CODIGO(EXTR

e incluyendo la :

=SUMAPRODUCTO(((CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))>64)*(CODIGO(EXT

Si, adems, se necesitara saber si el texto tiene una longitud determinada (por ejemplo, 6 caracteres), la frmula sera

=Y(SUMAPRODUCTO((CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))>64)*(CODIGO(EX

y con la :

=Y((SUMAPRODUCTO((CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))>64)*(CODIGO(EX

Si se quisiera verificar que todas las letras fueran minsculas, habra que hacer las siguientes sustituciones en las frm

96 en vez de 64
123 en vez de 91
241 en vez de 209
Nota: todas estas frmulas pueden ser utilizadas como 'Frmula personalizada' en las validaciones.

Frmulas para averiguar los dgitos de control de un Cdigo de Cuenta de Cliente (CCC) del sistema bancario espao
Suponiendo que en A1 estuviera el cdigo de la entidad bancaria (4 dgitos), en B1 el cdigo de la sucursal (4 dgitos
{=EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(A1&B1;FILA(INDIRECTO("1:8"));1)*(EXTRAE(3749

La frmula para averiguar el dgito de control del nmero de cuenta sera:


{=EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(C1;FILA(INDIRECTO("1:10"));1)*(EXTRAE(0&1374

Si se necesitara averiguar ambos dgitos de control en la misma celda, la frmula sera:


{=EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(A1&B1;FILA(INDIRECTO("1:8"));1)*(EXTRAE(3749

Y para obtener el CCC completo (entidad + sucursal + dgitos de control + nmero de cuenta) separados por un espac
{=A1&" "&B1&" "&EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(A1&B1;FILA(INDIRECTO("1:8"));

Notas:
Conviene que tanto las celdas con los cdigos bancarios como las que tengan las frmulas para averiguar sus dgitos d
Es posible sustituir SUMA por SUMAPRODUCTO, y de as hacerlo no sera necesario introducir las frmulas de for

Frmula para averiguar los dgitos de control IBAN (International Bank Account Number)
Suponiendo que en A1 est el CCC (Cdigo de Cuenta del Cliente del sistema bancario espaol) completo (es decir, l
=DERECHA(0&98-RESIDUO(RESIDUO(RESIDUO(RESIDUO(EXTRAE(A1;1;8);97)&EXTRAE(A1;9;8);97)&D

y la frmula para devolver el cdigo IBAN completo sera:


="ES"&DERECHA(0&98-RESIDUO(RESIDUO(RESIDUO(RESIDUO(EXTRAE(A1;1;8);97)&EXTRAE(A1;9;8)

Si se deseara desglosar el IBAN en 6 grupos de 4 caracteres separados por un espacio (que es como se suele presenta
="ES"&DERECHA(0&98-RESIDUO(RESIDUO(RESIDUO(RESIDUO(EXTRAE(A1;1;8);97)&EXTRAE(A1;9;8)

Notas:
En el libro de ejemplo para la frmula anterior (la que averiguaba los dgitos de control del CCC) hay una hoja con ej
En dicho libro hay tambin una hoja (llamada Validaciones) en la que hay celdas con validaciones que slo admitirn
Ante la prxima implantacin del IBAN de forma obligatoria, me estn llegando preguntas sobre cmo funciona esta

Averiguar la letra de control de un NIF (Nmero de Identificacin Fiscal en Espaa) o un NIE (Nmero de Identificac
Suponiendo que en A1 se encuentra el DNI cuya letra se quiera averiguar, la frmula sera:
=EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(A1;23)+1;1)

Respecto a los NIE, hay que tener en cuenta que deben comenzar siempre por X Y (estando previsto que en el futur

=EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(ABS(CODIGO(IZQUIERDA(A1;1)))-88&DERECH
Averiguar el dgito verificador de un RUT (Rol nico Tributario) chileno
Suponiendo que en A1 se encuentra el RUT, la frmula sera:
{=EXTRAE("123456789K0";11-RESIDUO(SUMA(EXTRAE(DERECHA(REPETIR("0";12)&$A$1;12);13-FILA(

Usando como separador la coma, la frmula quedara as:


{=EXTRAE("123456789K0",11-RESIDUO(SUMA(EXTRAE(DERECHA(REPETIR("0",12)&$A$1,12),13-FILA(I

Averiguar el dgito verificador de un DNIC (Direccin Nacional de Identificacin Civil) uruguayo


Suponiendo que en A1 se encuentra el DNIC, la frmula sera:
=DERECHA(10-RESIDUO(SUMAPRODUCTO(VALOR(DERECHA(EXTRAE(A1;FILA(INDIRECTO("1:7"));1)

Usando como separador la coma, la frmula sera:


.=DERECHA(10-RESIDUO(SUMAPRODUCTO(VALOR(DERECHA(EXTRAE(A1,FILA(INDIRECTO("1:7")),1)

Una amable persona de Uruguay, RJM, me informa de que esta frmula falla si ha de calcular un nmero < 1.000.000

=DERECHA(10-RESIDUO(SUMAPRODUCTO(VALOR(DERECHA(EXTRAE(TEXTO(A1;"0000000");FILA(IN

Averiguar el dgito verificador de una CUIT (Clave nica de Identificacin Tributaria) argentina
Suponiendo que en A1 se encuentra la CUIT (en el formato 99-99999999), la frmula para averiguar su dgito verific
{=EXTRAE("12345678990";11-RESIDUO(SUMA(EXTRAE(IZQUIERDA($A$1;2)&EXTRAE($A$1;4;8);10-FIL

Usando como separador la coma, la frmula sera:


{=EXTRAE("12345678990",11-RESIDUO(SUMA(EXTRAE(IZQUIERDA($A$1,2)&EXTRAE($A$1,4,8),10-FILA

Calcular el dgito verificador de un Nmero de Cdula ecuatoriano


Suponiendo que en A1 se encuentra el nmero de cdula cuyo dgito verificador se desea calcular, la frmula sera:
{=10-RESIDUO(SUMA(SI(EXTRAE(A1;FILA(INDIRECTO("1:9"));1)*RESIDUO(212121212;FILA(INDIRECTO

Usando como separador la coma, la frmula sera:


{=10-RESIDUO(SUMA(SI(EXTRAE(A1,FILA(INDIRECTO("1:9")),1)*RESIDUO(212121212,FILA(INDIRECTO

Nota: no dispongo de ejemplos reales de Cdulas del Ecuador para comprobar el correcto funcionamiento de la frmu

Calcular el dgito verificador de un IMSS mexicano


Si el nmero (10 dgitos) est en A1, la frmula ser:
=DERECHA(10-RESIDUO(SUMAPRODUCTO(DERECHA(EXTRAE(A1;FILA(INDIRECTO("1:10"));1)*(EXTR

Utilizando como separador de listas la coma, la frmula sera:

.=DERECHA(10-RESIDUO(SUMAPRODUCTO(DERECHA(EXTRAE(A1,FILA(INDIRECTO("1:10")),1)*(EXTR

Frmula para averiguar el dgito de control de un cdigo de barras EAN-13


Suponiendo que en A1 se encuentre el cdigo EAN-13 (12 dgitos) cuyo dgito de control se desee averiguar, la frmu

=10-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:12"));1)*(EXTRAE(131313131313;FILA

Una variante, un poco ms corta:

=10-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:12"));1) *(1+((RESIDUO(FILA(INDIRE

Frmula para averiguar el dgito de control de un cdigo de barras EAN-8


Suponiendo que en A1 se encuentre el cdigo EAN-8 (7 dgitos) cuyo dgito de control se desee averiguar, la frmula
=10-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:7"));1)*(EXTRAE(3131313;FILA(INDIR

Nota: las frmulas que usan la funcin SUMAPRODUCTO se pueden hacer un poco ms cortas si se convierten en m

Reitero la importancia de que la celdas que contienen los cdigos cuyos dgitos de control se quieran averiguar estn

Detectar si existe duplicidad de un conjunto de celdas


imagen (11 kb)
En este ejemplo se necesita averiguar qu filas estn duplicadas (es decir, tienen las tres celdas iguales en el mismo or

Una posibilidad es poner la siguiente frmula en la fila 1 de una columna vaca

y copiarla y pegarla hasta la ltima fila. La frmula devolver el nmero de veces en que se produce la duplicidad.

Tambin sera posible usar la siguiente frmula, pero hay que tener en cuenta que hay que introducirla como matricia

{=COINCIDIR(A1:A6&B1:B6&C1:C6;A1:A6&B1:B6&C1:C6;0)}

Esta frmula asignar a cada grupo de celdas un nmero, y los grupos duplicados aparecern con el mismo nmero. E
Fijar en una celda el lunes de la semana actual (o cualquier otro da de la semana)
Por ejemplo, para mostrar siempre en una celda el lunes de la semana actual, la frmula sera:

=SI(DIASEM(HOY())=2;HOY();HOY()-DIASEM(HOY()-2))

Para los dems das de la semana, habra que sustituir los doses por:
1 para el domingo
3 para el martes
4 para el mircoles
5 para el jueves
6 para el viernes
7 para el sbado

Frmula para averiguar el sbado, domingo, etc. anterior o posterior a una fecha
Si en A1 hay una fecha y se desea saber el sbado anterior a la misma se puede usar:
.=A1-DIASEM(A1)
Para el sbado posterior la frmula sera:
.=A1-DIASEM(A1)+7
11/27/2017
Para el domingo anterior o siguiente, las frmulas seran:
.=A1-DIASEM(A1-1)
.=A1-DIASEM(A1-1)+7

Para el lunes, martes...viernes, habra que sustituir -1 por -2,-3... -6

Lgicamente, se puede trabajar con HOY() o AHORA() en vez de la referencia a A1, en cuyo caso los resultados ser

Fijar en una celda el primer o ltimo da del mes actual, anterior o siguiente
Primer da del mes actual: =FECHA(AO(HOY());MES(HOY());1)
ltimo da del mes actual: =FECHA(AO(HOY());MES(HOY())+1;1)-1
Primer da del mes anterior: =FECHA(AO(HOY());MES(HOY())-1;1)
ltimo da del mes anterior: =FECHA(AO(HOY());MES(HOY());1)-1
Primer da del mes siguiente: =FECHA(AO(HOY());MES(HOY())+1;1)
ltimo da del mes siguiente: =FECHA(AO(HOY()),MES(HOY())+2,1)-1

Fijar en una celda el primer o ltimo LUNES del mes actual, anterior o siguiente
Fijar en una celda la fecha correspondiente al 1, 2, 3, etc. lunes, martes, mircoles, etc. del mes actual.
Por ejemplo, si se necesita dejar fija en una celda la fecha del tercer lunes del mes actual la frmula podra ser:

{=K.ESIMO.MENOR(SI(DIASEM(FILA(INDIRECTO(FECHA(AO(HOY()),MES(HOY()),1)&":"&FECHA(A

Sustituyendo =2 por=1 se averiguara el 3er. domingo, =2 por =3 el 3er. martes, etc.; y sustituyendo el 3 que hay al fin

Habr que aplicarle a la celda donde est la frmula algn formato de fecha, ya que por defecto Excel le pondr form

Subtotalizar datos por tramos de edad


Suponiendo que en rango A1:A50 hay una serie de fechas de nacimiento, y que se necesita subtotalizar por tramos de

=SUMAPRODUCTO((ENTERO(SIFECHA($A$1:$A$50;HOY();"y")/10)=0)*1)

para las fechas de nacimiento de los 10 aos anteriores. Para los 10, 20, ... XX aos, habra que sustituir =0 por =1, =

Si se necesitara tomar como referencia una fecha en concreto en lugar de la actual, habra que sustituir HOY() por alg

=SUMAPRODUCTO((ENTERO(SIFECHA($A$1:$A$50;FECHA(2007;12;31);"y")/10)=0)*1)

Si se modifica un poco la frmula es posible subtotalizar por otros perodos distintos al decenio, como por ejemplo qu

=SUMAPRODUCTO((ENTERO(SIFECHA($A$1:$A$50;HOY();"y")/5)=0)*1)

o bienios:

=SUMAPRODUCTO((ENTERO(SIFECHA($A$1:$A$50;HOY();"y")/2)=0)*1)

Lgicamente, tambin es posible obtener sumas de cantidades que estn relacionadas con esas fechas. Por ejemplo, su

=SUMAPRODUCTO((ENTERO(SIFECHA($A$1:$A$50;HOY();"y")/10)=0)*$B1:$B$50)

Obtener un promedio despreciando el/los valor/es mayor/es o menor/es [Ejemplo]


Suponiendo que se tiene un rango con nombre (de una sola columna de ancho) llamado Notas, y se desea obtener su p
{=PROMEDIO(K.ESIMO.MENOR(Notas;FILA(INDIRECTO("1:"&FILAS(Notas)-1))))}

Para despreciar los dos valores ms altos tan slo habra que sustituir el -1 por -2, etc.

Para obtener el promedio despreciando la nota ms baja, habra que usar la funcin K.ESIMO.MAYOR, o sea:
{=PROMEDIO(K.ESIMO.MAYOR(Notas;FILA(INDIRECTO("1:"&FILAS(Notas)-1))))}

Si se deseara el promedio sin tener en cuenta TODAS las apariciones de la nota ms baja, la frmula sera:
{=PROMEDIO(K.ESIMO.MAYOR(Notas;FILA(INDIRECTO("1:"&FILAS(Notas)-CONTAR.SI(Notas;MIN(Notas))))))}

Para obtener el promedio sin tener en cuentas TODAS las apariciones de la nota ms alta:
{=PROMEDIO(K.ESIMO.MENOR(Notas;FILA(INDIRECTO("1:"&FILAS(Notas)-CONTAR.SI(Notas;MAX(Notas))))))}

Si el rango con nombre fuera una fila en lugar de una columna, habra que sustituir en la frmula FILAS por COLUM

Para averiguar el promedio del rango con nombre Notas despreciando tanto todos los valores menores como todos los

{=PROMEDIO(SI(NO((Notas=MIN(Notas))+(Notas=MAX(Notas)));Notas;""))}

Promediar cada n filas o columnas [Ejemplo]


A partir de la fila 1 de una columna se tiene un rango con nombre llamado Datos y se desea calcular el promedio cada

{=PROMEDIO(SI(RESIDUO(Datos;10)=0;Datos))}

Lgicamente, para calcular el promedio cada, por ejemplo, 5 filas, lo nico que habra que hacer es sustituir el 10 por

Esta frmula funcionara exactamente igual si el rango con nombre Datos estuviese dispuesto en una fila a partir de su

Averiguar la/s letra/s de una columna [Ejemplo]


Esta frmula devuelve la letra de la columna de la celda A1:
=SUSTITUIR(IZQUIERDA(CELDA("direccion";A1);ENCONTRAR("$";CELDA("direccion";A1);2)-1);"$";"")
Lgicamente, para devolver la letra (o letras) correspondiente/s a otra columna lo nico que hay que hacer es sustituir

Averiguar a qu bimestre, trimestre, cuatrimestre o semestre pertenece una fecha [Ejemplo]


Suponiendo que la fecha estuviera en A1, la frmula para el bimestre sera:
=REDONDEAR.MAS(MES(A1)/2;0)
- para el trimestre, habra que sustituir /2 por /3
- para el cuatrimestre, /2 por /4
- y para el semestre, /2 por /6.

Obtener la cantidad de domingos (o cualquier otro da de la semana) que hay entre dos fechas [Ejemplo]
Suponiendo que en A1 hay una fecha y en B1 otra fecha, mayor que la de A1, la siguiente frmula devolver el nme
.=ENTERO((B1-DIASEM(B1)-A1+8)/7)
para saber la cantidad de lunes, la frmula sera:
.=ENTERO((B1-DIASEM(B1-1)-A1+8)/7)

Sustituyendo -1 por -2, -3... -6 se obtendra el nmero de martes, mircoles... sbados.

Frmulas para saber si un nmero es o no primo [Ejemplo]

NOTA: En este enlace hay una pequea monografa sobre frmulas capaces de procesar nmeros ms grandes que la

Suponiendo que el nmero estuviera en A1:


{=A1&ELEGIR(N((SUMA(--(MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(RAIZ(A1+1)))))=A

Se podra usar la siguiente frmula en un Formato Concidional para que las celdas que contengan un nmero primo s
=SUMA(--(MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("$1:"&ENTERO(RAIZ(A1)))))=A1))=1

Notas:
el nmero ms alto que puede procesar esta frmula (en Excel 2003) es el 4.295.098.368. En las versiones posteriores
aplicada al nmero 1, la frmula dir que es primo, pero no lo es
conviene no usar muchas veces esta frmula en el mismo libro, dado que si los nmeros a procesar son muy grandes
usando esta funcin VBA es posible averiguar si un nmero es primo hasta el 999.999.999.999.999

Frmula para obtener el reverso de un nmero entero [Ejemplo]


Si, por ejemplo, en la celda A1 est el nmero 12345, la siguiente frmula devolver su reverso (54321):
{=SUMA(EXTRAE(ABS(A1);FILA(INDIRECTO("1:"&LARGO(ABS(A1))));1)*10^(FILA(INDIRECTO("1:"&LA
Lo mismo hace:
=SUMAPRODUCTO(EXTRAE(ABS(A1);FILA(INDIRECTO("1:"&LARGO(ABS(A1))));1)*10^(FILA(INDIREC

Usando esta frmula tambin es posible saber si el nmero situado en A1 es o no capica:


{=A1&ELEGIR(--(SUMA(EXTRAE(ABS(A1);FILA(INDIRECTO("1:"&LARGO(ABS(A1))));1)*10^(FILA(INDI

Nota: El mximo de dgitos que puede tener el nmero es 15, es decir los mismos que la precisin numrica de Excel

Averiguar si una palabra o frase es un palndromo [Ejemplo]


La siguiente frmula devuelve VERDADERO si la palabra en A2 es un palndromo (se lee igual en ambos sentidos) y
{=Y(EXTRAE(A2;FILA(INDIRECTO("1:"&ENTERO(LARGO(A2)/2)));1)=EXTRAE(A2;LARGO(A2)-FILA(IND

Esta otra sirve para procesar una frase en lugar de una palabra:
{=Y(EXTRAE(SUSTITUIR(A2;" ";"");FILA(INDIRECTO("1:"&ENTERO(LARGO(SUSTITUIR(A2;" ";""))/2)));1

Es posible acortar un poco las frmulas, pero en este caso tendrn que evaluar todas las letras de la palabra o de la fra

{=Y(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)=EXTRAE(A1;LARGO(A1)+1-FILA(INDIRECTO(

{=Y(EXTRAE(SUSTITUIR(A1;" ";"");FILA(INDIRECTO("1:"&LARGO(SUSTITUIR(A1;" ";""))));1)=EXTRAE(

Nota: en principio da igual si las letras estn en maysculas o minsculas, pero lo que no puede haber son signos de p

Averiguar el valor decimal de un nmero binario [Ejemplo]


Excel dispone del complemento Herramientas para Anlisis, que incluye una funcin para realizar este clculo, pero e

{=SUMA(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)*2^(LARGO(A1)-FILA(INDIRECTO("1:"&LA
Lo mismo hace:
=SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)*2^(LARGO(A1)-FILA(INDIREC

Debido a la precisin numrica de Excel (15 dgitos), si la celda donde est el nmero binario tiene formato numrico

Nota: esta misma frmula sirve para averiguar el valor decimal de un numero en las bases 3 a 9. Lo nico que hay qu

Averiguar el valor binario de un nmero decimal [Ejemplo]

NOTA: aconsejo la consulta de ste artculo sobre la conversin desde base 10 (decimal) a cualquiera de las bases 2 a

Excel dispone del complemento Herramientas para Anlisis, que incluye una funcin para realizar este clculo, pero e
{=SUMA(RESIDUO(ENTERO(A1/2^((FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1)))-1));2)*10^(FILA(IN
Lo mismo hace:
=SUMAPRODUCTO(RESIDUO(ENTERO(A1/2^((FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1)))-1));2)*1

Notas:
La celda donde est la frmula tiene que tener formato numrico, preferentemente con cero posiciones decimales y si
Debido a la precisin numrica de Excel (15 dgitos), el nmero decimal ms alto que puede devolver esta frmula es
Hay que tener en cuenta que aunque el nmero devuelto por la frmula "pueda parecer" binario, en realidad Excel lo
La frmula no generar un error si ha de procesar nmeros negativos o mayores de 32.768, pero los resultados podrn
Esta misma frmula (con las modificaciones necesarias) puede devolver nmeros en las bases 3 a 9. En el libro de eje

Averiguar el valor decimal de un nmero hexadecimal [Ejemplo]


Excel dispone del complemento Herramientas para Anlisis, que incluye una funcin para realizar este clculo, pero e
{=SUMA((HALLAR(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1);"0123456789abcdef")-1)*16^(LAR
Lo mismo hace:
=SUMAPRODUCTO((HALLAR(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1);"0123456789abcdef")-

Debido a la precisin numrica de Excel (15 dgitos), el hexadecimal ms alto que puede devolver esta frmula con g

Nota: esta misma frmula se puede usar (con las necesarias modificaciones) para averiguar el valor decimal de un n
{=SUMA((HALLAR(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1);"0123456789abcde")-1)*15^(LARG

Las modificaciones con respecto a la frmula hexadecimal -> decimal han sido tan slo dos:
1) Se ha eliminado la f (en "0123456789abcdef")
2) Se ha sustituido el 16 (en *16^) por 15

Ley de Benford
Si se desea conocer el grado de cumplimiento (o incumplimiento) de una serie de datos llamada Datos de la Ley de B
{=(SUMA(--(IZQUIERDA(ABS(Datos);1)="1"))/FILAS(Datos))-LOG(1+1/1)}

para el 2:
{=(SUMA(--(IZQUIERDA(ABS(Datos);1)="2"))/FILAS(Datos))-LOG(1+1/2)}

Para el resto de nmeros, tan slo habra que sustituir los dos doses de esta ultima frmula por el nmero que se dese

Con unas pequeas modificaciones es posible conseguir que la frmula funcione para los n primeros dgitos, donde n
{=(SUMA(--(IZQUIERDA(ABS(Datos);LARGO(FILA()))*1=FILA()))/FILAS(Datos))-LOG(1+1/FILA())}

Notas:
Si se sabe con toda seguridad que no hay valores negativos en el rango Datos (algo que, como es obvio, resulta sencil
Dado que la ley de Benford slo tiene sentido aplicarla a series de datos grandes (normalmente, miles), me permito re

Si se desease verificar el 2, 3er o 4 dgito (a partir del 4 no tiene mucho sentido hacerlo, salvo que se trate de muest
Para el 2 dgito:
{=(SUMA(--(SI(LARGO(ABS(Lista))>1;1*EXTRAE(ABS(Lista);2;1))=FILA()-1))/FILAS(Lista))-SUMA(LOG((F

Para el 3er dgito:


{=(SUMA(--(SI(LARGO(ABS(Lista))>2;1*EXTRAE(ABS(Lista);3;1))=FILA()-1))/FILAS(Lista))-SUMA(LOG((F

Y para el 4 dgito:

{=(SUMA(--(SI(LARGO(ABS(Lista))>3;1*EXTRAE(ABS(Lista);4;1))=FILA()-1))/FILAS(Lista))-SUMA(LOG((F

Estas frmulas habra que pegarlas en la fila 1, y serviran para averiguar las divergencias entre lo esperado y lo real p

Dado que en muchas ocasiones la lista de nmeros a procesar tendr como origen datos contables, y puesto que casi s
Para el 2 dgito:
{=(SUMA(--(SI(LARGO(ABS(Lista)*100)>1;1*EXTRAE(ABS(Lista)*100;2;1))=FILA()-1))/FILAS(Lista))-SUMA

Para el 3er dgito:


{=(SUMA(--(SI(LARGO(ABS(Lista)*100)>2;1*EXTRAE(ABS(Lista)*100;3;1))=FILA()-1))/FILAS(Lista))-SUMA

y para el 4 dgito:
{=(SUMA(--(SI(LARGO(ABS(Lista)*100)>3;1*EXTRAE(ABS(Lista)*100;4;1))=FILA()-1))/FILAS(Lista))-SUMA

De nuevo es posible sustituir ABS(Lista) por Lista si se sabe con seguridad que no hay valores negativos en el rango

A tener en cuenta tambin que estas frmulas son incluso ms costosas de calcular que las que vimos para el primer d

Generar nmeros de un dgito que satisfagan la ley de Benford [Ejemplo]


Si se utiliza la siguiente frmula el suficiente nmero de veces, los porcentajes de apariciones de cada uno de los nm

{=COINCIDIR(ALEATORIO();LOG(FILA(INDIRECTO("1:10"))))}

La frmula slo es aplicable al primer dgito. No obstante, hay que tener en cuenta que la ley de Benford predice tam

Saber la cantidad de nmeros pares y/o impares que hay en un rango


Suponiendo que en el rango A1:A10 hay una serie de nmeros enteros y que se desea averiguar cuantos de ellos son p
=SUMAPRODUCTO(--NO(RESIDUO(A1:A10;2))) para los pares
y:
=SUMAPRODUCTO(RESIDUO(A1:A10;2)) para los impares

Nota: se entiende que en el rango A1:A10 hay slo nmeros enteros. Si hubiera celdas vacas, fechas, nmeros con de

Sumar los nmeros pares o impares de un rango


Suponiendo que en el rango A1:A10 hay una serie de nmeros enteros y que se desa averiguar la suma de los pares y/
=SUMAPRODUCTO(NO(RESIDUO(A1:A10;2))*A1:A10) para los pares
y:
=SUMAPRODUCTO(RESIDUO(A1:A10;2)*A1:A10) para los impares

Nota: se entiende que en el rango A1:A10 hay slo nmeros enteros. Si hubiera celdas vacas, fechas, nmeros con de

Averiguar un nmero de la serie Fibonacci


La siguiente frmula devuelve el nmero 50 de la serie Fibonacci:
12586269025
Lgicamente, es posible averiguar cualquier otro sustituyendo los dos 50 de la frmula por el nmero que se desee; p

Usando una UDF que utilice el tipo de datos Decimal para hacer los clculos es posible averiguar hasta el Fibonacci 1

En esta pgina hay varias funciones para trabajar en Excel con enteros grandes, sirviendo una de ellas para hallar nm

La siguiente frmula devuelve VERDADERO si el nmero situado en A1 pertenece a la serie Fibonacci y FALSO en
{=NO(ESERROR(COINCIDIR(TEXTO($A$1;"0");TEXTO(((((1+RAIZ(5))/2)^FILA(INDIRECTO("2:73")))-(-((1+

Rachas [Ejemplo] <--Este ejemplo slo funciona en Excel 2007 y 2010


Por ejemplo, si en el rango A1:A30 hay un rango con nombre llamado Serie, con las letras ABAACABBBAAACCAA

{=SUMA(SIGNO(SI(FRECUENCIA(SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(IN

Para averiguar el promedio de elementos que tienen esas rachas, la frmula sera:

{=PROMEDIO(SI(FRECUENCIA(SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(IND

En esta ltima frmula sera posible sustituir PROMEDIO por otra funcin estadstica, como por ejemplo MAX MI

Lgicamente, sustituyendo >=2 por >=nmero_que_se_desee la frmula devolver los datos correspondientes a dicho

Sera posible obtener un listado con el nmero de repeticiones que tiene cada una de las rachas. Por ejemplo, para list

{=INDICE(SI(FRECUENCIA(SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRE

Esta frmula habra que situarla en la fila 1 de cualquier columna vaca, y luego copiarla y pegarla hacia abajo. Cuand

Como curiosidad, esta ltima frmula, con sus ms de 950 caracteres, es la ms larga de las que aparecen en esta pgi

Ninguna de las frmulas anteriores funciona con versiones de Excel anteriores a la 2007 puesto que superan (la ltim

Una simplificacin de estas frmulas puede ser utilizada para averiguar la racha que tiene ms nmeros positivos y m

{=MAX(FRECUENCIA(SI(Serie>0;FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:

y para averiguar la que tiene ms nmeros negativos:

{=MAX(FRECUENCIA(SI(Serie<0;FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:

Resulta evidente que estas mismas frmulas sirven tambin para averiguar las rachas de nmeros mayores o menores
Estas dos ltimas frmulas s pueden ser utilizadas en versiones de Excel anteriores a la 2007. En este enlace hay un l

[Ejemplo para las tres frmulas que vienen a continuacin]


Averiguar la cantidad de divisores de un nmero entero positivo y obtener una lista de los mismos
La siguiente frmula devuelve la cantidad de divisores del nmero entero positivo situado en A1:
{=SUMA(--((MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(A1/2))))=A1)))}

Es posible obtener un listado de dichos divisores poniendo la siguiente frmula en la fila 1 de cualquier columna:
{=K.ESIMO.MAYOR(((MULTIPLO.INFERIOR($A$1;FILA(INDIRECTO("1:"&ENTERO($A$1/2))))=$A$1)*FIL
y copindola hacia abajo hasta igualar el nmero de divisores del nmero (el resultado de la primera frmula). Si se s

La frmula no considera el entero que procesa como divisor de s mismo, aunque lgicamente lo es.

Averiguar la suma de los divisores de un nmero entero positivo


La siguiente frmula devuelve la suma de los divisores del nmero entero positivo situado en A1:
{=SUMA((MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(A1/2))))=A1)*FILA(INDIRECTO("1:"

La frmula no considera el entero que procesa como divisor de s mismo, aunque lgicamente lo es.

Averiguar si un nmero entero positivo es Defectivo, Perfecto o Abundante


La siguiente frmula dir qu tipo de nmero es el situado en A1:
{=ELEGIR(SIGNO(SUMA((MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(A1/2))))=A1)*FILA(

El nmero ms alto que pueden procesar estas frmulas en Excel 2003 es el 131.073. En Excel 2007 y 2010 es el 2.09

Nota: en esta pgina hay funciones VBA que pueden hacer los tres clculos anteriores hasta el mximo del tipo de dat

Complicando estas frmulas es posible llegar a procesar hasta el 13.107.200 en Excel 2003 y hasta el 209.715.200 a p

La frmula para calcular la suma de los divisores del nmero entero positivo situado en A1 es:

{=SUMA((MULTIPLO.INFERIOR(A1;COLUMNA(INDIRECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDE

La frmula para obtener el listado de los divisores es:


{=K.ESIMO.MAYOR((MULTIPLO.INFERIOR($A$1;COLUMNA(INDIRECTO("a:cv"))+(FILA(INDIRECTO("1:
Si se sustituye FILA() por un nmero entero, la frmula devolver el divisor que ocupe esa posicin en la lista de div

Y la frmula para averiguar si el nmero es Defectivo, Perfecto o Abundante:

{=ELEGIR(SIGNO(SUMA((MULTIPLO.INFERIOR(A1;COLUMNA(INDIRECTO("a:cv"))+(FILA(INDIRECTO(
Hay que tener en cuenta que las dos ltimas frmulas podran no devolver el resultado correcto si el nmero a proces
brearchivo"))+1;ENCONTRAR("]";CELDA("nombrearchivo"))-ENCONTRAR("[";CELDA("nombrearchivo"))-1)

ombrearchivo";A1))+1;32)

esario complicar bastante la frmula: [Ejemplo]

"]";CELDA("nombrearchivo";A1))+1;32));EXTRAE(SUSTITUIR(CELDA("nombrearchivo";A1);"\";"*";LARGO(CELDA("no

s, meses y das: [Ejemplo]


" meses " & SIFECHA(A1;HOY();"md") & " das"
aber la edad a fecha de hoy).

o "1 das", se puede usar una frmula ms compleja:


IR(MIN(SIFECHA(A1;HOY();"y")+1;3);"";"ao ";"aos ");"")&SI(SIFECHA(A1;HOY();"ym")>0;SIFECHA(A1;HOY();"ym"

a convertir en aos, meses y das un nmero de das determinados (valgan como ejemplo los nmeros de das que figuran en los

"y")&" "&ELEGIR(MIN(SIFECHA(--"1-1-1900";A1+2;"y")+1;3);"";"ao ";"aos ");"")&SI(SIFECHA(--"1-1-1900";A1+2;"ym

adicional es necesaria porque Excel, para no perder la compatibilidad, "hered" un error procedente de Lotus 1-2-3, que errnea

c.): [Ejemplo]

[Ejemplo]
s o columnas. Por ejemplo, para sumar cada 5 filas de una columna:

llamado Lista (es decir, sumando una sola vez cada valor aunque est ms de una vez en el rango), se puede usar la frmula:

Si hubiera fechas, la frmula las considerara nmeros.

mna y sin celdas vacas) hay un conjunto de datos uno o ms de los cuales pueden estar repetidos, y que se necesita una lista en la
A(INDIRECTO("1:"&CONTARA(Lista)));COINCIDIR(Lista;Lista;0);"");FILA()))}

era, y copiarla hacia abajo. Cuando no quedaran ms datos que mostrar, comenzara a aparecer el error #NUM!

abra que restar el nmero de dicha fila menos uno en la segunda vez que aparece la funcin FILA(). Por ejemplo, para empezar e
A(INDIRECTO("1:"&CONTARA(Lista)));COINCIDIR(Lista;Lista;0);"");FILA()-4))}

n una columna, las frmulas seran:


sta;Lista;0))=FILA(INDIRECTO("1:"&CONTARA(Lista)));TRANSPONER(COINCIDIR(Lista;Lista;0));"");FILA()))}
sta;Lista;0))=FILA(INDIRECTO("1:"&CONTARA(Lista)));TRANSPONER(COINCIDIR(Lista;Lista;0));"");FILA()-4))}

mna y sin celdas vacas) hay un conjunto de valores que pueden estar repetidos, y que se necesita una lista ordenada de mayor a
sta);FILA()));"Valor repetido";K.ESIMO.MAYOR(SI(FRECUENCIA(Lista;Lista)>0;Lista);FILA()))}

sta);FILA()));"Valor repetido";K.ESIMO.MAYOR(SI(FRECUENCIA(Lista;Lista)>0;Lista);FILA()))}

a pareja SI y ESERROR, con lo que las frmulas resultan bastante ms cortas y eficientes:

);FILA());"Valor repetido")}
);FILA());"Valor repetido")}

un entero concreto, en cuyo caso la frmula devolver el elemento situado en esa posicin en la lista de elementos nicos.

habra que sustituir FILA() por FILA()-n, siendo n dicho nmero de fila+1 (por ejemplo, si se tratase de la fila 3 sera FILA()-2)

que se necesita es una jerarquizacin de los elementos nicos del rango.

notas estn repetidas (p.ej., 2 dieces, 2 nueves, etc.) y se desea obtener el puesto nico de cada una de ellas (los dos dieces el pri

NDIRECTO("1:"&SUMA(1/CONTAR.SI(Notas;Notas)))));0)}

er los puestos nicos, pero otorgndole a la nota ms baja el puesto ms alto y as con todas las dems.

nteros positivos llamada Lista, se podra usar la frmula:

a))))=0;FILA(INDIRECTO(MIN(Lista)&":"&MAX(Lista)));0);FILA())}

hacia abajo. Los nmeros faltantes iran apareciendo de mayor a menor, y cuando no quedaran ms nmeros faltantes, comenzar

menor a mayor, se podra usar la frmula:

a))))=0;FILA(INDIRECTO(MIN(Lista)&":"&MAX(Lista)));FALSO);FILA())}
arse el error #!NUM

or a menor ni a la inversa, si bien el ejemplo lo est para mayor claridad. Tampoco sucede nada si uno o ms nmeros de la serie

echo escribir una nueva frmula: se trata de averiguar qu nmeros faltan en una serie cuyo nmero inicial es muy grande, por e

meros superiores al mximo de filas de Excel (65.536 en la versin 2003, 1.048.576 a partir de la versin 2007), as que en este

NDIRECTO(MIN(Lista)-MIN(Lista)+1&":"&MAX(Lista)-MIN(Lista)+1));Lista-MIN(Lista)+1;0));FILA(INDIRECTO(MIN(L

sustituir .MENOR por .MAYOR si el orden deseado fuera el inverso.

a con cualquier nmero ms bajo. Otra ventaja de esta ltima frmula es que puede procesar nmeros enteros negativos y positiv

e no hay repeticiones, es posible utilizar una frmula ms sencilla (aunque ms interesante desde un punto de vista matemtico)

s: [Ejemplo]

e 5 y 15 en el rango A1:A25.

entre 5 y 15 en el rango A1:A25

el mes de enero del ao 2009.

>"&FECHA(2009;1;31))
por K.ESIMO.MENOR

o A1:A100.

distinto de algo (o su valor):


ustituir las dos primeras frmulas por:

as celdas de la misma fila. Dos posibilidades para lograrlo:

n valor dado
hallar el mnimo a partir de un nmero determinado (por ejemplo, excluyendo los ceros y nmeros negativos), se puede usar:

terminado se puede usar:

o los valores superiores a 10.

uentra el nmero 111111 dentro del rango con nombre Datos, la frmula sera:
LA(Datos)-CELDA("fila";Datos);;1;);111111));0);COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;;COLUMNA(Datos)-CE

() y NO() como frmula para una regla de validacin. En Excel 2003 y versiones anteriores esto no es posible porque las frmula

ntos adicionales (tres en realidad, pero el ltimo no nos interesa en lo que concierne a esta frmula):

o argumento)

n total seguridad que el rango con nombre Datos empieza en A1. En este caso la frmula podra acortarse poco:

LA(Datos)-1;;1;);111111));0);COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;;COLUMNA(Datos)-1;;1);111111));0))}

to a la primera frmula, con lo que esta segunda frmula s podra ser utilizada [junto con NO() y ESERROR(), lgicamente] com

REF(Datos;FILA(Datos)-1;;1;);F1));0);COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;;COLUMNA(Datos)-1;;1);F1));0)

ntra el valor mximo o mnimo de un rango


nos importes correspondientes a cada una de dichas fechas, y que se necesitara saber la suma de los importes correspondientes a l
;1))*(A1:A50<FECHA(AO(HOY());MES(HOY());1));B1:B50)
en curso, la frmula sera:
+1;1))*(A1:A50<FECHA(AO(HOY());MES(HOY());1));B1:B50)

a y tres- que tiene la nica hoja de este libro, junto con el gran nmero de clculos necesarios, hace que el reclculo tenga un ret

ompradas o vendidas, es posible hacerlo anidando SIes, siempre y cuando los tramos del baremo sean siete o menos (hasta Excel
2<=50;0,17;SI(D2<=60;0,2;SI(D2<=70;0,23)))))))
ecurrir a una frmula matricial:
(A$2:A$11)-1));1);0);0)}

do en A1. Su autor es Thomas Jansen. Fue presentada a un concurso para encontrar la frmula ms corta para determinar el domingo de P

ao. Por ejemplo, para el ao 2008:

s frmulas y me seala que fallan para el ao 2079. Sugiero visitar su blog en el que se trata el tema del clculo del domingo de

mato de fecha, dado que devuelven un nmero de serie.

go), se puede usar la frmula:


HOY())+FILA(INDIRECTO("1:11"))-1;7;25))=1;0)-1}

sita es el valor mximo de la suma de cada conjunto de tres celdas de cada fila. La frmula sera:
)*FILA(A1:A10))}

*FILA(A1:A10))}
s celdas suman el valor mximo.

*FILA(A1:A10))}
FILA(A1:A10))}

rizontal (p.ej., A1:J3) seran:

NA((A1:J3)))}
A(A1:J1))}

NA((A1:J3)))}
A(A1:J1))}

criterios trabajaran con la lista completa (a excepcin de la funcin SUBTOTALES, que por defecto trabaja con los datos visibl

las filas visibles):

A(A2:A15)-MIN(FILA(A2:A15));;1)))*B2:B15)}

A(A2:A15)-MIN(FILA(A2:A15));;1))))}

N(FILA(A2:A15));;1)))*B2:B15)}
or es slo otro ejemplo de esta forma de usar DESREF)

N(FILA(A2:A15));;1))))}
or es slo otro ejemplo de esta forma de usar DESREF)

B2:B15;FILA(B2:B15)-2;;1))>0;B2:B15);SI(SUBTOTALES(3;DESREF(B2:B15;FILA(B2:B15)-2;;1))>0;B2:B15)))}

15)-MIN(FILA(A2:A15));;1));0)+1}
(FILA(A2:A15));;1))*FILA(A2:A15))}

ILA(A2:A15));;1))))=FILAS(A2:A15);"No hay filtro activo.";INDICE(A2:A15;COINCIDIR(1;SUBTOTALES(3;DESREF(A2

condicin activa en el filtro, pero en la versiones siguientes es posible tener activa ms de una condicin al mismo tiempo. La f

ILA(A2:A15));;1))))=FILAS(A2:A15);"No hay filtro activo.";INDICE(A2:A15;INDICE(K.ESIMO.MENOR(SI(FILA(A2:A15

bra que sustituir el ltimo 1 de la frmula por el nmero que se desee.

Si hubiese ms, habra que sustituir el -1 por dicho nmero.

a partir de la versin 2007 puesto que supera el lmite de niveles de anidamiento permitidos hasta Excel 2003.

cuya fila la columna A tiene el valor 20 y la columna B tiene el valor 2. La frmula sera:

un carcter dentro de una cadena de texto, pero si se necesita saber la posicin en que aparece por ltima vez se puede usar la f
5);LARGO(A1)-LARGO(SUSTITUIR(A1;"b";""))))

o que est en A1.

que en ningn caso va a estar en el texto. Por ejemplo, si se supiera con seguridad que no va a haber ningn cero se podra usar:
TITUIR(A1;"b";""))))

texto. [Ejemplo]
A1 (por ejemplo, extraer 9854 de la cadena abcd9854), pero la longitud del nmero no es fija, se puede usar:

CTO("1:"&LARGO(A1))))))}

la cadena 9854abcd), lo nico que habra que hacer es sustituir DERECHA por IZQUIERDA.

parador decimal en la cadena de texto sea el mismo que el establecido en la configuracin regional del equipo.
o la posicin del nmero no es fija, se puede usar la siguiente frmula:
NDIRECTO("1:"&LARGO(A1)));1));0);LARGO(A1)-COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;LARGO(A1)-FILA(IND

nvertirlo en su valor para poder operar numricamente con l, lo nico que habra que hacer es multiplicar por 1 el resultado (es d

de texto. En este caso sera posible convertir a hora la cadena de texto devuelta por la frmula usando la funcin HORANUMER

de texto. Es decir, por ejemplo la frmula funcionar con la cadena "extraer 125,50 de esta cadena" (devolver 125,50), pero no c

son enteros (no tienen decimales), es posible utilizar una frmula ms sencilla:
NDIRECTO("1:"&LARGO(A1)));1));0);CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))}

<--Este ejemplo slo funciona en Excel 2007 y 2010


eres numricos de una cadena de texto, con la limitacin de que tan slo puede haber 14 caracteres numricos, como mximo, a l

iete niveles de anidamiento permitidos como mximo hasta la versin 2003, y es posiblemente una de las ms "desmesuradas" d

DIRECTO("1:"&LARGO(A1)));1))*(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)<>"0");0)-LARGO(SUSTITUIR

(a partir de SUMA), ya de por s bastante larga y complicada (282 caracteres), hay que anteponerle una an ms larga expresin

A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(

87,0654 de la cadena "a9b8c7,0d6e5f4"), se podra usar la frmula:


A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(
ue sustituir los "," por ".".

o en el que se vaya a usar esta ltima frmula, es posible complicarla todava un poco ms para que ella misma lo averige:
A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(

como tambin podra ser til para alguien con buenas intenciones he decidido ponerla.

se encuentran datos personales (nombre, direccin, etc.) adems de la direccin de correo electrnico. La frmula est escrita pa

HALLAR("@";SUSTITUIR(","&A1&",";",";REPETIR(" ";500)))-250;500))
l nmero de aes que aparecen en el texto:

rmula sera:

an slo se puede aplicar a valores numricos. Si se necesitara emular esta funcin en un rango compuesto de celdas con texto, y s

rango A1:A10 (en el que no puede haber celdas vacas), la frmula sera:
ONTAR.SI(A1:A10;A1:A10);0))}
o de repeticiones la frmula devolvera el situado ms arriba.

ango. Si se necesita averiguar cul es el 2, 3, etc. valor ms repetido de un rango con nombre llamado Datos (que ha de empeza

s;Datos;0)=FILA(Datos);CONTAR.SI(Datos;Datos)-FILA(Datos)/10^MAX(LARGO(Datos-ENTERO(Datos))));FILA());SI(CO

petido, tendra que estar situada en la fila 2. Situada en la fila 1, la frmula devolvera el elemento ms repetido, lo que carece de

FILA(), por lo que si se sustituye esta funcin por un nmero entero especfico la frmula devolver el elemento que ocupe esa p

sa al objeto de deshacer los posibles "empates" en su cantidad de apariciones, para lo que recurre a la tcnica de restarle a cada u

a siguiente variante de la frmula:


s;Datos;0)=FILA(Datos);CONTAR.SI(Datos;Datos)-FILA(Datos)/100);FILA());SI(COINCIDIR(Datos;Datos;0)=FILA(Datos);C

cla de valores y texto o incluso si tan slo hay nmeros, pero si los nmeros tuviesen decimales podran producirse resultados in

n primero el situado ms arriba en el rango, luego el siguiente hacia abajo, etc. Cuando no queden ms elementos nicos en el ran
por espacios, la frmula para averiguar el nmero de palabras sera:

n la celda A1 la frmula sera:


A1;" ";""))+1)

cuenta al calcular el promedio de los largos de las palabras.


e habra que hacer es sustituir en las frmulas " " por "-".

mula sera:

RGO(A1:A10)));0))}

devolver la primera de ellas.

os textos fueran los ms largos del rango. La frmula para dicho formato condicional sera:

e veces que aparece [Ejemplo]


o en la celda A1, se podra usar:
"1:"&LARGO(A1)));1);EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1);0));1)}

mo nmero de veces, la frmula devolver el situado ms a la izquierda. En Excel 2010 es posible utilizar la nueva funcin MOD
ECTO("1:"&LARGO($A$1)));1);EXTRAE($A$1;FILA(INDIRECTO("1:"&LARGO($A$1)));1);0));FILA())}

pegarla hacia abajo. Cuando no haya ms elementos "empatados" en el primer puesto por el nmero de apariciones, comenzar a

empate, devolver el carcter ms a la derecha (til para las versiones anteriores a la 2010, que no disponen de la funcin MODA.
O(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))+1;1);EXTRAE(A1;LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))+1;

dgito que ms lo hace, usando la frmula:


DIRECTO("1:"&LARGO(A1)));1);"")))}
A1, se puede usar:
NDIRECTO("1:"&LARGO(A1)));1)));0)}

AE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)));0);1)}

sustituir VERDADERO por FALSO.

A1, se puede usar:


RGO(A1)));1)))*FILA(INDIRECTO("1:"&LARGO(A1))))}

CTO("1:"&LARGO(A1)));1)))*FILA(INDIRECTO("1:"&LARGO(A1))));1)}

ARGO(A1)));1)))*FILA(INDIRECTO("1:"&LARGO(A1))))}

ECTO("1:"&LARGO(A1)));1)))*FILA(INDIRECTO("1:"&LARGO(A1))));1)}

elda es un texto, pero dicha funcin no evala cada carcter, por lo que, por ejemplo, AB1C lo considerara como texto a pesar de

una celda son letras maysculas, excluyendo la , se podra usar:

&LARGO(A1)));1))>64)*(CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))<91))=LARGO(A1)

&LARGO(A1)));1))>64)*(CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))<91))+(CODIGO(EXTRAE(A1

por ejemplo, 6 caracteres), la frmula sera (sin la ):

"&LARGO(A1)));1))>64)*(CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))<91))=6;LARGO(A1)=6)

:"&LARGO(A1)));1))>64)*(CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))<91)+(CODIGO(EXTRAE(A

acer las siguientes sustituciones en las frmulas:


ada' en las validaciones.

Cliente (CCC) del sistema bancario espaol [Ejemplo]


), en B1 el cdigo de la sucursal (4 dgitos) y en C1 el cdigo de la cuenta (10 dgitos), la frmula para averiguar el dgito de con
A(INDIRECTO("1:8"));1)*(EXTRAE(37498625;FILA(INDIRECTO("1:8"));1)+1));11);1)}

DIRECTO("1:10"));1)*(EXTRAE(0&137498625;FILA(INDIRECTO("1:10"));1)+1));11);1)}

rmula sera:
A(INDIRECTO("1:8"));1)*(EXTRAE(37498625;FILA(INDIRECTO("1:8"));1)+1));11);1)&EXTRAE(12345678910;11-RESIDU

nmero de cuenta) separados por un espacio, que es como se suele presentar el CCC en Espaa, la frmula sera:
RAE(A1&B1;FILA(INDIRECTO("1:8"));1)*(EXTRAE(37498625;FILA(INDIRECTO("1:8"));1)+1));11);1)&EXTRAE(12345

an las frmulas para averiguar sus dgitos de control tengan formato de texto para evitar que se pierdan los ceros que pueda habe
ra necesario introducir las frmulas de forma matricial.

ccount Number)
ma bancario espaol) completo (es decir, los cuatro dgitos del banco + los cuatro de la sucursal + los dos dgitos de control + lo
AE(A1;1;8);97)&EXTRAE(A1;9;8);97)&DERECHA(A;4)&1428;97)&"00";97);2)

EXTRAE(A1;1;8);97)&EXTRAE(A1;9;8);97)&DERECHA(A1;4)&1428;97)&"00";97);2)&A1

un espacio (que es como se suele presentar el IBAN en Espaa), la frmula sera:


EXTRAE(A1;1;8);97)&EXTRAE(A1;9;8);97)&DERECHA(A1;4)&1428;97)&"00";97);2)&" "&IZQUIERDA(A1;4)&" "&EXT

os de control del CCC) hay una hoja con ejemplos de estas frmulas que calculan los cdigos de control IBAN.
celdas con validaciones que slo admitirn los dgitos de control correctos.
gando preguntas sobre cmo funciona esta frmula que calcula sus dgitos de control en Excel, por lo que he decidido preparar u

n Espaa) o un NIE (Nmero de Identificacin de Extranjeros) [Ejemplo]


a frmula sera:

por X Y (estando previsto que en el futuro puedan empezar tambin por Z), y tener a continuacin siete dgitos. La frmula par

DIGO(IZQUIERDA(A1;1)))-88&DERECHA(A1;7);23)+1;1)
A(REPETIR("0";12)&$A$1;12);13-FILA(INDIRECTO("1:12"));1)*(FILA(INDIRECTO("1:12"))+1-(FILA(INDIRECTO("1:12

A(REPETIR("0",12)&$A$1,12),13-FILA(INDIRECTO("1:12")),1)*(FILA(INDIRECTO("1:12"))+1-(FILA(INDIRECTO("1:12

cacin Civil) uruguayo

XTRAE(A1;FILA(INDIRECTO("1:7"));1)*EXTRAE("2987634";FILA(INDIRECTO("1:7"));1);1)));10);1)

XTRAE(A1,FILA(INDIRECTO("1:7")),1)*EXTRAE("2987634",FILA(INDIRECTO("1:7")),1),1))),10),1)

la si ha de calcular un nmero < 1.000.000 y me sugiere una modificacin que permite calcular dichos nmeros:

XTRAE(TEXTO(A1;"0000000");FILA(INDIRECTO("1:7"));1)*EXTRAE("2987634";FILA(INDIRECTO("1:7"));1);1)));10);1)

n Tributaria) argentina
la frmula para averiguar su dgito verificador sera:
DA($A$1;2)&EXTRAE($A$1;4;8);10-FILA(INDIRECTO("1:10"))+1;1)*(FILA(INDIRECTO("1:10"))+1-(FILA(INDIRECTO(

A($A$1,2)&EXTRAE($A$1,4,8),10-FILA(INDIRECTO("1:10"))+1,1)*(FILA(INDIRECTO("1:10"))+1-(FILA(INDIRECTO(

cador se desea calcular, la frmula sera:


RESIDUO(212121212;FILA(INDIRECTO("1:9"));1)>9;RESIDUO(A1;FILA(INDIRECTO("1:9"));1)*RESIDUO(212121212;F

RESIDUO(212121212,FILA(INDIRECTO("1:9")),1)>9,RESIDUO(A1,FILA(INDIRECTO("1:9")),1)*RESIDUO(212121212,F

bar el correcto funcionamiento de la frmula, pero parece que s funciona puesto que calcula bien el ejemplo planteado aqu.
A1;FILA(INDIRECTO("1:10"));1)*(EXTRAE(1212121212;FILA(INDIRECTO("1:10"));1));1)+(EXTRAE(A1;FILA(INDIREC

A1,FILA(INDIRECTO("1:10")),1)*(EXTRAE(1212121212,FILA(INDIRECTO("1:10")),1)),1)+(EXTRAE(A1,FILA(INDIREC

gito de control se desee averiguar, la frmula sera:

1:12"));1)*(EXTRAE(131313131313;FILA(INDIRECTO("1:12"));1)));10)

1:12"));1) *(1+((RESIDUO(FILA(INDIRECTO("1:12"));2)=0)*2)));10)

o de control se desee averiguar, la frmula sera:


1:7"));1)*(EXTRAE(3131313;FILA(INDIRECTO("1:7"));1)));10)

er un poco ms cortas si se convierten en matriciales, para lo cual lo nico que hay que hacer es sustituir SUMAPRODUCTO po

gitos de control se quieran averiguar estn formateadas como texto, para evitar que se puedan perder ceros por la izquierda, si los

enen las tres celdas iguales en el mismo orden).

e veces en que se produce la duplicidad.

nta que hay que introducirla como matricial habiendo seleccionado antes todo el rango donde debe ir.

icados aparecern con el mismo nmero. En esta imagen (37 kb) se puede ver la frmula, aplicada en el rango D1:D6
al, la frmula sera:

ncia a A1, en cuyo caso los resultados seran voltiles.

11/6/2017 PRIMER LUNES DEL MES


10/2/2017 PRIMER LUNES DEL MES ANTERIOR
12/4/2017
12/4/2017
FECHA(AO(HOY()),MES(HOY())+1,1)-1
mircoles, etc. del mes actual.
el mes actual la frmula podra ser:

OY()),MES(HOY()),1)&":"&FECHA(AO(HOY()),MES(HOY())+1,1)-1)))=2,FILA(INDIRECTO(FECHA(AO(HOY()),ME

artes, etc.; y sustituyendo el 3 que hay al final por 2 se averiguara la fecha del 2 lunes en vez de la del 3.

a, ya que por defecto Excel le pondr formato numrico.

que se necesita subtotalizar por tramos de edad de 10 aos desde dichas fechas de nacimiento hasta la fecha actual, la frmula se

XX aos, habra que sustituir =0 por =1, =2 ... =XX/10

actual, habra que sustituir HOY() por alguna de las funciones de conversin a fechas de Excel. Por ejemplo, usando la funcin

12;31);"y")/10)=0)*1)

s distintos al decenio, como por ejemplo quinquenios:

acionadas con esas fechas. Por ejemplo, suponiendo que en el rango B1:B50 de la misma hoja hubiera una serie de cantidades y

)=0)*$B1:$B$50)

cho) llamado Notas, y se desea obtener su promedio despreciando su valor ms alto, la frmula sera:
AS(Notas)-1))))}

por -2, etc.

funcin K.ESIMO.MAYOR, o sea:


AS(Notas)-1))))}

nota ms baja, la frmula sera:


R.SI(Notas;MIN(Notas))))))}

nota ms alta:
AR.SI(Notas;MAX(Notas))))))}

sustituir en la frmula FILAS por COLUMNAS.

o todos los valores menores como todos los mayores, la frmula sera:

Datos y se desea calcular el promedio cada, por ejemplo, 10 filas. La frmula sera:

que habra que hacer es sustituir el 10 por un 5.

stuviese dispuesto en una fila a partir de su columna A.

;CELDA("direccion";A1);2)-1);"$";"")
mna lo nico que hay que hacer es sustituir los dos A1 por la direccin de cualquier celda de la columna deseada.

fecha [Ejemplo]

ay entre dos fechas [Ejemplo]


A1, la siguiente frmula devolver el nmero de domingos que hay entre ambas:

... sbados.

s de procesar nmeros ms grandes que la expuesta aqu.

ECTO("1:"&ENTERO(RAIZ(A1+1)))))=A1))>1))+1;" s";" no") & " es un nmero primo."}

s celdas que contengan un nmero primo se destaquen como se haya establecido en el propio Formato Condicional:
ERO(RAIZ(A1)))))=A1))=1

4.295.098.368. En las versiones posteriores es el 1.099.513.724.928, pero el procesamiento de un nmero tan grande podra lleva

los nmeros a procesar son muy grandes tendr que hacer muchos clculos
el 999.999.999.999.999

devolver su reverso (54321):


1))));1)*10^(FILA(INDIRECTO("1:"&LARGO(ABS(A1))))-1))*SIGNO(A1)}

RGO(ABS(A1))));1)*10^(FILA(INDIRECTO("1:"&LARGO(ABS(A1))))-1))*SIGNO(A1)

s o no capica:
&LARGO(ABS(A1))));1)*10^(FILA(INDIRECTO("1:"&LARGO(ABS(A1))))-1))*SIGNO(A1)=A1)+1;" no";" s")&" es capic

mismos que la precisin numrica de Excel.

ndromo (se lee igual en ambos sentidos) y FALSO si no lo es:


;1)=EXTRAE(A2;LARGO(A2)-FILA(INDIRECTO("1:"&ENTERO(LARGO(A2)/2)))+1;1))}
O(LARGO(SUSTITUIR(A2;" ";""))/2)));1)=EXTRAE(SUSTITUIR(A2;" ";"");LARGO(SUSTITUIR(A2;" ";""))-FILA(INDIR

uar todas las letras de la palabra o de la frase, mientras que las dos frmulas anteriores necesitan evaluar tan slo la mitad:

E(A1;LARGO(A1)+1-FILA(INDIRECTO("1:"&LARGO(A1)));1))}

O(SUSTITUIR(A1;" ";""))));1)=EXTRAE(SUSTITUIR(A1;" ";"");LARGO(SUSTITUIR(A1;" ";""))+1-FILA(INDIRECTO("1:"

pero lo que no puede haber son signos de puntuacin ni acentos.

na funcin para realizar este clculo, pero en cualquier caso se puede usar la siguiente frmula para hallar el valor decimal del n

LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))))}

1)));1)*2^(LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))))

el nmero binario tiene formato numrico, ste no podr ser mayor de 15 unos (32.767 en decimal), mientras que si la celda est

ero en las bases 3 a 9. Lo nico que hay que hacer es sustituir el 2 de la frmula (en la expresin *2^) por la base en la que se enc

e 10 (decimal) a cualquiera de las bases 2 a 9.

na funcin para realizar este clculo, pero en cualquier caso se puede usar la siguiente frmula para hallar el valor binario de un n
RO(LOG(A1;2))+1)))-1));2)*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1))-1))}

1:"&ENTERO(LOG(A1;2))+1)))-1));2)*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1))-1))

emente con cero posiciones decimales y sin separador de miles.


s alto que puede devolver esta frmula es el 32.768, que en binario es 1000000000000000 (un uno seguido de 15 ceros).
eda parecer" binario, en realidad Excel lo tratar como decimal si se intenta hacer cualquier clculo con l.
yores de 32.768, pero los resultados podrn no ser correctos.
meros en las bases 3 a 9. En el libro de ejemplo de esta funcin se pueden ver dichas frmulas, as como sus limitaciones.

na funcin para realizar este clculo, pero en cualquier caso se puede usar la siguiente frmula para hallar el valor decimal de un
1)));1);"0123456789abcdef")-1)*16^(LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))))}
&LARGO(A1)));1);"0123456789abcdef")-1)*16^(LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))))

alto que puede devolver esta frmula con garantas es 38D7EA4C68000 (un uno seguido de 15 ceros en decimal).

) para averiguar el valor decimal de un nmero en otras bases que requieran ms de los 10 smbolos numricos del sistema decim
1)));1);"0123456789abcde")-1)*15^(LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))))}

sido tan slo dos:

erie de datos llamada Datos de la Ley de Benford, la frmula para el 1 sera:

ultima frmula por el nmero que se deseara.

cione para los n primeros dgitos, donde n lo determinar el nmero de fila de la celda en la que se encuentre la frmula:
ILAS(Datos))-LOG(1+1/FILA())}

os (algo que, como es obvio, resulta sencillsimo de averiguar utilizando la funcin MIN() sobre dicho rango), es posible sustitui
andes (normalmente, miles), me permito recomendar prudencia en cuanto al nmero de veces que se usen estas frmulas en un m

entido hacerlo, salvo que se trate de muestras enormes de nmeros, puesto que las frecuencias esperadas son prcticamente 10%

FILA()-1))/FILAS(Lista))-SUMA(LOG((FILA(INDIRECTO("1:9"))*10+FILA())/(FILA(INDIRECTO("1:9"))*10+FILA()-1)))}

FILA()-1))/FILAS(Lista))-SUMA(LOG((FILA(INDIRECTO("10:99"))*10+FILA())/(FILA(INDIRECTO("10:99"))*10+FILA()

FILA()-1))/FILAS(Lista))-SUMA(LOG((FILA(INDIRECTO("100:999"))*10+FILA())/(FILA(INDIRECTO("100:999"))*10+FI

as divergencias entre lo esperado y lo real para el cero. Copiando y pegando las frmulas hasta la fila 10 se mostraran los valores

origen datos contables, y puesto que casi siempre estos datos tendrn los dos decimales correspondientes a los cntimos, habr q
00;2;1))=FILA()-1))/FILAS(Lista))-SUMA(LOG((FILA(INDIRECTO("1:9"))*10+FILA())/(FILA(INDIRECTO("1:9"))*10+FI

00;3;1))=FILA()-1))/FILAS(Lista))-SUMA(LOG((FILA(INDIRECTO("10:99"))*10+FILA())/(FILA(INDIRECTO("10:99"))*1

00;4;1))=FILA()-1))/FILAS(Lista))-SUMA(LOG((FILA(INDIRECTO("100:999"))*10+FILA())/(FILA(INDIRECTO("100:999

que no hay valores negativos en el rango con nombre Lista, con lo que se ganar algo de rendimiento.

calcular que las que vimos para el primer dgito, puesto que han de construir matrices adicionales para el clculo de la suma de la

ajes de apariciones de cada uno de los nmeros del 1 al 9 deberan tender a satisfacer la ley de Benford segn ms grande vaya s

n cuenta que la ley de Benford predice tambin los porcentajes de apariciones de los dgitos siguientes, pero que para dgitos ms

ue se desea averiguar cuantos de ellos son pares y cuantos impares, las frmulas seran:

biera celdas vacas, fechas, nmeros con decimales, cadenas de texto, etc., las frmulas podran dar como resultado un error o no

ue se desa averiguar la suma de los pares y/o la suma de los impares, las frmulas seran:

biera celdas vacas, fechas, nmeros con decimales, cadenas de texto, etc., las frmulas podran dar como resultado un error o no
e la frmula por el nmero que se desee; pero hay que tener en cuenta que, debido a la precisin numrica de Excel (15 dgitos),

os es posible averiguar hasta el Fibonacci 139 (29 dgitos). En este libro de ejemplo hay un ejemplo de la funcin, junto con algu

ndes, sirviendo una de ellas para hallar nmeros de la serie Fibonacci ms all del 139 (en las pruebas he llegado hasta el 9999 de

pertenece a la serie Fibonacci y FALSO en caso contrario. Hay que tener en cuenta que, debido a la precisin numrica de Excel,
5))/2)^FILA(INDIRECTO("2:73")))-(-((1+RAIZ(5))/2)^-FILA(INDIRECTO("2:73"))))/RAIZ(5);0);"0")))}

e, con las letras ABAACABBBAAACCAAAABCBBAAAAAACA (una letra en cada celda), y se necesita contar la cantidad de

R.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A"));SI(Serie="A";FILA(Serie)-CONTAR.SI(DE

SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A"));SI(Serie="A";FILA(Serie)-CONTAR.SI(DESR

estadstica, como por ejemplo MAX MIN.

evolver los datos correspondientes a dicho nmero.

da una de las rachas. Por ejemplo, para listar el nmero de repeticiones correspondientes a cada racha con al menos dos aes la fr

ESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A"));SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(

uego copiarla y pegarla hacia abajo. Cuando no queden rachas por mostrar comenzar a aparecer el error #NUM!

ms larga de las que aparecen en esta pgina, y a mi juicio es tambin una de las ms complicadas, si no la que ms.

ores a la 2007 puesto que superan (la ltima, ampliamente) el lmite de siete niveles de anidamiento que admiten dichas versiones

acha que tiene ms nmeros positivos y ms negativos en el rango con nombre Serie. La frmula para averiguar la racha con m

INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));">0"));SI(Serie>0;FILA(Serie)-CONTAR.SI(DESREF(INDICE(S

INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"<0"));SI(Serie<0;FILA(Serie)-CONTAR.SI(DESREF(INDICE(S

las rachas de nmeros mayores o menores a uno dado. Lo nico que habra que hacer es sustituir ">0" y "<0" por el nmero que
nteriores a la 2007. En este enlace hay un libro (versin Excel 2003) con ambas frmulas trabajando.

una lista de los mismos


ositivo situado en A1:
ERO(A1/2))))=A1)))}

mula en la fila 1 de cualquier columna:


O("1:"&ENTERO($A$1/2))))=$A$1)*FILA(INDIRECTO("1:"&ENTERO($A$1/2))));FILA())}
el resultado de la primera frmula). Si se sustituye FILA() por un nmero entero, la frmula devolver el divisor que ocupe ese n

unque lgicamente lo es.

positivo situado en A1:


RO(A1/2))))=A1)*FILA(INDIRECTO("1:"&ENTERO(A1/2))))}

unque lgicamente lo es.

CTO("1:"&ENTERO(A1/2))))=A1)*FILA(INDIRECTO("1:"&ENTERO(A1/2))))-A1)+2;"Defectivo";"Perfecto";"Abundante")}

l 131.073. En Excel 2007 y 2010 es el 2.097.153, pero los clculos necesarios para nmeros tan grandes pueden llevar bastante t

anteriores hasta el mximo del tipo de datos Currency de VBA (922.337.203.685.477)

0 en Excel 2003 y hasta el 209.715.200 a partir de Excel 2007, pero hay que tener en cuenta que los clculos para nmeros tan g

vo situado en A1 es:

))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS((A1/100)/2;0)))-1)*100)=A1)*(COLUMNA(INDIRECTO("a:cv"))+(FILA(

RECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS(($A$1/100)/2;0)))-1)*100)=$A$1)*(COLUMNA(INDIREC
or que ocupe esa posicin en la lista de divisores ordenada de mayor a menor. Si el nmero excediese la cantidad de divisores, la

DIRECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS((A1/100)/2;0)))-1)*100)=A1)*(COLUMNA(INDIRECTO
el resultado correcto si el nmero a procesar fuese inferior al 101.
mbrearchivo"))-1)

1);"\";"*";LARGO(CELDA("nombrearchivo";A1))-LARGO(SUSTITUIR(CELDA("nombrearchivo";A1);"\";"")));ENCONTRA

>0;SIFECHA(A1;HOY();"ym")&" "&ELEGIR(MIN(SIFECHA(A1;HOY();"ym")+1;3);"";"mes ";"meses ");"")&SI(SIFECHA(

eros de das que figuran en los informes de vida laboral de la Seguridad Social espaola). Si el numero de das a convertir est en

ECHA(--"1-1-1900";A1+2;"ym")>0;SIFECHA(--"1-1-1900";A1+2;"ym")&" "&ELEGIR(MIN(SIFECHA(--"1-1-1900";A1+2;"

nte de Lotus 1-2-3, que errneamente consideraba que el ao 1900 fue bisiesto cuando en realidad no lo fue.
, se puede usar la frmula:

y que se necesita una lista en la que se hayan eliminado los duplicados, se podra usar:

error #NUM!

(). Por ejemplo, para empezar en la fila 5:

Lista;0));"");FILA()))}
Lista;0));"");FILA()-4))}

una lista ordenada de mayor a menor de los valores nicos (sin repeticiones), la frmula sera:

sta de elementos nicos.

ase de la fila 3 sera FILA()-2)

na de ellas (los dos dieces el primer puesto, los dos nueves el segundo, etc.), la frmula sera:

s nmeros faltantes, comenzaran a aparecer ceros.


uno o ms nmeros de la serie estn repetidos.

ro inicial es muy grande, por ejemplo 10010003456.

a versin 2007), as que en este caso y similares habra que usar:

0));FILA(INDIRECTO(MIN(Lista)-MIN(Lista)+1&":"&MAX(Lista)-MIN(Lista)+1));"");FILA())}

eros enteros negativos y positivos. El inconveniente es que es ms compleja que la primera.

un punto de vista matemtico) para averiguar cual es el que falta. Por ejemplo, si en la columna A se encuentra la serie de nmer
s negativos), se puede usar:
Datos;;COLUMNA(Datos)-CELDA("columna";Datos);;1);111111));0))}

o es posible porque las frmulas necesarias superaran el lmite de siete niveles de anidamiento permitidos.

cortarse poco:

Datos)-1;;1);111111));0))}

ESERROR(), lgicamente] como frmula para una validacin de datos en Excel 2003. Por ejemplo, si la celda con la validacin

OLUMNA(Datos)-1;;1);F1));0))))
s importes correspondientes a los ltimos doce meses, se podra usar:

ce que el reclculo tenga un retardo perceptible.

ean siete o menos (hasta Excel 2003). Usando los datos del ejemplo:

para determinar el domingo de Pascua, que se desarroll en el sitio web de Hans W. Herber (http://www.herber.de). La frmula en ingls e

ma del clculo del domingo de Pascua en Excel de forma minuciosa.


ecto trabaja con los datos visibles), pero Laurent Longre descubri hace aos una forma de usar la funcin DESREF que permite

2;;1))>0;B2:B15)))}
SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1));0)))}

ndicin al mismo tiempo. La frmula que devuelve una por una todas las condiciones activas es:

MO.MENOR(SI(FILA(A2:A15)-1=SI(SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15)-MIN(FILA(A2:A15));;1));COINCID

a Excel 2003.

r ltima vez se puede usar la frmula:

ber ningn cero se podra usar:

puede usar:

l del equipo.
AE(A1;LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))+1;1));0)+1-COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;FIL

ultiplicar por 1 el resultado (es decir, sustituir =EXTRAE por =1*EXTRAE)

ndo la funcin HORANUMERO, o la funcin FECHANUMERO para convertirla a fecha.

" (devolver 125,50), pero no con "extraer 125 y 250 de esta cadena" (devolver "125 y 250").

ARGO(A1)));1)))}

s numricos, como mximo, a la derecha del primer nmero que no sea cero. Es decir, la frmula funcionar con, por ejemplo, la

na de las ms "desmesuradas" de las que hay en esta pgina, lo que quizs pueda resultar un poco sorprendente porque, en princip

>"0");0)-LARGO(SUSTITUIR(IZQUIERDA(A1;COINCIDIR(1;ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LAR

le una an ms larga expresin adicional (299 caracteres) para contar los posibles ceros a la izquierda y anteponerlos al resto de d

INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:

INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:

ue ella misma lo averige:


INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:

nico. La frmula est escrita para el supuesto de que los datos estn separados por comas, pero funcionara igual si el separador f
mpuesto de celdas con texto, y suponiendo que dicho rango fuera A1:A10, se podra usar la frmula:

mado Datos (que ha de empezar en la fila 1 y estar constituido por valores), se puede usar la frmula:

TERO(Datos))));FILA());SI(COINCIDIR(Datos;Datos;0)=FILA(Datos);CONTAR.SI(Datos;Datos)-FILA(Datos)/10^MAX(LAR

ms repetido, lo que carece de sentido porque eso mismo se puede conseguir mucho ms fcilmente utilizando =MODA(Datos)

r el elemento que ocupe esa posicin en la jerarqua de repeticiones.

a la tcnica de restarle a cada uno de ellos el resultado de la divisin de su nmero de fila entre 10^nmero de decimales del elem

Datos;Datos;0)=FILA(Datos);CONTAR.SI(Datos;Datos)-FILA(Datos)/100);0))}

odran producirse resultados incorrectos.

ms elementos nicos en el rango Datos, comenzarn a devolver el error #NUM!


e utilizar la nueva funcin MODA.VARIOS para devolver la lista de elementos "empatados" (si los hay) en el primer puesto por e
;0));FILA())}

ero de apariciones, comenzar a aparecer el error #REF!

disponen de la funcin MODA.VARIOS):


ECTO("1:"&LARGO(A1)))+1;1);0))+1;1)}
nsiderara como texto a pesar de tener un nmero.

91))=LARGO(A1)

<91))+(CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))=209))=LARGO(A1)

))<91))=6;LARGO(A1)=6)

1))<91)+(CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))=209)))=6;LARGO(A1)=6)
para averiguar el dgito de control de la entidad + la sucursal (8 dgitos en total) sera:

RAE(12345678910;11-RESIDUO(SUMA(EXTRAE(C1;FILA(INDIRECTO("1:10"));1)*(EXTRAE(0&137498625;FILA(INDI

a frmula sera:
)+1));11);1)&EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(C1;FILA(INDIRECTO("1:10"));1)*(EXTRAE(0&1374

erdan los ceros que pueda haber a la izquierda. Otra posibilidad es anteponer un apstrofo ' a los cdigos, por ejemplo '0123

+ los dos dgitos de control + los diez dgitos de la cuenta), sin espacios ni otros signos (como p.ej. guiones), la frmula para aver

IZQUIERDA(A1;4)&" "&EXTRAE(A1;5;4)&" "&EXTRAE(A1;9;4)&" "&EXTRAE(A1;13;4)&" "&EXTRAE(A1;17;4)

ontrol IBAN.

r lo que he decidido preparar una pequea explicacin aqu

n siete dgitos. La frmula para averiguar el dgito de control del NIE situado en A1 sera:
)+1-(FILA(INDIRECTO("1:12"))>6)*6));11);1)}

+1-(FILA(INDIRECTO("1:12"))>6)*6)),11),1)}

chos nmeros:

IRECTO("1:7"));1);1)));10);1)

:10"))+1-(FILA(INDIRECTO("1:10"))>6)*6));11);1)}

:10"))+1-(FILA(INDIRECTO("1:10"))>6)*6)),11),1)}

"));1)*RESIDUO(212121212;FILA(INDIRECTO("1:9"));1)-9;RESIDUO(A1;FILA(INDIRECTO("1:9"));1)*RESIDUO(21212

")),1)*RESIDUO(212121212,FILA(INDIRECTO("1:9")),1)-9,RESIDUO(A1,FILA(INDIRECTO("1:9")),1)*RESIDUO(212121

el ejemplo planteado aqu.


EXTRAE(A1;FILA(INDIRECTO("1:10"));1)*(EXTRAE(1212121212;FILA(INDIRECTO("1:10"));1))>9)*1);10);1)

(EXTRAE(A1,FILA(INDIRECTO("1:10")),1)*(EXTRAE(1212121212,FILA(INDIRECTO("1:10")),1))>9)*1),10),1)

ustituir SUMAPRODUCTO por SUMA e introducirlas como frmulas matriciales.

der ceros por la izquierda, si los hay.

a en el rango D1:D6
TO(FECHA(AO(HOY()),MES(HOY()),1)&":"&FECHA(AO(HOY()),MES(HOY())+1,1)-1))),3)}

sta la fecha actual, la frmula sera:

Por ejemplo, usando la funcin FECHA para el 31/12/2007, la frmula anterior quedara:

biera una serie de cantidades y se deseara obtener la suma que corresponde a quienes han nacido en los 10 aos anteriores a la fe
lumna deseada.
mato Condicional:

nmero tan grande podra llevar bastante tiempo

A1)+1;" no";" s")&" es capica."}


TUIR(A2;" ";""))-FILA(INDIRECTO("1:"&ENTERO(LARGO(SUSTITUIR(A2;" ";""))/2)))+1;1))}

valuar tan slo la mitad:

""))+1-FILA(INDIRECTO("1:"&LARGO(SUSTITUIR(A1;" ";""))));1)))

a hallar el valor decimal del nmero binario situado en A1:

al), mientras que si la celda est formateada como texto el nmero binario no podr ser mayor de 49 unos (562.949.953.421.311

2^) por la base en la que se encuentre el nmero a convertir.

a hallar el valor binario de un nmero decimal situado en A1:

no seguido de 15 ceros).

como sus limitaciones.

a hallar el valor decimal de un nmero hexadecimal situado en A1:


ros en decimal).

os numricos del sistema decimal. Por ejemplo, para hallar el valor decimal de un nmero en base 15, la frmula sera:

e encuentre la frmula:

dicho rango), es posible sustituir ABS(Datos) por Datos, con lo que se ganar algo de rendimiento.
se usen estas frmulas en un mismo libro o sesin de Excel, puesto que en situaciones reales lo normal ser que sean necesarios

peradas son prcticamente 10%), las frmulas seran:

ECTO("1:9"))*10+FILA()-1)))}

RECTO("10:99"))*10+FILA()-1)))}

DIRECTO("100:999"))*10+FILA()-1)))}

ila 10 se mostraran los valores para el 1, el 2, ... y el 9.

ndientes a los cntimos, habr que tener la precaucin de eliminar los separadores decimales, para lo que habr que sustituir (List
A(INDIRECTO("1:9"))*10+FILA()-1)))}

ILA(INDIRECTO("10:99"))*10+FILA()-1)))}

(FILA(INDIRECTO("100:999"))*10+FILA()-1)))}

para el clculo de la suma de las diferencias entre los logaritmos. As, la frmula para el 2 dgito debe crear 2 matrices de 9 elem

nford segn ms grande vaya siendo la muestra de nmeros:

ntes, pero que para dgitos ms all del primero esta frmula no servira. En este enlace muestro la forma de generar nmeros de

ar como resultado un error o no devolver el resultado correcto.

ar como resultado un error o no devolver el resultado correcto.


umrica de Excel (15 dgitos), el mximo nmero que la frmula devolver correctamente es el 73 de la serie.

lo de la funcin, junto con algunas otras que hacen uso de este tipo de datos (artculo sobre el tema).

bas he llegado hasta el 9999 de la serie).

a precisin numrica de Excel, slo funciona hasta el nmero 73 de la serie (el 806.515.533.049.393):

e necesita contar la cantidad de rachas de A que tengan al menos dos aes, la frmula sera:

;FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A")))>=2;FRECUENCIA(

ILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A")))>=2;FRECUENCIA(SI(

cha con al menos dos aes la frmula sera:

Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A")))>=2;FRECUENCIA(SI(Seri

el error #NUM!

s, si no la que ms.

o que admiten dichas versiones.

para averiguar la racha con ms nmeros positivos es:

NTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));">0"))))}

NTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"<0"))))}

">0" y "<0" por el nmero que se necesitase.


lver el divisor que ocupe ese nmero en la lista de divisores (ordenada de forma descendente). Si el nmero excediese la cantida

ivo";"Perfecto";"Abundante")}

randes pueden llevar bastante tiempo.

os clculos para nmeros tan grandes pueden requerir muchsimo tiempo y, adems, que es posible que aparezca el error "Excel

INDIRECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS((A1/100)/2;0)))-1)*100))}

A$1)*(COLUMNA(INDIRECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS(($A$1/100)/2;0)))-1)*100);FILA()
ese la cantidad de divisores, la frmula devolver 0. Si se desease la lista de divisores ordenada de menor a mayor lo nico que h

A1)*(COLUMNA(INDIRECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS((A1/100)/2;0)))-1)*100))-A1)+2;"De
);"\";"")));ENCONTRAR("*";SUSTITUIR(CELDA("nombrearchivo";A1);"\";"*";LARGO(CELDA("nombrearchivo";A1))-LA

s ");"")&SI(SIFECHA(A1;HOY();"md")>0;SIFECHA(A1;HOY();"md")&" "&ELEGIR(MIN(SIFECHA(A1;HOY();"md")+1;3

e das a convertir est en A1 la frmula sera:

A(--"1-1-1900";A1+2;"ym")+1;3);"";"mes ";"meses ");"")&SI(SIFECHA(--"1-1-1900";A1+2;"md")>0;SIFECHA(--"1-1-1900";


uentra la serie de nmeros (y slo la serie) sin repeticiones, la frmula sera:
celda con la validacin fuese F1, la frmula sera:
de). La frmula en ingls es:
n DESREF que permite trabajar tan slo con las filas visibles en cada momento en el rango filtrado.
A2:A15));;1));COINCIDIR(A2:A15;A2:A15;0));FILA(A2:A15));FILA(INDIRECTO("1:"&FILAS(A2:A15))));1)))}
RO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1));0)+1)}

nar con, por ejemplo, la cadena "xxx0000000000000abc123de45678fg901hi2345jk" (devolver 00000000000001234567890123

dente porque, en principio, la tarea no parece muy complicada, pero en realidad para una sola frmula s lo es:

NDIRECTO("1:"&LARGO(A1)));1))*(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)<>"0");0));"0";"")))&SUMA(

nteponerlos al resto de dgitos para evitar que se pierdan. Por lo tanto, si lo que se necesita es el valor numrico de los caracteres

FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))))-1))}

FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))))-1))/10^CONTAR(1*EXTR

FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))))-1))/10^CONTAR(1*EXTR

a igual si el separador fuese otro, aunque lgicamente habra que sustituir las comas por el separador que fuese:
A(Datos)/10^MAX(LARGO(Datos-ENTERO(Datos))));0))}

izando =MODA(Datos), si bien hay que precisar que en las versiones de Excel que no disponen de la funcin MODA.VARIOS,

ro de decimales del elemento qu ms decimales tenga+2. Esto podra tener como consecuencia que la frmula no trabajase adec
en el primer puesto por el nmero de apariciones. La frmula sera:
137498625;FILA(INDIRECTO("1:10"));1)+1));11);1)}

;1)*(EXTRAE(0&137498625;FILA(INDIRECTO("1:10"));1)+1));11);1)&" "&C1}

por ejemplo '0123

es), la frmula para averiguar los dgitos de control IBAN sera:

XTRAE(A1;17;4)
));1)*RESIDUO(212121212;FILA(INDIRECTO("1:9"));1)));10)}

),1)*RESIDUO(212121212,FILA(INDIRECTO("1:9")),1))),10)}
>9)*1);10);1)

>9)*1),10),1)
0 aos anteriores a la fecha actual, la frmula sera:
s (562.949.953.421.311 en decimal)
frmula sera:

er que sean necesarios muchsimos clculos.

habr que sustituir (Lista) por (Lista*100), de forma que las frmulas seran en este caso:
ear 2 matrices de 9 elementos, la frmula para el 3er dgito 2 matrices de 90 elementos, y la frmula para el 4 dgito 2 matrices d

de generar nmeros de 5 dgitos de longitud, todos ellos satisfaciendo la ley de Benford.


)))>=2;FRECUENCIA(SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(

>=2;FRECUENCIA(SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Se

FRECUENCIA(SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))
mero excediese la cantidad de divisores, la frmula devolver 0.

parezca el error "Excel se ha quedado sin recursos" dependiendo del nmero que se est intentando procesar y de la memoria de

)/2;0)))-1)*100);FILA())}
r a mayor lo nico que habra que hacer es sustituir K.ESIMO.MAYOR por K.ESIMO.MENOR.

)))-1)*100))-A1)+2;"Defectivo";"Perfecto";"Abundante")}
mbrearchivo";A1))-LARGO(SUSTITUIR(CELDA("nombrearchivo";A1);"\";""))))+1;32);EXTRAE(CELDA("nombrearchivo";

A(A1;HOY();"md")+1;3);"";"da ";"das ");"")

IFECHA(--"1-1-1900";A1+2;"md")&" "&ELEGIR(MIN(SIFECHA(--"1-1-1900";A1+2;"md")+1;3);"";"da ";"das ");"")


0000000123456789012345), pero no lo hara con "ab1234cd5678efg9012hi345jk6789" (devolvera 123456789012346000). Esto

);0));"0";"")))&SUMA(EXTRAE(A1;K.ESIMO.MAYOR(ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A

mrico de los caracteres numricos de la cadena (lo que, lgicamente, implica despreciar los ceros que pudiera haber a la izquierd

/10^CONTAR(1*EXTRAE(DERECHA(A1;LARGO(A1)-ENCONTRAR(",";A1));FILA(INDIRECTO("1:"&LARGO(DEREC

/10^CONTAR(1*EXTRAE(DERECHA(A1;LARGO(A1)-ENCONTRAR(EXTRAE(1/2;2;1);A1));FILA(INDIRECTO("1:"&LA
cin MODA.VARIOS, la frmula propuesta representa un modo de conseguir que vayan aparecido todos los elementos "empata

rmula no trabajase adecuadamente si uno o varios de los nmeros que debe procesar tuviesen muchos decimales y/o si uno o var
el 4 dgito 2 matrices de 900 elementos.
IRECTO("1:"&FILAS(Serie))));"A"));SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO

ECTO("1:"&FILAS(Serie))));"A"));SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("

O("1:"&FILAS(Serie))));"A"));SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&
esar y de la memoria de que disponga la computadora.
LDA("nombrearchivo";A1);ENCONTRAR("]";CELDA("nombrearchivo";A1))+1;32))

"da ";"das ");"")


56789012346000). Esto es debido a la precisin nmerica de Excel, que es de 15 dgitos.

ECTO("1:"&LARGO(A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1

diera haber a la izquierda), es posible prescindir de esa parte de la frmula (hasta el & de "&SUMA" incluido), con lo que adqui

"1:"&LARGO(DERECHA(A1;LARGO(A1)-ENCONTRAR(",";A1)))));1))}

A(INDIRECTO("1:"&LARGO(DERECHA(A1;LARGO(A1)-ENCONTRAR(EXTRAE(1/2;2;1);A1)))));1))}
s los elementos "empatados" en la primera posicin de la clasificacion por su cantidad de apariciones, si es que hay ms de uno.

cimales y/o si uno o varios de los nmeros fueran muy grandes.


;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A"))))))}

;;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A")))))}

LA(INDIRECTO("1:"&FILAS(Serie))));"A"))));K.ESIMO.MENOR(SI(SI(FRECUENCIA(SI(Serie="A";FILA(Serie)-CONTA
NTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:"&CONTAR(1*EXTRA

uido), con lo que adquiere un tamao ms manejable, aunque sigue sin poder ser utilizada en las versiones anteriores a Excel 20
s que hay ms de uno.
";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A"));SI(Serie="A";FILA(
"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))))-1))}

es anteriores a Excel 2007 dado que mantiene intacta su estructura de anidamientos:


"));SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A")))>=2;
AS(Serie))));"A")))>=2;FRECUENCIA(SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECT
e;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A"));SI(Serie="A";FILA(Serie)-CONTAR.SI(DESREF(INDICE(Serie;1);;;FI
F(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"A"))));FILA(INDIRECTO("1:"&SUMA(SIGNO(SI(Serie="A
A(SIGNO(SI(Serie="A";FILA(Serie)))))));FILA()))}
ao 2017 la semana comienza en Mon (1-domingo;2-lunes)
mes 1

January 2017 February 2017


Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed
26 27 28 29 30 31 1 30 31 1
2 3 4 5 6 7 8 6 7 8
9 10 11 12 13 14 15 13 14 15
16 17 18 19 20 21 22 20 21 22
23 24 25 26 27 28 29 27 28 1
30 31 1 2 3 4 5 6 7 8

March 2017 April 2017


Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed
27 28 1 2 3 4 5 27 28 29
6 7 8 9 10 11 12 3 4 5
13 14 15 16 17 18 19 10 11 12
20 21 22 23 24 25 26 17 18 19
27 28 29 30 31 1 2 24 25 26
3 4 5 6 7 8 9 1 2 3
February 2017
Thu Fri Sat Sun
2 3 4 5
9 10 11 12
16 17 18 19
23 24 25 26
2 3 4 5
9 10 11 12

April 2017
Thu Fri Sat Sun
30 31 1 2
6 7 8 9
13 14 15 16
20 21 22 23
27 28 29 30
4 5 6 7

You might also like