Академический Документы
Профессиональный Документы
Культура Документы
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)}
=SUMAPRODUCTO(1/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)
Nota: el rango no puede tener ni celdas vacas, ni textos, ni valores lgicos. Si hubiera fechas, la frmula las consider
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
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
{=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
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)))}
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)))}
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)))}
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)}
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.
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)}
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
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.
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
{=INDICE(C1:C9;COINCIDIR("202";A1:A9&B1:B9;0))}
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)
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)}
{=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
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);"")))}
Para obtener la posicin del primer nmero o el nmero en s, bastara con sustituir VERDADERO por FALSO.
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
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
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(
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
Nota: no dispongo de ejemplos reales de Cdulas del Ecuador para comprobar el correcto funcionamiento de la frmu
.=DERECHA(10-RESIDUO(SUMAPRODUCTO(DERECHA(EXTRAE(A1,FILA(INDIRECTO("1:10")),1)*(EXTR
=10-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:12"));1)*(EXTRAE(131313131313;FILA
=10-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:12"));1) *(1+((RESIDUO(FILA(INDIRE
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
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
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
=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)
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;""))}
{=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
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)
NOTA: En este enlace hay una pequea monografa sobre frmulas capaces de procesar nmeros ms grandes que la
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
Nota: El mximo de dgitos que puede tener el nmero es 15, es decir los mismos que la precisin numrica de Excel
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(
Nota: en principio da igual si las letras estn en maysculas o minsculas, pero lo que no puede haber son signos de p
{=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
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
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
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
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
{=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
Nota: se entiende que en el rango A1:A10 hay slo nmeros enteros. Si hubiera celdas vacas, fechas, nmeros con de
Nota: se entiende que en el rango A1:A10 hay slo nmeros enteros. Si hubiera celdas vacas, fechas, nmeros con de
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+
{=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:
{=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
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.
La frmula no considera el entero que procesa como divisor de s mismo, aunque lgicamente lo es.
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
{=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)
"]";CELDA("nombrearchivo";A1))+1;32));EXTRAE(SUSTITUIR(CELDA("nombrearchivo";A1);"\";"*";LARGO(CELDA("no
a convertir en aos, meses y das un nmero de das determinados (valgan como ejemplo los nmeros de das que figuran en los
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:
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))}
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)
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.
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
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
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.
>"&FECHA(2009;1;31))
por K.ESIMO.MENOR
o A1:A100.
n valor dado
hallar el mnimo a partir de un nmero determinado (por ejemplo, excluyendo los ceros y nmeros negativos), se puede usar:
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)
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
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
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))}
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
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))}
condicin activa en el filtro, pero en la versiones siguientes es posible tener activa ms de una condicin al mismo tiempo. La f
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";""))))
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)))}
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(
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
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:
mula sera:
RGO(A1:A10)));0))}
os textos fueran los ms largos del rango. La frmula para dicho formato condicional sera:
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;
AE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)));0);1)}
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
&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
"&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
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
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
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
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(
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
1:12"));1)*(EXTRAE(131313131313;FILA(INDIRECTO("1:12"));1)));10)
1:12"));1) *(1+((RESIDUO(FILA(INDIRECTO("1:12"));2)=0)*2)));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
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:
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.
que se necesita subtotalizar por tramos de edad de 10 aos desde dichas fechas de nacimiento hasta la fecha actual, la frmula se
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)
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))))}
nota ms alta:
AR.SI(Notas;MAX(Notas))))))}
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:
;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]
... sbados.
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
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
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))}
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
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))
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)))))}
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
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.
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
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
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!
Lista;0));"");FILA()))}
Lista;0));"");FILA()-4))}
una lista ordenada de mayor a menor de los valores nicos (sin repeticiones), la frmula sera:
na de ellas (los dos dieces el primer puesto, los dos nueves el segundo, etc.), la frmula sera:
0));FILA(INDIRECTO(MIN(Lista)-MIN(Lista)+1&":"&MAX(Lista)-MIN(Lista)+1));"");FILA())}
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:
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
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.
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
" (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:
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)
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))}
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
ontrol IBAN.
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
(EXTRAE(A1,FILA(INDIRECTO("1:10")),1)*(EXTRAE(1212121212,FILA(INDIRECTO("1:10")),1))>9)*1),10),1)
a en el rango D1:D6
TO(FECHA(AO(HOY()),MES(HOY()),1)&":"&FECHA(AO(HOY()),MES(HOY())+1,1)-1))),3)}
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:
""))+1-FILA(INDIRECTO("1:"&LARGO(SUSTITUIR(A1;" ";""))));1)))
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
no seguido de 15 ceros).
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
ECTO("1:9"))*10+FILA()-1)))}
RECTO("10:99"))*10+FILA()-1)))}
DIRECTO("100:999"))*10+FILA()-1)))}
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
ntes, pero que para dgitos ms all del primero esta frmula no servira. En este enlace muestro la forma de generar nmeros de
lo de la funcin, junto con algunas otras que hacen uso de este tipo de datos (artculo sobre el tema).
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(
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.
NTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));">0"))))}
NTAR.SI(DESREF(INDICE(Serie;1);;;FILA(INDIRECTO("1:"&FILAS(Serie))));"<0"))))}
ivo";"Perfecto";"Abundante")}
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
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}
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:
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
>=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";
);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))
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.
;;;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))}
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