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

c 


?
" ?
?
?
Notas: ?
{ Dependiendo de la configuración regional del equipo, los puntos y comas de estas
fórmulas podrían tener que ser sustituidos por comas.??
{ Bastantes fórmulas aparecen encerradas entre llaves { }. Esto significa que son
fórmulas matriciales, y que para introducirlas es necesario pulsar
Mayúsculas+Control+Entrada al mismo tiempo. Las llaves propiamente dichas no hay
que teclearlas: si todo va bien, deberían aparecer en la barra de fórmulas después de
introducirla como matricial.??
{ La función SUMAPRODUCTO que se usa en algunas fórmulas no puede utilizarse con
columnas completas (pero sí con filas completas) y, además, conviene ajustar al
máximo los rangos que se le pasan como argumentos a esta función porque evalúa
todas las celdas de dichos rangos, estén o no vacías. Esta misma recomendación es
válida también para las fórmulas matriciales.??
{ Algunas fórmulas son bastante complejas de forma que, a pesar de que las he probado
varias veces antes de ponerlas aquí, pudiera darse el caso de que no funcionaran bien
en todas las situaciones. Si encuentras alguno de estos casos, puedes notificármelo a
la siguiente dirección de correo electrónico: excel ARROBA jrgc.es, e intentaré
arreglarlo.??
{ En esta página están todas las fórmulas sin un orden en concreto. Hay un índice por
temas © ?©©?© ©.??
{ En Excel 2010 Microsoft ha cambiado el nombre de algunas funciones. Una tabla con
los cambios más notables puede consultarse .??
??
?
" 
   
· å?
üEXTRAE(CELDA("nombrearchivo");ENCONTRAR("·";CELDA("nombrearchivo"))+1;ENCONTR
AR("å";CELDA("nombrearchivo"))-ENCONTRAR("·";CELDA("nombrearchivo"))-1)?
Nota: para que esto funcione es necesario haber guardado el libro al menos una vez.?
?
" 
   
· å?
üEXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("å";CELDA("nombrearchivo";A1))+1;32)?
??
Si el libro tiene una sola hoja y además libro y hoja se llaman igual, es necesario complicar
bastante la fórmula: · å?
??
üSI(ESERROR(EXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("å";CELDA("nombrearchi
vo";A1))+1;32));EXTRAE(SUSTITUIR(CELDA("nombrearchivo";A1);"\";"*";LARGO(CELDA("no
mbrearchivo";A1))-
LARGO(SUSTITUIR(CELDA("nombrearchivo";A1);"\";"")));ENCONTRAR("*";SUSTITUIR(CEL D
A("nombrearchivo";A1);"\";"*";LARGO(CELDA("nombrearchivo";A1))-
LARGO(SUSTITUIR(CELDA("nombrearchivo";A1);"\";""))))+1;32);EXTRAE(CELDA("nombrearc
hivo";A1);ENCONTRAR("å";CELDA("nombrearchivo";A1))+1;32))?
?
   

        

· å?
üSIFECHA(A1;HOY();"y") & " años " & SIFECHA(A1;HOY();"ym") & " meses " &
SIFECHA(A1;HOY();"md") & " días" ?
(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 días", se
puede usar una fórmula más compleja:?
üSI(SIFECHA(A1;HOY();"y")>0;SIFECHA(A 1;HOY();"y")&"
"&ELEGIR(MIN(SIFECHA(A1;HOY();"y")+1;3);"";"año ";"años
");"")&SI(SIFECHA(A1;HOY();"ym")>0;SIFECHA(A1;HOY();"ym")&"
"&ELEGIR(MIN(SIFECHA(A1;HOY();"ym")+1;3);"";"mes ";"meses
");"")&SI(SIFECHA(A1;HOY();"md")>0;SIFECHA(A1;HOY();"md")&"
"&ELEGIR(MIN(SIFECHA(A1;HOY();"md")+1;3);"";"día ";"días ");"") ?
?
??

 
  
 

· å?
{üSUMA((RESIDUO(FILA(A1:A 100);2)ü1)*A1:A100)}?
ó?
üSUMAPRODUCTO((RESIDUO(FILA(A1:A100);2)ü1)*A1:A100)?
?

 
 
 

· å?
{üSUMA((RESIDUO(FILA(A1:A100);2)ü0)*A1:A100)}?
ó?
üSUMAPRODUCTO((RESIDUO(FILA(A1:A100);2)ü0)*A1:A100)?
?

 
 
 
  
· å?
{üSUMA((RESIDUO(COLUMNA(A1:D1);2)ü1)*(A1:D1))} ?
ó?
üSUMAPRODUCTO((RESIDUO(COLUMNA(A1:G1);2)ü1)*A1:G1) ?
?

 
 

 c 
· å?
{üSUMA((RESIDUO(COLUMNA(A1:D1);2)ü0)*(A1:D1))} ?
ó?
üSUMAPRODUCTO((RESIDUO(COLUMNA(A1:G1);2)ü0)*A1:G1) ?
??
Nota 1: estas fórmulas sirven también, lógicamente, para sumar cada n filas o columnas. Por
ejemplo, para sumar cada 5 filas de una columna:?
{üSUMA((RESIDUO(FILA(A1:A100);5)ü0)*A1:A100)}?
??
Nota 2: en Excel 2010 hay que sustituir RESIDUO por RESTO.?
??
?
     
 
 
· å?
Si en el rango no hay celdas vacías, 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 vacías:?
{üSUMA((A1:A10<>"")/CONTAR.SI(A1:A10;A1:A10&""))}?
ó?
üSUMAPRODUCTO((A1:A10<>"")/CONTAR.SI(A1:A10;A1:A10&""))?
(lógicamente, estas dos funciones se pueden usar también si no hay celdas vacías)?
??
y si sólo hubiera números en las celdas se podría usar:?
üSUMA(SIGNO(FRECUENCIA(A1:A10;A1:A10))) ?
que sirve tanto si hay celdas vacías como si no las hay.?
??
[
   

· å?
Si se necesita saber la suma de los valores únicos de un rango con nombre llamado Lista (es
decir, sumando una sola vez cada valor aunque esté más de una vez en el rango), se puede
usar la fórmula:?
{üSUMA(Lista/CONTAR.SI(Lista;Lista))}?
Lo mismo hace;?
üSUMAPRODUCTO(Lista/CONTAR.SI(Lista;Lista))?
??
Nota: el rango no puede tener ni celdas vacías, ni textos, ni valores lógicos. Si hubiera fechas,
la fórmula las consideraría números.?
??
??
    
      
   · å?
Suponiendo que en un rango con nombre llamado 'Lista' (de una sola columna ysin celdas
vacías) hay un conjunto de datos uno o más de los cuales pueden estar repetidos, y que se
necesita una lista en la que se hayan eliminado los duplicados, se podría usar:?
{üINDICE(Lista;K.ESIMO.MENOR(SI(COINCIDIR(Lista;Lista;0)üFILA(INDIRECTO("1: "&CONT
ARA(Lista)));COINCIDIR(Lista;Lista;0);"");FILA()))} ?
??
La fórmula anterior habría que ponerla en la fila 1 de una columna cualquiera, y copiarla hacia
abajo. Cuando no quedaran más datos que mostrar, comenzaría a aparecer el error #¡NUM!?
??
Si la fórmula matricial hubiera de estar situada en una fila distinta a la 1, habría que restar el
número de dicha fila menos uno en la segunda vez que aparece la función FILA(). Por ejemplo,
para empezar en la fila 5:?
{üINDICE(Lista;K.ESIMO.MENOR(SI(COINCIDIR(Lista; Lista;0)üFILA(INDIRECTO("1:"&CONT
ARA(Lista)));COINCIDIR(Lista;Lista;0);"");FILA() X ))}?
??
Si el rango con nombre 'Lista' estuviera dispuesto en una fila en lugar de en una columna, las
fórmulas serían:?
{üINDICE(Lista;K.ESIMO.MENOR(SI(TRANSPONER(COINCIDIR(Li sta;Lista;0))üFILA(INDIRE
CTO("1:"&CONTARA(Lista)));TRANSPONER(COINCIDIR(Lista;Lista;0));"");FILA()))} ?
??
e?
??
{üINDICE(Lista;K.ESIMO.MENOR(SI(TRANSPONER(COINCIDIR(Lista;Lista;0))üFILA(INDIRE
CTO("1:"&CONTARA(Lista)));TRANSPONER(COINCIDIR(Lista;Lista;0));"");F ILA()X ))}?
?
??
º 
      
  · å?
Suponiendo que en un rango con nombre llamado "Lista" (de una sola columna y sin celdas
vacías) hay un conjunto de valores que pueden estar repetidos, y que se necesita una lista
ordenada de mayor a menor de los valores únicos (sin repeticiones), la fórmula sería:?
{üSI(K.ESIMO.MAYOR(SI(CONTAR.SI(DESREF(Lista;;;FILA( INDIRECTO("1:"&CONTAR(Lista
))));Lista)ü1;Lista;MIN(Lista)-
1);FILA())>üMIN(Lista);K.ESIMO.MAYOR(SI(CONTAR.SI(DESREF(Lista;;;FILA(INDIRECTO("1
:"&CONTAR(Lista))));Lista)ü1;Lista;MIN(Lista)-1);FILA());"Valor repetido")}?
??
Si se deseara que la lista estuviera ordenada de menor a mayor, la fórmula sería:?
{üSI(K.ESIMO.MENOR(SI(CONTAR.SI(DESREF(Lista;;;FILA(INDIRECTO("1:"&CONTAR(Lista
))));Lista)ü1;Lista;MAX(Lista)+1);FILA())<üMAX(Lista);K.ESIMO.MENOR(SI(CONTAR.SI(DESR
EF(Lista;;;FILA(INDIRECTO("1:"&CONTAR(Lista)))); Lista)ü1;Lista;MAX(Lista)+1);FILA());"Valor
repetido")}?
??
Nota: las listas generadas por ambas fórmulas también pueden servir si lo que se necesita es
una jerarquización de los elementos únicos del rango.?
??
??
ñ 
  · å?
Si, por ejemplo, se tiene un rango con nombre llamado Notas, en el que las notas están
repetidas (p.ej., 2 dieces, 2 nueves, etc.) y se desea obtener el puesto único de cada una de
ellas (los dos dieces el primer puesto, los dos nueves el segundo, etc.), la fórmula sería:?
??
{üCOINCIDIR(A2;K.ESIMO.MAYOR(SI(FRECUENCIA(Notas;Notas)<>0;Notas);FILA(INDIREC
TO("1:"&SUMA(1/CONTAR.SI(Notas;Notas)))));0)} ?
??
Sustituyendo K.ESIMO.MAYOR por K.ESIMO.MENOR es posible obtener los puestos únicos,
pero otorgándole a la nota más baja el puesto más alto y así con todas las demás.?
??
??
??
 
  
 
     · å?
Si se quiere un listado de los números que faltan en una serie de números enteros    
llamada Lista, se podría usar la fórmula:?
??
{üK.ESIMO.MAYOR(SI(CONTAR.SI(Lista;FILA(INDIRECTO(MIN(Lista)&":"&MAX(Lista))))ü0;FI
LA(INDIRECTO(MIN(Lista)&":"&MAX(Lista)));0);FILA())} ?
??
La fórmula habría que ponerla en la fila 1 de una columna vacía y copiarla hacia abajo. Los
números faltantes irían apareciendo de mayor a menor, y cuando no quedaran más números
faltantes, comenzarían a aparecer ceros.?
??
Si se necesitara que los números faltantes fueran apareciendo ordenados de menor a mayor,
se podría usar la fórmula:?
??
{üK.ESIMO.MENOR(SI(CONTAR.SI(List a;FILA(INDIRECTO(MIN(Lista)&":"&MAX(Lista))))ü0;FI
LA(INDIRECTO(MIN(Lista)&":"&MAX(Lista)));FALSO);FILA())} ?
??
En este caso, cuando no queden más números faltantes comenzará a mostrarse el error
#!NUM¡?
??
La serie de números no tiene que estar necesariamente ordenada ni de mayor a menor ni a la
inversa, si bien el ejemplo lo está para mayor claridad. Tampoco sucede nada si uno o más
números de la serie están repetidos.?
??
He recibido una consulta que plantea una situación interesante que me ha hecho escribir una
nueva fórmula: se trata de averiguar qué números faltan en una serie cuyo número inicial es
muy grande, por ejemplo 10010003456.?
??
En este caso, las formulas anteriores fallarían porque no pueden procesar números superiores
al máximo de filas de Excel (65536 en la versión 2003), así que en este caso y similares habría
que usar:?
??
{üMIN(Lista)-1+K.ESIMO.MAYOR(SI(ESERROR(COINCIDIR(FILA(INDIRECTO(MIN(Lista) -
MIN(Lista)+1&":"&MAX(Lista)-MIN(Lista)+1));Lista-
MIN(Lista)+1;0));FILA(INDIRECTO(MIN(Lista)-MIN(Lista)+1&":"&MAX(Lista)-
MIN(Lista)+1));"");FILA())}?
??
para que los números faltantes aparecieran ordenados de menor a mayor, y sustituir .MENOR
por .MAYOR si el orden deseado fuera el inverso.?
??
Lógicamente, esta última fórmula puede usarse también si la serie comienza con cualquier
número más bajo. Otra ventaja de esta última fórmula es que puede procesar números enteros
negativos y positivos. El inconveniente es que es más compleja que la primera.?
??
??
??
º 
        
 

· å?
üINDICE(A:A;REDONDEAR(ALEATORIO()*(CONTARA(A:A) -1)+1;0))?
En este caso, los datos estarían en la columna A.?
Los datos deben empezar en la fila 1 y no tener celdas vacías entre medias.?
?
   
 
  
     
· å?
üSUMAPRODUCTO((A1:A25>ü5)*(A1:A25<ü15))?
o, usando la función CONTAR.SI:?
üCONTAR.SI(A1:A25;">ü5")-CONTAR.SI(A1:A25;">15")?
Ambas fórmulas devolverían    cuyo valor estuviera entre 5 y 15 en el
rango A1:A25.?
??
üSUMAPRODUCTO((A1:A25>ü5)*(A1:A25<ü15)*A1:A25)?
o, usando la función CONTAR.SI:?
üSUMAR.SI(A1:A25;">ü5")-SUMAR.SI(A1:A25;">15")?
Ambas fórmulas devolverían 
   cuyo valor estuvieran entre 5 y 15 en el
rango A1:A25?
?
??
   
   
?
üSUMAPRODUCTO((MES(A1:A15)ü1)*(AÑO(A1:A15)ü2009))?
En este caso, se contarían las celdas en el rango A1:A15 cuya fecha fuera del mes de enero
del año 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))?
??
??

     
 

· å?
{ü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 sumarían los 3 valores mayores del rango A1:A50?
Para sumar los 3 valores menores, habría que sustituir K.ESIMO.MAYOR por
K.ESIMO.MENOR?
??
??
??
ñ 
Las cuatro fórmulas siguientes son ejemplos que trabajan con el rango A1:A100.?
     
 

?
{üMIN(SI(A1:A100<>"";FILA(A1:A100)))}?
??
     
 

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

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

?
üBUSCAR(2;1/(A1:A100<>"");A1:A100)?
{üINDICE(A1:A100;MAX(SI(A1:A100<>"";FILA(A1:A100))))}?
??
??
??
??
ñ 
Las cuatro fórmulas siguientes son ejemplos que trabajan con el rango A1:Z1?
 
   
  
 
?
{üMIN(SI(A1:Z1<>"";COLUMNA(A1:Z1)))}?
??
 
   
  
 
?
{üINDICE(A1:Z1;;MIN(SI(A1:Z1<>"";COLUMNA(A1:Z1))))} ?
??
 
   
  
 
?
{üMAX((A1:Z1<>"")*COLUMNA(A1:Z1))}?
??
 
   
  
 
?
üBUSCAR(2;1/(A1:Z1<>"");A1:Z1)?
{üINDICE(A1:Z1;;MAX(SI(A1:Z1<>"";COLUMNA(A1:Z1))))} ?
??
??
?
c
       
     
  
 
?

 © ? ??
Partiendo del ejemplo anterior, si se necesita:?
{ el número 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 número 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 vacías en el rango a evaluar, habría que sustituir las dos
primeras fórmulas por:?
{ para el número 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)}?
?
?
 
  
      
?

 © ? ??
En este ejemplo se necesita saber cuantas veces tienen el mismo valor ambas celdas de la
misma fila. Dos posibilidades para lograrlo:?
{üSUMA((A1:A10üB1:B10)*1)}?
üSUMAPRODUCTO((A1:A10üB1:B10)*1)?
?
Estas mismas fórmulas servirían si la comparación hubiera de hacerse entre dos filas:?
{üSUMA((A1:J1üA2:J2)*1)}?
üSUMAPRODUCTO((A1:J1üA2:J2)*1)?
?
?
       
 
  
  ?
La función MIN devuelve el valor mínimo de un rango, pero si se necesita hallar el mínimo a
partir de un número determinado (por ejemplo, excluyendo los ceros y números negativos), se
puede usar:?
{üMIN(SI(A1:A10>0;A1:A10))}?
?
De igual forma, si se necesita saber el valor máximo a partir de un valor determinado se puede
usar:?
{üMAX(SI(A1:A10<10;A1:A10))}?
En este caso, la fórmula devolvería el valor máximo en A1:A10 excluyendo los valores
superiores a 10.?
??
??
  
 
    
· å?
Si, por ejemplo, se desea averiguar la dirección de la celda en la que se encuentra el número
111111 dentro del rango con nombre Datos, la fórmula sería:?
{üCELDA("direccion";INDICE(Datos;COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;FILA(D
atos)-
CELDA("fila";Datos);0;1;);111111));0);COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;;COL
UMNA(Datos)-CELDA("columna";Datos);;1);111111));0)))}?
??
A partir de Excel 2007 se puede utilizar esta fórmula junto con ESERROR (y NO) como fórmula
para una regla de validación. En Excel 2003 y versiones anteriores esto no es posible porque
las fórmulas necesarias superarían el límite de siete niveles de anidamiento permitidos.?
??
?
c
 
 
  
  

  
     
 ?

 © ? ??
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)}?
?
?

          ?
Suponiendo que en el rango A1:A50 hay una serie de fechas, en B1:B50 unos importes
correspondientes a cada una de dichas fechas, y que se necesitara saber la suma de los
importes correspondientes a los últimos doce meses, se podría usar:?
üSUMAPRODUCTO((A1:A50>üFECHA(AÑO(HOY()) -
1;MES(HOY());1))*(A1:A50<FECHA(AÑO(HOY());MES(HOY());1));B1:B50) ?
Y si se necesitara excluir de la suma los importes correspondientes al mes en curso, la fórmula
sería:?
üSUMAPRODUCTO((A1:A50>üFECHA(AÑO(HOY()) -
1;MES(HOY())+1;1))*(A1:A50<FECHA(AÑO(HOY());MES(HOY());1));B1:B50) ?
?
??
Ñ       
 ?
ver ? ? ?©©
? ??
Nota sobre este ejemplo: la gran cantidad de fórmulas matriciales -cincuenta y tres- que tiene la
única hoja de este libro, junto con el gran número de cálculos necesarios, hace que el recálculo
tenga un retardo perceptible.?
??
??



 
 
       ?

 © ? ??
Si se necesita aplicar un descuento dependiendo del número de unidades compradas o
vendidas, es posible hacerlo anidando SIes, siempre y cuando los tramos del baremo sean
siete o menos. Usando los datos del ejemplo:?
ü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,23)))))))?
Pero si los tramos son más de siete (que es el caso del ejemplo), se puede recurrir a una
fórmula 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)}?
??
??
 
    "

   ?
La siguiente fórmula devuelve la fecha del domingo de Pascua del año especificado en A1. Su
autor es Thomas Jansen. Fue presentada a un concurso para encontrar la fórmula más corta
para determinar el domingo de Pascua, que se desarrolló en el sitio web de Hans W. Herber
(uu©© ©). La fórmula en inglés es:?
üDOLLAR((DAY(MINUTE(A1/38)/2+55)&".4."&A1)/7,)*7-6?
Yo lo único que he hecho ha sido traducirla al Excel en español:?
üMONEDA((DIA(MINUTO(A1/38)/2+55)&"-4-" & A1)/7;)*7-6?
Lógicamente, también es posible sustituir la referencia a la celda A1 por un año. Por ejemplo,
para el año 2008:?
üMONEDA((DIA(MINUTO(2008/38)/2+55)&"-4-" & 2008)/7;)*7-6?
??
Esta otra, más larga, funciona desde el año 1900 hasta 2368:?
üMULTIPLO.INFERIOR(DIA(MINUTO(A1/38)/2+56)&"-5-"&A1;7)-34?
??
La celda en la que se ponga cualquiera de las dos fórmulas ha de tener formato de fecha, dado
que devuelven un número de serie.?
??
 

 
    ?
Para averiguar cual es el próximo año Jacobeo (el día 25 de julio es domingo), se puede usar
la fórmula:?
{üAÑO(HOY())+COINCIDIR(VERDADERO;DIASEM(FECHA(AÑO(HOY())+FILA(INDIRECTO("
1:11"))-1;7;25))ü1;0)-1}?
??
??
 
   
   
  ?
Por ejemplo, en el rango A1:C10 hay una serie de valores, y lo que se necesita es el valor
máximo de la suma de cada conjunto de tres celdas de cada fila. La fórmula sería:?
{üMAX(A1:A10+B1:B10+C1:C10)}?
??
Para saber en qué fila se encuentra el máximo anterior, la fórmula sería:?
{ü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 fórmula devuelve el número de la última fila cuyas celdas suman el
valor máximo.?
??
Las fórmulas para averiguar el valor mínimo 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 fórmulas para el caso de que los datos estuvieran situados de forma horizontal (p.ej.,
A1:J3) serían:?
{ü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 máximo, 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 mínimo. ?
??
??
  
     · å?
Normalmente, las funciones de Excel para resumir o contar datos en base a criterios
trabajarían con la lista completa (a excepción de la función SUBTOTALES, que por defecto
trabaja con los datos visibles), pero Laurent Longre descubrió hace años una forma de usar la
función DESREF que permite trabajar tan sólo con las filas visibles en cada momento en el
rango filtrado. ?
??
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 fórmula sería:?
{üSUMA((B2:B15>50)*(SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15) -
MIN(FILA(A2:A15));;1)))*B2:B15)}?
{ 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 fórmula anterior es sólo otro ejemplo
de esta forma de usar DESREF)?
{ 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 fórmula anterior es sólo otro ejemplo
de esta forma de usar DESREF)?
{ averiguar el número de fila de la primera que cumple la condición activa:?
{üCOINCIDIR(1;SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15) -
MIN(FILA(A2:A15));;1));0)+1}?
{ averiguar el número de fila de la última que cumple la condición 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);"No hay filtro
activo.";INDICE(A2:A15;COINCIDIR(1;SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15
)-MIN(FILA(A2:A15));;1));0)))}?
??
Nota sobre esta última fórmula: hasta Excel 2003 tan sólo podía haber una condición activa en
el filtro, pero en la versiones siguientes es posible tener activa más de una condición al mismo
tiempo. La fórmula para devolver todas las condiciones activas es:?
??
{üSI(SUMA((SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15) -
MIN(FILA(A2:A15));;1))))üFILAS(A2:A15);"No hay filtro
activo.";INDICE(A2:A15;INDICE(K.ESIMO.MEN OR(SI(FILA(A2:A15)-
1üSI(SUBTOTALES(3;DESREF(A2:A15;FILA(A2:A15) -
MIN(FILA(A2:A15));;1));COINCIDIR(A2:A15;A2:A15;0));FILA(A2:A15));FILA(INDIRECTO("1:"&
FILAS(A2:A15))));1)))}?
??
que devolverá la primera condición activa. Para devolver las siguientes, habría que sustituir el
último 1 de la fórmula por el número que se desee.?
??
Esta fórmula trabaja con el supuesto de que hay tan sólo una fila de títulos. Si hubiese más,
habría que sustituir el -1 por dicho número.?
??
Hay disponible ?? ©?©©
 con esta fórmula, que sólo funcionará a partir de la versión
2007 puesto que supera el límite de niveles de anidamiento permitidos hasta Excel 2003.?
??
??
??
c

 

  
    
 ?

 © ? ??
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 la columna B tiene el valor 2. La fórmula sería:?
{üINDIRECTO("C"&COINCIDIR("202";A1:A9&B1:B9;0)) !?
??
o, usando la función INDICE:?
??
{üINDICE(C1:C9;COINCIDIR("202";A1:A9&B1:B9;0))}?
??
??
 
    
  
  ?
La función HALLAR devuelve la posición en que aparece por primera vez un carácter dentro de
una cadena de texto, pero si se necesita saber la posición en que aparece por última vez se
puede usar la fórmula:?
üENCONTRAR(CARACTER(255);SUSTITUIR(A1;"b";CARACTER(255);LARGO(A1) -
LARGO(SUSTITUIR(A1;"b";""))))?
??
En este caso la fórmula devolvería la posición de la última b dentro del texto que está en A1.?
??
CARACTER(255) puede sustituirse por cualquier otro carácter que se sepa que en ningún caso
va a estar en el texto. Por ejemplo, si se supiera con seguridad que no va a haber ningún cero
se podría usar:?
üENCONTRAR("0";SUSTITUIR(A1;"b";"0";LARGO(A1) -LARGO(SUSTITUIR(A1;"b";""))))?
??
??
 
 
   · å?
Si se tiene que extraer un número de una cadena de texto situada en A1 pero la posición del
número no es fija, se puede usar la siguiente fórmula:?
{üEXTRAE(A1;COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A
1)));1));0);LARGO(A1)-COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;LARGO(A1) -
FILA(INDIRECTO("1:"&LARGO(A1)))+1;1));0)+1-
COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO( A1)));1));0)+1)}?
??
La fórmula devolverá el número como cadena de texto. Si se necesitase convertirlo en su valor
para poder operar numéricamente con él, lo único que habría que hacer es multiplicar por 1 el
resultado (es decir, sustituir üEXTRAE por ü1*EXTRAE)?
??
La fórmula sirve también para extraer una fecha o una hora de una cadena de texto. En este
caso sería posible convertir la cadena de texto devuelta por la fórmula a hora usando la función
VALHORA (HORANUMERO en versiones anteriores a la 2010) y la función VALFECHA
(FECHANUMERO en versiones anteriores de Excel) para convertirla a fecha.?
??
Hay que tener en cuenta que tan sólo puede haber un número en la cadena de texto. Es decir,
por ejemplo la fórmula funcionará con la cadena "extraer 125,50 de esta cadena" (devolverá
125,50), pero no con "extraer 125 y 250 de esta cadena" (devolverá "125 y 250").?
??
Si se sabe con seguridad que los números a extraer de las cadenas de texto son enteros (no
tienen decimales), es posible utilizar una fórmula más sencilla:?
{üEXTRAE(A1;COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A
1)));1));0);CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))} ?
??
Nota: en Excel 2010 hay que sustituir EXTRAE por MED.?
??
??
      
 
    · å <--Este
ejemplo sólo funciona en Excel 2007 y 2010?
Una complicación de las fórmulas anteriores sirve para extraer todos los caracteres numéricos
de una cadena de texto, con la limitación de que tan sólo puede haber 14 caracteres
numéricos, como máximo, a la derecha del primer número que no sea cero. Es decir, la fórmula
funcionará con, por ejemplo, la cadena "xxx0000000000000abc123de45678fg901hi2345jk"
(devolverá 0000000000000123456789012345), pero no lo haría con
"ab1234cd5678efg9012hi345jk6789" (devolvería 123456789012346000). Esto es debido a la
precisión númerica de Excel, que es de 15 dígitos.?
??
Esta fórmula sólo funcionará a partir de la versión 2007 ya que supera los siete niveles de
anidamiento permitidos como máximo hasta la versión 2003 (en la 2007 habría que sustituir
MED por EXTRAE), y es posiblemente la más "desmesurada" de las fórmulas que hay en esta
página, lo que puede resultar un poco sorprendente porque, en principio, la tarea no parece
muy complicada, si bien en realidad para una sola fórmula sí lo es.?
??
{üREPETIR("0";COINCIDIR(1;ESNUMERO(1*MED(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)
)*(MED(A1;FILA(INDIRECTO("1:"& LARGO(A1)));1)<>"0");0)-
LARGO(SUSTITUIR(IZQUIERDA(A1;COINCIDIR(1;ESNUMERO(1*MED(A1;FILA(INDIRECTO(
"1:"&LARGO(A1)));1))*(MED(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)<>"0");0));"0";"")))&SU
MA(MED(A1;K.ESIMO.MAYOR(ESNUMERO(1*MED(A1;FILA(INDIRECTO("1:"&LARGO(A1)) );
1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(1*MED(A1;FILA(IN
DIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:"&CONTAR(1*MED(A1;FILA(I
NDIRECTO("1:"&LARGO(A1)));1)))) -1))}?
??
En la fórmula propuesta, a la expresión necesaria para extraer los números (a partir de SUMA),
ya de por sí bastante complicada, hay que anteponerle una larga expresión adicional para
contar los posibles ceros a la izquierda e incorporarlos al resto de dígitos y así evitar que se
pierdan. Por lo tanto, si lo que se necesita es el valor numérico de los caracteres numéricos de
la cadena (lo que, lógicamente, implicaría despreciar los ceros que pudiera haber a la
izquierda), es posible prescindir de esa parte de la fórmula (hasta el & de "&SUMA" incluido),
con lo que adquiere un tamaño más manejable:?
??
{üSUMA(MED(A1;K.ESIMO.MAYOR(ESNUMERO(1*MED(A1;FILA(INDIRECTO("1:"&LARGO(
A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(1*MED(A1;FIL
A(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:"& CONTAR(1*MED(A1;FI
LA(INDIRECTO("1:"&LARGO(A1)));1)))) -1))}?
??
Si se tratara de un número con decimales (por ejemplo extraer el número 987,0654 de la
cadena "a9b8c7,0d6e5f4"), se podría usar la fórmula:?
{üSUMA(MED(A1;K.ESIMO.MAYOR(ESNUMERO(1*MED(A1;FILA(INDI RECTO("1:"&LARGO(
A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(1*MED(A1;FIL
A(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:"&CONTAR(1*MED(A1;FI
LA(INDIRECTO("1:"&LARGO(A1)));1)))) -1))/10^CONTAR(1*MED(DERECHA(A1;LARGO(A1) -
ENCONTRAR(",";A1));FILA(INDIRECTO("1:"&LARGO(DERECHA(A1;LARGO(A1) -
ENCONTRAR(",";A1)))));1))}?
en la que si el separador decimal fuese el punto en vez de la coma habría 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 fórmula, es posible complicarla todavía un poco más para que ella
misma lo averigüe:?
{üSUMA(MED(A1;K.ESIMO.MAYOR(ESNUMERO(1*MED(A1;FILA(INDIRECTO("1:"&LARGO(
A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1))) ;FILA(INDIRECTO("1:"&CONTAR(1*MED(A1;FIL
A(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:"&CONTAR(1*MED(A1;FI
LA(INDIRECTO("1:"&LARGO(A1)));1)))) -1))/10^CONTAR(1*MED(DERECHA(A1;LARGO(A1) -
ENCONTRAR(MED(1/2;2;1);A1));FILA(INDIRECTO("1:"&LARGO(DERE CHA(A1;LARGO(A1)-
ENCONTRAR(MED(1/2;2;1);A1)))));1))}
?
En esta última fórmula habría que sustituir MED por EXTRAE si la versión de Excel fuese la
2007 (insisto en que la fórmula no funcionará con versiones anteriores a la 2007).?
??
Estas 4 fórmulas trabajan con la cadena de texto situada en A1.?
??
??
   
  
   ?
Si se desea extraer el número situado a la derecha en una cadena situada en A1 (por ejemplo,
extraer 9854 de la cadena abcd9854), pero la longitud del número no es fija, se puede usar:?
??
{üBUSCAR(1E+99;1*(DERECHA(A1;FILA(INDIRECTO("1:"&LARGO(A1))))))} ?
??
Esta fórmula funcionará con números con decimales, siempre que el separador decimal en la
cadena de texto sea el mismo que el establecido en la configuración regional del equipo.?
??
??
  
 
   
 
  ?
Suponiendo que A1 contiene el texto ABACDCABAEFE, para averiguar el número de aes que
aparecen en el texto:?
üLARGO(A1)-LARGO(SUSTITUIR(A1;"A";""))?
y para averiguar el número de veces que aparece ABA:?
ü(LARGO(A1)-LARGO(SUSTITUIR(A1;"ABA";"")))/3?
??
Si se quisiera saber el número de aes que aparecen en el rango A1:A10, la fórmula sería:?
{üSUMA(LARGO(A1:A10)-LARGO(SUSTITUIR(A1:A10;"A";"")))} ?
y para averiguar el número de veces que aparece ABA en el mismo rango:?
{üSUMA((LARGO(A1:A10)-LARGO(SUSTITUIR(A1:A10;"ABA";"")))/3)}?
??
??
 
    
 ?
La función MODA devuelve el valor que más se repite en un rango, pero tan sólo se puede
aplicar a valores numéricos. Si se necesitara emular esta función en un rango compuesto de
celdas con texto, y suponiendo que dicho rango fuera A1:A10, se podría usar la fórmula:?
üINDICE(A1:A10;MODA(COINCIDIR(A1:A10;A1:A10;0))) ?
Nota: En Excel 2010, la función MODA ha pasado a ser MODA.UNO?
??
??
 
    
 ?
Si se necesita saber cual es el elemento menos repetido de, por ejemplo, el rango A1:A10 (en
el que no puede haber celdas vacías), la fórmula sería:?
{üINDICE(A1:A10;COINCIDIR(MIN(CONTAR.SI(A1:A10;A1:A10));CONTAR.SI(A1:A10;A1:A10)
;0))}?
teniendo en cuenta que si hubiese más de un elemento con el menor número de repeticiones la
fórmula devolvería el situado más arriba.?
??
Esta fórmula sirve para cualquier tipo de datos.?
??
??
 
 !"     
 · å
Sabemos que la función MODA (MODA.UNO en Excel 2010) devuelve el elemento más
repetido de un rango. Si se necesita averiguar cuál es el 2º, 3º, etc. valor más repetido de un
rango con nombre llamado Datos (que ha de empezar en la fila 1 y estar constituido por
valores), se puede usar la fórmula:

{üINDICE(Datos;COINCIDIR(K.ESIMO.MAYOR(SI(COINCIDIR(Datos ;Datos;0)üFILA(Datos);C
ONTAR.SI(Datos;Datos)-FILA(Datos)/10^MAX(LARGO(Datos-
ENTERO(Datos))));FILA());SI(COINCIDIR(Datos;Datos;0)üFILA(Datos);CONTAR.SI(Datos;Dat
os)-FILA(Datos)/10^MAX(LARGO(Datos-ENTERO(Datos))));0))}

Para que esta fórmula ²tal como está aquí² devolviese el 2º valor más repetido, tendría que
estar situada en la fila 2. Situada en la fila 1, la fórmula devolvería el elemento más
repetido, lo que carece de sentido porque eso mismo se puede conseguir mucho más
fácilmente utilizando üMODA(Datos), si bien hay que precisar que en las versiones de Excel
que no disponen de la función MODA.VARIOS, la fórmula propuesta representa un modo de
conseguir que vayan aparecido todos los elementos "empatados" en la primera posición de la
clasificacion por su cantidad de apariciones, si es que hay más de uno.
La parte de la fórmula que determina el elemento a devolver es la función FILA(), por lo que si
se sustituye esta función por un número entero específico la fórmula devolverá el elemento que
ocupe esa posición en la jerarquía de repeticiones.

Esta fórmula necesita jerarquizar los elementos únicos del rango que procesa al objeto de
deshacer los posibles "empates" en su cantidad de apariciones, para lo que recurre a la técnica
de restarle a cada uno de ellos el resultado de la división de su número de fila entre 10^número
de decimales del elemento qué más decimales tenga+2. Esto podría tener como consecuencia
que la fórmula no trabajase adecuadamente si uno o varios de los números que debe procesar
tuvieran muchos decimales y/o si uno o varios de los números fuesen muy grandes.?
??
Si los elementos en el rango Datos fuesen cadenas de texto, se podría usar la siguiente
variante de la fórmula:?
{üINDICE(Datos;COINCIDIR(K.ESIMO.MAYOR(SI(COINCIDIR(Datos;Datos;0)üFI LA(Datos);C
ONTAR.SI(Datos;Datos)-
FILA(Datos)/100);FILA());SI(COINCIDIR(Datos;Datos;0)üFILA(Datos);CONTAR.SI(Datos;Datos
)-FILA(Datos)/100);0))}?
??
Esta fórmula trabajará (en principio) también si los elementos son una mezcla de valores y
texto o incluso si tan sólo hay números, pero si los números tuviesen decimales podrían
producirse resultados incorrectos.

En caso de empate en el número de repeticiones, estas fórmulas devolverán primero el situado


más arriba en el rango, luego el siguiente hacia abajo, etc. Cuando no queden más elementos
únicos en el rango Datos, comenzarán a devolver el error #¡NUM!?
??
??
 
 
     
 
 ?
Suponiendo que la celda A1 tiene un texto cuyas palabras están separadas por espacios, la
fórmula para averiguar el número de palabras sería:?
üLARGO(A1)-LARGO(SUSTITUIR(A1;" ";""))+1?
??
Para saber el promedio de las longitudes de las palabras del texto situado en la celda A1 la
fórmula sería:?
üLARGO(SUSTITUIR(A1;" ";""))/(LARGO(A1) -LARGO(SUSTITUIR(A1;" ";""))+1)?
??
Notas:?
{ Hay que hacer notar que si hubiera signos de puntuación serían tenidos en cuenta al
calcular el promedio de los largos de las palabras.?
{ Si las palabras estuviesen separadas por, por ejemplo, guiones, lo único que habría
que hacer es sustituir en las fórmulas " " por "-".?
??
??
??
 

   
 · å
Si se deseara saber la fila con el texto más largo en el rango A1:A10, la fórmula sería:
{üMAX(LARGO(A1:A10))}
Para obtener dicho texto más largo:
{üINDICE(A1:A10;COINCIDIR(1;SIGNO(LARGO(A1:A10)üMAX(LARGO(A1:A10)));0))}

Si hubiera dos o más celdas con el texto de la misma longitud, esta fórmula devolverá la
primera de ellas.

Sería posible usar un formato condicional para resaltar todas las celdas cuyos textos fueran los
más largos del rango. La fórmula para dicho formato condicional sería:
üLARGO(A1)üMAX(LARGO(A$1:A$10))?
Esta fórmula habría que aplicarla a todo el rango A1:A10?
??
??
 
      
    

 · å?
Suponiendo que se quiera saber cual es el carácter o el número más repetido en la celda A1,
se podría usar:?
{üMED(A1;MODA.UNO(COINCIDIR(MED(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1);MED(A1;
FILA(INDIRECTO("1:"&LARGO(A1)));1);0));1)}?
??
teniendo en cuenta que si dos o más caracteres y/o dígitos se repiten el mismo número de
veces, la fórmula devolverá el situado más a la izquierda. En Excel 2010 es posible utilizar la
nueva función MODA.VARIOS para devolver la lista de elementos "empatados" (si los hay) en
el primer puesto por el número de apariciones. La fórmula sería:?
{üINDICE(MODA.VARIOS(COINCIDIR(MED($A$1;FILA(INDIRECTO("1:"&LARGO($A$1)));1);
MED($A$1;FILA(INDIRECTO("1:"&LARGO($A$1)));1);0));FILA())} ?
??
que habría que colocar en la fila 1 de cualquier columna vacía y copiarla y pegarla hacia abajo.
Cuando no haya más elementos "empatados" en el primer puesto por el número de
apariciones, comenzará a aparecer el error #¡REF!?
??
Complicando un poco la primera fórmula propuesta es posible, en caso de empate, devolver el
caracter más a la derecha (útil para las versiones anteriores a la 2010, que no disponen de la
función MODA.VARIOS):?
{üMED(A1;LARGO(A1)-MODA.UNO(COINCIDIR(MED(A1;LA RGO(A1)-
FILA(INDIRECTO("1:"&LARGO(A1)))+1;1);MED(A1;LARGO(A1) -
FILA(INDIRECTO("1:"&LARGO(A1)))+1;1);0))+1;1)} ?
??
Es posible también averiguar el número de veces que aparece el carácter o dígito que más lo
hace, usando la fórmula:?
{üMAX(LARGO(A1)-
LARGO(SUSTITUIR(A1;MED(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1);"")))} ?
??
En las versiones anteriores a la 2010 hay que sustituir MODA.UNO por MODA y MED por
EXTRAE.?
??
??
 
       
  ?
Si se desea obtener la posición del primer carácter no numérico en la celda A1, se puede usar:?
{üCOINCIDIR(VERDADERO;ESERROR(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(
A1)));1)));0)}?
Y para obtener el carácter que es:?
{üEXTRAE(A1;COINCIDIR(VERDADERO;ESERROR(SIGNO(EXTRAE(A1;FILA(INDIRECTO("
1:"&LARGO(A1)));1)));0);1)}?
??
Para obtener la posición del primer número o el número en sí, bastaría con sustituir
VERDADERO por FALSO.?
??
 
        
  ?
Si se desea obtener la posición del último carácter no numérico en la celda A1, se puede usar:?
{üMAX(ESERROR(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))*FILA(INDIR
ECTO("1:"&LARGO(A1))))}?
Y para obtener el carácter que es:?
{üEXTRAE(A1;MAX(ESERROR(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))
*FILA(INDIRECTO("1:"&LARGO(A1))));1)}?
??
Si se desea el último número, las fórmulas serían:?
{üMAX(ESNUMERO(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))*FILA(INDI
RECTO("1:"&LARGO(A1))))}?
y:?
{üEXTRAE(A1;MAX(ESNUMERO(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"& LARGO(A1)));1)
))*FILA(INDIRECTO("1:"&LARGO(A1))));1)} ?
??
??
        
   · å?
Excel dispone de la función ESTEXTO para saber si el contenido de una celda es un texto,
pero dicha función no evalúa cada carácter, por lo que, por ejemplo, AB1C lo consideraría
como texto a pesar de tener un número.?
??
Si, por ejemplo, se necesitara saber si todos y cada uno de los caracteres de una celda son
letras mayúsculas, excluyendo la Ñ, se podría usar:?
??
üSUMAPRODUCTO((CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))>64)*(CO
DIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))<91))üLARGO(A1) ?
??
e incluyendo la Ñ:?
??
üSUMAPRODUCTO(((CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))>64)*(C
ODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))<91))+(CODIGO(EXTRAE(A1;FIL
A(INDIRECTO("1:"&LARGO(A1)));1))ü209))üLARGO(A1)?
??
Si, además, se necesitara saber si el texto tiene una longitud determinada (por ejemplo, 6
caracteres), la fórmula sería (sin la Ñ):?
??
üY(SUMAPRODUCTO((CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))>64)*(
CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))<91))ü6;LARGO(A1)ü6) ?
??
y con la Ñ:?
??
üY((SUMAPRODUCTO((CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))>64)*(
CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))<91)+(CODIGO(EXTRAE(A1;FI
LA(INDIRECTO("1:"&LARGO(A1)));1))ü209)))ü6;LARGO(A1)ü6)?
??
Si se quisiera verificar que todas las letras fueran minúsculas, habría que hacer las siguientes
sustituciones en las fórmulas:?
??
96 en vez de 64?
123 en vez de 91?
241 en vez de 209?
??
Nota: todas estas fórmulas pueden ser utilizadas como 'Fórmula personalizada' en las
validaciones.?
??
??
c
 
     
  
   
     · å?
Suponiendo que en A1 estuviera el código de la entidad bancaria (4 dígitos), en B1 el código de
la sucursal (4 dígitos) y en C1 el código de la cuenta (10 dígitos), la fórmula para averiguar el
dígito de control de la entidad + la sucursal (8 dígitos en total) sería:?
{üMED(12345678910;11-
RESTO(SUMA(MED(A1&B 1;FILA(INDIRECTO("1:8"));1)*(MED(37498625;FILA(INDIRECTO("1
:8"));1)+1));11);1)}?
??
La fórmula para averiguar el dígito de control del número de cuenta sería:?
{üMED(12345678910;11-
RESTO(SUMA(MED(C1;FILA(INDIRECTO("1:10"));1)*(MED(0&137498625;FILA(INDIRECTO("
1:10"));1)+1));11);1)}?
??
Si se necesitara averiguar ambos dígitos de control en la misma celda, la fórmula sería:?
{üMED(12345678910;11-
RESTO(SUMA(MED(A1&B1;FILA(INDIRECTO("1:8"));1)*(MED(37498625;FILA(INDIRECTO("1
:8"));1)+1));11);1)&MED(12345678910;11-
RESTO(SUMA(MED(C1;FILA(INDIRECTO("1:10"));1)*(MED(0&137498625;FILA(INDIRECTO("
1:10"));1)+1));11);1)}?
??
Y para obtener el CCC completo (entidad + sucursal + dígitos de control + número de cuenta)
separados por un espacio, que es como se suele presentar el CCC en España, la fórmula
sería:?
{üA1&" "&B1&" "&MED("12345678910";11-
RESTO(SUMA(MED(A1&B1;FILA(INDIRECTO("1:8"));1)*(MED("37498625";FILA(INDIRECTO("
1:8"));1)+1));11);1)&MED("12345678910";11-
RESTO(SUMA(MED(C1;FILA(INDIRECTO("1:10"));1)*(MED(0&137498625;FILA (INDIRECTO("
1:10"));1)+1));11);1)&" "&C1}?
??
Notas:?
{ Conviene que tanto las celdas con los códigos bancarios como las que tengan las
fórmulas para averiguar sus dígitos de control tengan formato de texto para evitar que
se pierdan los ceros que pudiera haber a la izquierda. Otra posibilidad es anteponer un
apóstrofo š a los códigos, por ejemplo š0123?
{ Es posible sustituir SUMA por SUMAPRODUCTO, y de así hacerlo no sería necesario
introducir las fórmulas de forma matricial.?
{ En las versiones anteriores a la 2010 hay que sustituir RESTO por RESIDUO y MED
por EXTRAE.?
??
??
c
 
      ñ   
 ñ
 ?
Suponiendo que en A1 estuviera el CCC (Código de Cuenta del Cliente del sistema bancario
español) completo (es decir, los cuatro dígitos del banco + los cuatro de la sucursal + los dos
dígitos de control + los diez dígitos de la cuenta), sin espacios ni otros signos (como p.ej.
guiones), la fórmula para averiguar los dígitos de control IBAN sería:?
üDERECHA(0&98-
RESIDUO(RESIDUO(RESIDUO(RESIDUO(EXTRAE(A1;1;8);97)&EXTRAE(A1;9;8);97)&EXTR
AE(A1&142800;17;8);97)&EXTRAE(A1&142800;25;2);97);2)?
??
y la fórmula para devolver el código IBAN completo sería:?
ü"ES"&DERECHA(0&98-
RESIDUO(RESIDUO(RESIDUO(RESIDUO(EXTRAE(A1;1;8);97)& EXTRAE(A1;9;8);97)&EXTR
AE(A1&142800;17;8);97)&EXTRAE(A1&142800;25;2);97);2)&A1?
??
Si se deseara desglosar el IBAN en 6 grupos de 4 caracteres separados por un espacio (que
es como se suele presentar el IBAN en España), la fórmula sería:?
ü"ES"&DERECHA(0&98-
RESIDUO(RESIDUO(RESIDUO(RESIDUO(EXTRAE(A1;1;8);97)&EXTRAE(A1;9;8);97)&EXTR
AE(A1&142800;17;8);97)&EXTRAE(A1&142800;25;2);97);2)&" "&IZQUIERDA(A1;4)&"
"&EXTRAE(A1;5;4)&" "&EXTRAE(A1;9;4)&" "&EXTRAE(A1;13;4)&" "&EXTRAE(A1;17;4) ?
??
Notas:?
{ En el ? ©?©©
???"#
? © (la que averiguaba los dígitos de control del
CCC) hay una hoja con ejemplos de estas fórmulas que calculan los códigos de control
IBAN.?
{ En Excel 2010 hay que sustituir RESIDUO por RESTO y EXTRAE por MED.?
??
??
 
    
ñ cñ     c  
· å?
Suponiendo que en A1 se encuentra el DNI cuya letra se quiera averiguar, la fórmula sería:?
üEXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(A1;23)+1;1) ?
??
 
    
Ñ # Ñ 
   ?
Suponiendo que en A1 se encuentra el RUT, la fórmula sería:?
{üEXTRAE("123456789K0";11-
RESIDUO(SUMA(EXTRAE(DERECHA(REPETIR("0";12)&$A$1;12);13 -
FILA(INDIRECTO("1:12"));1)*(FILA(INDIRECTO("1:12"))+1 -
(FILA(INDIRECTO("1:12"))>6)*6));11);1)}?
??
Usando como separador la coma, la fórmula quedaría así:?
{üEXTRAE("123456789K0",11-
RESIDUO(SUMA(EXTRAE(DERECHA(REPETIR("0",12)&$A$1,12),13 -
FILA(INDIRECTO("1:12")),1)*(FILA(INDIRECTO("1:12"))+1 -
(FILA(INDIRECTO("1:12"))>6)*6)),11),1)}?
??
Nota: no dispongo de muchos RUTs auténticos para probar de forma más intensiva si la
fórmula funciona. En cualquier caso, sí lo calcula bien con el ©©
 que aparece en la
wikipedia sobre el tema. Si alguien encuentra un error en la fórmula, que por favor me lo
comunique a excel ARROBA jrgc.es --> GRACIAS.?
??
 
    
ñ   ñ       



 ?
Suponiendo que en A1 se encuentra el DNIC, la fórmula sería:?
üDERECHA(10-
RESIDUO(SUMAPRODUCTO(VALOR(DERECHA(EXTRAE(A1;FILA(INDIRECTO("1:7"));1)*E
XTRAE("2987634";FILA(INDIRECTO("1:7"));1);1)));10);1)?
??
Usando como separador la coma, la fórmula sería:?
üDERECHA(10-
RESIDUO(SUMAPRODUCTO(VALOR(DERECHA(EXTRAE(A1,FILA(INDIRECTO("1:7")),1)*E
XTRAE("2987634",FILA(INDIRECTO("1:7")),1),1))),10),1)?
??
 
    
 Ñ#     Ñ 
 
 ?
Suponiendo que en A1 se encuentra la CUIT (en el formato 99-99999999), la fórmula para
averiguar su dígito verificador sería:?
{üEXTRAE("12345678990";11-
RESIDUO(SUMA(EXTRAE(IZQUIERDA($A$1;2)&EXTRAE($A$1;4;8);10 -
FILA(INDIRECTO("1:10"))+1;1)*(FILA(INDIRECTO("1:10"))+1-
(FILA(INDIRECTO("1:10"))>6)*6));11);1)}?
??
Usando como separador la coma, la fórmula sería:?
{üEXTRAE("12345678990",11-
RESIDUO(SUMA(EXTRAE(IZQUIERDA($A$1,2)&EXTRAE($A$1,4,8),10 -
FILA(INDIRECTO("1:10"))+1,1)*(FILA(INDIRECTO("1:10"))+1-
(FILA(INDIRECTO("1:10"))>6)*6)),11),1)}?
??
??
c
 
    
   ñ !?
Suponiendo que en A1 se encuentre el código EAN-13 (12 dígitos) cuyo dígito de control se
desee averiguar, la fórmula sería:?
??
ü10-
RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIR ECTO("1:12"));1)*(EXTRAE(131313131
313;FILA(INDIRECTO("1:12"));1)));10)?
??
Una variante, un poco más corta:?
??
ü10-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:12"));1)
*(1+((RESIDUO(FILA(INDIRECTO("1:12"));2)ü0)*2)));10)?
??
??
c
 
    
   ñ ?
Suponiendo que en A1 se encuentre el código EAN-8 (7 dígitos) cuyo dígito de control se
desee averiguar, la fórmula sería:?
ü10-
RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:7"));1)*(EXTRAE(3131313;FI
LA(INDIRECTO("1:7"));1)));10)?
??
Notas:?
{ Las fórmulas que usan la función SUMAPRODUCTO se pueden hacer un poco más
cortas si se convierten en matriciales, para lo cual lo único que hay que hacer es
sustituir SUMAPRODUCTO por SUMA e introducirlas como fórmulas matriciales.?
{ En Excel 2010 hay que sustituir RESIDUO por RESTO y EXTRAE por MED.?
??
??
Reitero la importancia de que la celdas que contienen los códigos cuyos dígitos de
control se quieran averiguar estén formateadas como texto, para evitar que se puedan
perder ceros por la izquierda, si los hay.?
??
??
??
     
 
 
   ?

 © ? ??
En este ejemplo se necesita averiguar qué filas están duplicadas (es decir, tienen las tres
celdas iguales en el mismo orden).?
??
Una posibilidad es poner la siguiente fórmula en la fila 1 de una columna vacía?
??
üSUMAPRODUCTO(($A$1:$A$6&$B$1:$B$6&$C$1:$C$6ü$A1&$B1&$C1)*1)?
??
y copiarla y pegarla hasta la última fila. La fórmula devolverá el número de veces en que se
produce la duplicidad.?
??
También sería posible usar la siguiente fórmula, pero hay que tener en cuenta que hay que
introducirla como matricial habiendo seleccionado antes todo el rango donde debe ir. ?
??
{üCOINCIDIR(A1:A6&B1:B6&C1:C6;A1:A6&B1:B6&C1:C6;0)}?
??
Esta fórmula asignará a cada grupo de celdas un número, y los grupos duplicados aparecerán
con el mismo número. En ©?
 © ? ? se puede ver la fórmula, aplicada en el rango
D1:D6?
??
??
c 
 

 

   ?
Por ejemplo, para mostrar siempre en una celda el lunes de la semana actual, la fórmula sería:?
??
üSI(DIASEM(HOY())ü2;HOY();HOY() -DIASEM(HOY()-2))?
??
Para los demás días de la semana, habría que sustituir los doses por:?
1 para el domingo?
3 para el martes?
4 para el miércoles?
5 para el jueves?
6 para el viernes?
7 para el sábado?
??
??
c
 
           
 
Si en A1 hay una fecha y se desea saber el sábado anterior a la misma se puede usar:
üA1-DIASEM(A1)
Para el sábado posterior la fórmula sería:
üA1-DIASEM(A1)+7

Para el domingo anterior o siguiente, las fórmulas serían:


üA1-DIASEM(A1-1)
üA1-DIASEM(A1-1)+7

Para el lunes, martes...viernes, habría que sustituir -1 por -2,-3... -6

Lógicamente, se puede trabajar con HOY() o AHORA() en vez de la referencia a A1, en cuyo
caso los resultados serían volátiles.
?
??
??
c 
     
    
  ?
Primer día del mes actual: üFECHA(AÑO(HOY());MES(HOY());1) ?
Último día del mes actual: üFECHA(AÑO(HOY());MES(HOY())+1;1) -1?
Primer día del mes anterior: üFECHA(AÑO(HOY());MES(HOY()) -1;1)?
Último día del mes anterior: üFECHA(AÑO(HOY());MES(HOY());1) -1?
Primer día del mes siguiente: üFECHA(AÑO(HOY());MES(HOY())+1;1) ?
Último día del mes siguiente: üFECHA(AÑO(HOY());MES(HOY())+2;1) -1?
??
??

      ?
Suponiendo que en rango A1:A50 hay una serie de fechas de nacimiento, y que se necesita
subtotalizar por tramos de edad de 10 años desde dichas fechas de nacimiento hasta la fecha
actual, la fórmula sería:

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

para las fechas de nacimiento de los 10 años anteriores. Para los 10, 20, ... XX años, habría
que sustituir ü0 por ü1, ü2 ... üXX/10

Si se necesitara tomar como referencia una fecha en concreto en lugar de la actual, habría que
sustituir HOY() por alguna de las funciones de conversión a fechas de Excel. Por ejemplo,
usando la función FECHA para el 31/12/2007, la fórmula anterior quedaría:

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

Si se modifica un poco las fórmulas es posible subtotalizar por otros períodos distintos al
decenio, como por ejemplo quinquenios:

ü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)

Lógicamente, también es posible obtener sumas de cantidades que estén relacionadas con
esas fechas. Por ejemplo, suponiendo que en el rango B1:B50 de la misma hoja hubiera una
serie de cantidades y se deseara obtener la suma que corresponde a quienes han nacido en
los 10 años anteriores a la fecha actual, la fórmula sería:

üSUMAPRODUCTO((ENTERO(SIFECHA($A$1:$A$50;HOY();"y")/10)ü0)*$B1:$B$50)?
??
??
º 
          · å?
Suponiendo que se tiene un rango con nombre (de una sola columna de ancho) llamado Notas,
y se desea obtener su promedio despreciando su valor más alto, la fórmula sería:
{üPROMEDIO(K.ESIMO.MENOR(Notas;FILA(INDIRECTO("1:"&FILAS(Notas) -1))))}

Para despreciar los dos valores más altos tan sólo habría que sustituir el -1 por -2, etc.

Para obtener el promedio despreciando la nota más baja, habría que usar la función
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 más baja, la
fórmula sería:?
{üPROMEDIO(K.ESIMO.MAYOR(Nota s;FILA(INDIRECTO("1:"&FILAS(Notas) -
CONTAR.SI(Notas;MIN(Notas))))))}?
??
Para obtener el promedio sin tener en cuentas TODAS las apariciones de la nota más 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, habría que sustituir en la
fórmula FILAS por COLUMNAS.?
??
Para averiguar el promedio del rango con nombre Notas despreciando tanto todos los valores
menores como todos los mayores, la fórmula sería:?
??
{üPROMEDIO(SI(NO((NotasüMIN(Notas))+(NotasüMAX(Notas)));Notas;""))}?
??
??
 
 
 
· å
Esta fórmula devuelve la letra de la columna de la celda A1:?
üSUSTITUIR(IZQUIERDA(CELDA("direccion";A1);ENCONTRAR("$";CELDA("direccion";A1);2) -
1);"$";"")?
??
??
 

     
       
 
· å?
Suponiendo que la fecha estuviera en A1, la fórmula para el bimestre sería:?
üREDONDEAR.MAS(MES(A1)/2;0)?
- para el trimestre, habría que sustituir /2 por /3?
- para el cuatrimestre, /2 por /4?
- y para el semestre, /2 por /6.?
??
??
º       

  
   
 · å?
Suponiendo que en A1 hay una fecha y en A2 otra fecha, mayor que la de A1, la siguiente
fórmula devolverá el número de domingos que hay entre ambas:
üENTERO((B1-DIASEM(B1)-A1+8)/7)
para saber la cantidad de lunes, la fórmula sería:
üENTERO((B1-DIASEM(B1-1)-A1+8)/7)

Sustituyendo -1 por -2, -3... -6 se obtendría el número de martes, miércoles... sábados.?


??
??
c
 
     · å?
Suponiendo que el número estuviera en A1:?
{üA1&ELEGIR(N((SUMA(--
(MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(RAIZ(A1+1)))))üA 1))>1))+1;" sí";"
no") & " es un número primo."}?
??
Se podría usar la siguiente fórmula en un Formato Concidional para que las celdas que
contengan un número primo se destaquen como se haya establecido en el propio Formato
Condicional:?
üSUMA(--(MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(RAIZ(A1)))))üA1))ü1 ?
??
??
Notas:?
{ el número más alto que puede procesar esta fórmula (en Excel 2003) es el
4.295.098.367. En las versiones posteriores es el 1.099.513.724.928, pero el
procesamiento de un número tan grande podría llevar bastante tiempo?
{ aplicada al número 1, la fórmula dirá que es primo, pero no lo es?
{ conviene no usar muchas veces esta fórmula en el mismo libro, dado que si los
números a procesar son muy grandes tendrá que hacer muchos cálculos?
{ la función RAIZ ha cambiado de nombre en la versión 2010 de Excel: ahora se llama
RCUAD?
{ usando ©?" # ?$%& es posible averiguar si un número es primo hasta el
922.337.203.685.477?
??
??
c
   
   · å?
Si, por ejemplo, en la celda A1 está el número 12345, la siguiente fórmula devolverá su reverso
(54321):?
{üSUMA(EXTRAE(ABS(A1);FILA(INDIRECTO("1:"&LARGO(ABS(A1))));1)*10^(FILA(INDIRECT
O("1:"&LARGO(ABS(A1))))-1))*SIGNO(A1)}?
Lo mismo hace:?
üSUMAPRODUCTO(EXTRAE(ABS(A1);FILA(INDIRECTO("1:"&LARGO(ABS(A1))));1)*10^(FIL
A(INDIRECTO("1:"&LARGO(ABS(A1)))) -1))*SIGNO(A1)?
??
Usando esta fórmula también es posible saber si el número situado en A1 es o no capicúa:?
{üA1&ELEGIR(--
(SUMA(EXTRAE(ABS(A1);FILA(INDIRECTO("1:"&LARGO(ABS(A1))));1)*10^(FILA(INDIRECT
O("1:"&LARGO(ABS(A1))))-1))*SIGNO(A1)üA1)+1;" no";" sí")&" es capicúa."}?
??
Nota: El máximo de dígitos que puede tener el número es 15, es decir los mismos que la
precisión numérica de Excel.?
??
??
 
 
 
  · å?
La siguiente fórmula devuelve VERDADERO si la palabra en A2 es un  
 (se lee igual
en ambos sentidos) y FALSO si no lo es:?
{üY(EXTRAE(A2;FILA(INDIRECTO("1:"&ENTERO(LARGO(A2)/2)));1)üEXTRAE(A2;LARGO(A
2)-FILA(INDIRECTO("1:"&ENTERO(LARGO(A2)/2)))+1;1))} ?
??
Esta otra sirve para procesar una frase en lugar de una palabra:?
{üY(EXTRAE(SUSTITUIR(A2;" ";"");FILA(INDIRECTO("1:"&ENTERO(LA RGO(SUSTITUIR(A2;"
";""))/2)));1)üEXTRAE(SUSTITUIR(A2;" ";"");LARGO(SUSTITUIR(A2;" ";"")) -
FILA(INDIRECTO("1:"&ENTERO(LARGO(SUSTITUIR(A2;" ";""))/2)))+1;1))} ?
??
Se podrían acortar un poco las fórmulas, pero en este caso tendrían que evaluar todas las
letras de la palabra o de la frase, mientras que las dos fórmulas anteriores necesitan evaluar
tan sólo la mitad:?
??
{üY(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)üEXTRAE(A1;LARGO(A1)+1 -
FILA(INDIRECTO("1:"&LARGO(A1)));1))} ?
??
{üY(EXTRAE(SUSTITUIR(A1;" ";"");FILA( INDIRECTO("1:"&LARGO(SUSTITUIR(A1;"
";""))));1)üEXTRAE(SUSTITUIR(A1;" ";"");LARGO(SUSTITUIR(A1;" ";""))+1 -
FILA(INDIRECTO("1:"&LARGO(SUSTITUIR(A1;" ";""))));1))) ?
??
Nota: en principio da igual si las letras están en mayúsculas o minúsculas, pero lo que no
puede haber son signos de puntuación ni acentos.?
??
??
 
  
   · å?
Excel dispone del complemento Herramientas para Análisis, que incluye una función para
realizar este cálculo, pero en cualquier caso se puede usar la siguiente fórmula para hallar el
valor decimal del número binario situado en A1:?
??
{üSUMA(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)*2 ^(LARGO(A1)-
FILA(INDIRECTO("1:"&LARGO(A1)))))} ?
Lo mismo hace:?
üSUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)*2^(LARGO(A1) -
FILA(INDIRECTO("1:"&LARGO(A1))))) ?
??
Debido a la precisión numérica de Excel (15 dígitos), si la celda donde está el número binario
tiene formato numérico, éste no podrá ser mayor de 15 unos (32.767 en decimal), mientras que
si la celda está formateada como texto el número binario no podrá ser mayor de 49 unos
(562.949.953.421.311 en decimal)?
??
Nota: Esta misma fórmula sirve para averiguar el valor decimal de un numero en las bases 3 a
9. Lo único que hay que hacer es sustituir el 2 de la fórmula (en la expresión *2^) por la base en
la que se encuentre el número a convertir.?
??
??
 
   
   · å?
??
ñºÑ
   
 £  
    


?
??
Excel dispone del complemento Herramientas para Análisis, que incluye una función para
realizar este cálculo, pero en cualquier caso se puede usar la siguiente fórmula para hallar el
valor binario de un número decimal situado en A1:?
{üSUMA(RESIDUO(ENTERO(A1/2^((FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1))) -
1));2)*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1))-1))}?
Lo mismo hace:?
üSUMAPRODUCTO(RESIDUO(ENTERO(A1/2^((FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))
+1)))-1));2)*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1))-1))?
??
Notas:?
{ La celda donde esté la fórmula tiene que tener formato numérico, preferentemente con
cero posiciones decimales y sin separador de miles.?
{ Debido a la precisión numérica de Excel (15 dígitos), el número decimal más alto que
puede devolver esta fórmula es el 32.768, que en binario es 1000000000000000 (un
uno seguido de 15 ceros).?
{ Hay que tener en cuenta que aunque el número devuelto por la fórmula "parezca"
binario, en realidad Excel lo tratará como decimal si se intenta hacer cualquier cálculo
con él.?
{ La fórmula no generará un error si ha de procesar números negativos o mayores de
32.768, pero los resultados podran no ser correctos.?
{ Esta misma fórmula (con las modificaciones necesarias) puede devolver números en
las bases 3 a 9. En el ? ©?©©
? ©?©?" # se pueden ver dichas fórmulas, así
como sus limitaciones.?
{ En Excel 2010 la función RESIDUO habría que cambiarla por RESTO.?
??
??
 
  
    · å?
Excel dispone del complemento Herramientas para Análisis, que incluye una función para
realizar este cálculo, pero en cualquier caso se puede usar la siguiente fórmula para hallar el
valor decimal de un número hexadecimal situado en A1:?
{üSUMA((HALLAR(EXTRAE(A1;FILA(INDIRECTO("1:"& LARGO(A1)));1);"0123456789abcdef")-
1)*16^(LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))))}?
Lo mismo hace:?
üSUMAPRODUCTO((HALLAR(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1);"0123456
789abcdef")-1)*16^(LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1))))) ?
??
Debido a la precisión numérica de Excel (15 dígitos), el hexadecimal más alto que puede
devolver esta fórmula con garantías es 38D7EA4C68000 (un uno seguido de 15 ceros en
decimal).?
??
Nota: esta misma fórmula se puede usar (con las necesarias modificaciones) para averiguar el
valor decimal de un número en otras bases que requieran más de los 10 símbolos numéricos
del sistema decimal. Por ejemplo, para hallar el valor decimal de un número en base 15, la
fórmula sería:?
{üSUMA((HALLAR(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A 1)));1);"0123456789abcde")-
1)*15^(LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)))))}?
??
Las modificaciones con respecto a la fórmula hexadecimal -> decimal han sido tan sólo dos:?
1) Se ha eliminado la f (en "0123456789abcdef")?
2) Se ha sustituido el 16 (en *16^) por 15?
??
??
 ?
Si se desea conocer el cumplimiento (o incumplimiento) de una serie de datos llamada Datos
de la |©'? ©?%© " , la fórmula para el 1 sería:
{ü(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 números, tan sólo habría que sustituir los dos doses de esta ultima fórmula por
el número que se deseara.?
??
Con unas pequeñas modificaciones es posible conseguir que la fórmula funcione para los n
primeros dígitos, donde n lo determinará el número de fila de la celda en la que se encuentre la
fórmula:?
{ü(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, es
posible sustituir ABS(Datos) por Datos, con lo que se ganará algo de rendimiento.?
{ Dado que la ley de Benford sólo se aplica a series de datos grandes (normalmente,
miles), me permito recomendar prudencia en cuanto al número de veces que se usen
estas fórmulas en un mismo libro de Excel, puesto que en situaciones reales lo normal
será que tengan que hacer muchísimos cálculos.?
??
??
     
 
 ?
Suponiendo que en el rango A1:A10 hay una serie de números enteros y que se desea
averiguar cuantos de ellos son pares y cuantos impares, las fórmulas serían:?
ü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 sólo números enteros. Si hubiera celdas vacías,
fechas, números con decimales, cadenas de texto, etc., las fórmulas podrían dar como
resultado un error o no devolver el resultado correcto.?
??

    
 ?
Suponiendo que en el rango A1:A10 hay una serie de números enteros y que se desa
averiguar la suma de los pares y/o la suma de los impares, las fórmulas serían:?
ü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 sólo números enteros. Si hubiera celdas vacías,
fechas, números con decimales, cadenas de texto, etc., las fórmulas podrían dar como
resultado un error o no devolver el resultado correcto.?
??
??
 

  c   ?
La siguiente fórmula devuelve el número 50 de la serie Fibonacci:?
ü((((1+RAIZ(5))/2)^50)-(-((1+RAIZ(5))/2)^-50))/RAIZ(5)?
??
Lógicamente, es posible averiguar cualquier otro sustituyendo los dos 50 de la fórmula por el
número que se desee; pero hay que tener en cuenta que, debido a la precisión numérica de
Excel (15 dígitos), el máximo número que la fórmula devolverá correctamente es el 73º de la
serie.?
??
Usando una UDF que utilice el tipo de datos Decimal para hacer los cálculos es posible
averiguar hasta el Fibonacci 139 (29 dígitos). En ©©?? ©?©©
 hay un ejemplo de la
función, junto con algunas otras que hacen uso de este tipo de datos (?©?©?©
).?
??
En ©?(   hay varias funciones para trabajar en Excel con enteros grandes, sirviendo una
de ellas para hallar números de la serie Fibonacci más allá del 139 (en las pruebas he llegado
hasta el 9999 de la serie).?
??
La siguiente fórmula devuelve VERDADERO si el número situado en A1 pertenece a la serie
Fibonacci y FALSO en caso contrario. Hay que tener en cuenta que, debido a la precisión
numérica de Excel, sólo funciona hasta el número 73º de la serie (el 806.515.533.049.393):?
{üNO(ESERROR(COINCIDIR(TEXTO($A$1;"0");TEXTO(((((1+RAIZ(5))/2)^FILA(INDIRECTO("
2:73")))-(-((1+RAIZ(5))/2)^-FILA(INDIRECTO("2:73"))))/RAIZ(5);0);"0")))} ?
??
??
·  
     
   å?
 
     
        
  
   ?
La siguiente fórmula devuelve la cantidad de divisores del número 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 fórmula en la fila 1 de
cualquier columna:?
{üK.ESIMO.MAYOR(((MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(A1/2))))üA1)
*FILA(INDIRECTO("1:"&ENTERO(A1/2))));FILA())} ?
y copiándola hacia abajo hasta igualar el número de divisores del número (el resultado de la
primera fórmula).?
??
La fórmula no considera el número que procesa como divisor de sí mismo, aunque lógicamente
lo es. ?
??
??
 

    
      ?
La siguiente fórmula devuelve la suma de los divisores del número entero positivo situado en
A1:?
{üSUMA((MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(A1/2))))üA1)*FILA(INDIR
ECTO("1:"&ENTERO(A1/2))))}?
??
La fórmula no considera el número que procesa como divisor de sí mismo, aunque lógicamente
lo es.?
??
 
 
        "  
 ?
La siguiente fórmula dirá qué tipo de número es el situado en A1:?
{üELEGIR(SIGNO(SUMA((MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(A1/2))))
üA1)*FILA(INDIRECTO("1:"&ENTERO(A1/2)))) -A1)+2;"Defectivo";"Perfecto";"Abundante")}?
??
El número más alto que pueden procesar estas fórmulas en Excel 2003 es el 131.073. En
Excel 2007 y 2010 es el 2.097.153, pero los cálculos necesarios para números tan grandes
pueden llevar bastante tiempo.?
??
Nota: en ©?(   hay funciones VBA que pueden hacer los tres cálculos anteriores hasta el
máximo del tipo de datos Currency de VBA (922.337.203.685.477) ?
??
??
º º 

 
 
1HFHVLWRKDFHUXQDIRUPXODSDUDFDOFXODUDXPHQWRGHVXHOGRVTXHOOHYDPDVGHQLYHOHVGHGHFLVLRQHV
ORJLFDV ,) SHUR([FHOGLFHTXHQRSXHGRDQLGDUPDVGHQLYHOHVHQXQDPLVPDFHOGD"DOJXQD
VXJHUHQFLD"
HMHPSOR

6, < * *!   ) . 6, < * *
!   ) . 6, < * *!   ) . 
6, < * *!   ) . 6, < * *
!   ) . 6, < * *!   ) .  

SHURQHFHVLWRDQLGDUPDVGHFLVLRQHV

VDOXGRV

HVP¢VVHQFLOORFUHDQGRXQDIXQFLRQWHSXHGHVHUYLUDOJRDVL

)XQFWLRQDXPHQWRBVXHOGR VXHOGR$V'RXEOH $V'RXEOH
6HOHFW&DVHVXHOGR
&DVH7R
VXHOGRILQDO VXHOGR 5DQJH N 
&DVH7R
VXHOGRILQDO VXHOGR 5DQJH N 
&DVH7R
VXHOGRILQDO VXHOGR 5DQJH N 
&DVH7R
VXHOGRILQDO VXHOGR 5DQJH N 
&DVH7R
VXHOGRILQDO VXHOGR 5DQJH N 
&DVH7R
VXHOGRILQDO VXHOGR 5DQJH N 
&DVH7R
VXHOGRILQDO VXHOGR 5DQJH N 
&DVH7R
VXHOGRILQDO VXHOGR 5DQJH N 
(QG6HOHFW
DXPHQWRBVXHOGR VXHOGRILQDO
(QG)XQFWLRQ

VRORWLHQHVTXHSRQHUORVYDORUHVFRUUHVSRQGLHQWHVHQODFROXPQD.

r

En algunos casos, puede que deba utilizar una función como uno de los argumentos de otra función. Por ejemplo, la siguiente
fórmula utiliza una función anidada PROMEDIO y compara el resultado con el valor 50.
Resultados válidos Cuando se utiliza una función anidada como argumento, deberá devolver el mismo tipo de valor que el
que utilice el argumento. Por ejemplo, si el argumento devuelve un valor VERDADERO o FALSO, la función anidada deberá
devolver VERDADERO o FALSO. Si éste no es el caso, Microsoft Excel mostrará el valor de error #¡VALOR!

Límites del nivel de anidamiento Una fórmula puede contener como máximo siete niveles de funciones anidadas. Si la
Función B se utiliza como argumento de la Función A, la Función B es una función de segundo nivel. Por ejemplo, la función
PROMEDIO y la función SUMA son ambas funciones de segundo nivel porque son argumentos de la función SI. Una función
anidada dentro de la función PROMEDIO será una función de tercer nivel, etc.

Supongamos que desea convertir un texto de mayúscula a minúscula o de minúscula al formato de nombre propio (título o
nombre) para que sea más legible. Para cambiar de mayúscula a minúscula o viceversa, use las funciones MAYUSC, MINUSC o
NOMPROPIO tal como se muestra en el siguiente ejemplo.

o

El ejemplo será más fácil de entender si lo copia a una hoja de cálculo en blanco.

¿Cómo se copia un ejemplo?

 


ñ 


Cecilia Cornejo

! c
    
  

" üMAYUSC(A2) Cambia el texto a todo MAYÚSCULAS (CECILIA CORNEJO)

$ üMINUSC(A2) Cambia el texto a todo minúsculas (cecilia cornejo)

% üNOMPROPIO(A2)Cambia el texto al tipo título (Natalia Domínguez)

NOTA Por lo general, puede usar estas funciones para cambiar el tipo de texto de las celdas, de una en una. Para cambiar el
uso de mayúsculas y minúsculas del texto de un rango de celdas, puede usar estas funciones en una fórmula de matriz. Por
ejemplo, para convertir el texto en las celdas A1:A3 todo en mayúscula, seleccione las celdas B1:B3, escriba la fórmula
=MAYUSC(A1:A3) y presione CTRL+MAYÚS+ENTRAR para convertir la fórmula en una fórmula de matriz. Los r esultados
aparecen en las celdas B1:B3 completamente en mayúsculas.Para obtener más información, vea Directrices y ejemplos de
fórmulas de matriz.

’etalles de la función

Función MAYUSC Convierte el texto en mayúscula.

Sintaxis

MAYUSC(texto)

El argumento "text" (entre paréntesis) hace referencia al texto que desea convertir a mayúscula. MAYUSC no cambia los
caracteres del texto que no sean letras.

Función MINUSC Convierte todas las letras en mayúscula en una cadena de texto a minúscula.

Sintaxis

MINUSC(texto)
El argumento "text" (entre paréntesis) hace referencia al texto que desea convertir a minúscula. MINUSC no cambia los
caracteres del texto que no sean letras.

Función NOMPROPIO Aplica mayúscula a la primera letra en una cadena de texto y en cualquier otra letra en el texto que
esté después de cualquier carácter que no sea una letra. Convierte todas las demás letras a letras minúsculas.

Sintaxis

NOMPROPIO(texto)

El argumento "text" (entre paréntesis) hace referencia al texto encerrado entre comillas, una fórmula que devuelve texto o un a
referencia a una celda que contiene el texto al cual desea aplicar mayúscula de forma parcial.

Para obtener más información sobre el uso de estas funciones, vea los temas sobre las funciones MAYUSC , MINUSC y
NOMPROPIO.

En este artículo, se describen la sintaxis de la fórmula y el uso de la función CONSULTAV en Microsoft Excel.

$

Puede usar la función CONSULTAV para buscar la primera columna de un rango de celdas y, a continuación, devolver un valor
de cualquier celda de la misma fila del rango. Por ejemplo, si tiene una lista de empleados contenida en el rango A2:C10, los
números de identificación de los empleados se almacenan en la p rimera columna del rango, como muestra la siguiente
ilustración.

Si conoce el número de identificación del empleado, puede usar la función CONSULTAV para devolver el departamento o el
nombre de dicho empleado. Para obtener el nombre del empleado número 38, puede usar la fórmula =CONSULTAV(38;
A2:C10; 3; FALSO). Esta fórmula busca el valor 38 en la primera columna del rango A2:C10 y, a continuación, de vuelve el valor
contenido en la tercera columna del rango y en la misma fila que el valor de búsqueda ("Juan Carlos Rivas").

La V de CONSULTAV significa vertical. Use CONSULTAV en lugar de CONSULTAH si los valores de comparación se encuentran
en una columna situada a la izquierda de los datos que desea buscar.

Sintaxis
^ 

  

 


  
 
 ! 

La sintaxis de la función CONSULTAV tiene los siguientes argumentos:

{ valor_buscado Obligatorio. Valor que se va a buscar en la primera columna de la tabla o rango. El a rgumento Ô  
puede ser un valor o una referencia. Si el valor que proporcione para el argumento Ô   es inferior al menor valor de
la primera columna del argumento
  , CONSULTAV devuelve al valor de error #N/A.
{ matriz_buscar_en Obligatorio. El rango de celdas que contiene los datos. Puede usar una referencia a un rango (por ejemplo,
A2:’8) o un nombre de rango. Los valores de la primera columna de
   son los valores que busca
Ô  . Estos valores pueden ser texto, números o valores lógicos. Las mayúsculas y minúsculas del texto son
equivalentes.
{ indicador_columnas Obligatorio. Un número de columna del argumento
   desde la cual debe devolverse el
valor coincidente. Si el argumento   
  es igual a 1, la función devuelve el valor de la primera columna del
argumento
  ; si el argumento   
  es igual a 2, devuelve el valor de la segunda columna de

   y así sucesivamente.

Si el argumento   
  es:

{ Inferior a 1, CONSULTAV devuelve al valor de error #¡VALOR!.


{ Superior al número de columnas de
  , CONSULTAV devuelve el valor de error #¡REF!.

{ ordenado Opcional. Un valor lógico que especifica si CONSULTAV va a buscar una coincidencia exacta o aproximada:
Si ordenado?se omite o es VERDADERO, se devolverá una coincidencia exacta o aproximada. Si no encuentra
ninguna coincidencia exacta, devolverá el siguiente valor más alto inferior a Ô  .

IMPORTANTE Si    se omite o es VERDADERO, los valores de la primera columna de


  
deben estar clasificados según un criterio de ordenación ascendente; en caso contrario, es posible que
CONSULTAV no devuelva el valor correcto.

Para obtener más información, vea Ordenar datos en un rango o tabla .

Si    es FALSO, no es necesario ordenar los valores de la primera columna de


  .

{ Si el argumento    es FALSO, CONSULTAV sólo buscará una coincidencia exacta. Si hay dos o más valores en la
primera columna de
   que coinciden con el argumento Ô  , se usará el primer valor
encontrado. Si no se encuentra una coincidencia exacta, se devolverá el valor de error #N/A.

Observaciones

{ Al buscar valores de texto en la primera columna de


  , asegúrese de que los datos de la primera columna de

   no tienen espacios al principio ni al final, de que no hay un uso incoherente de las comillas rectas ( ' o " ) ni
tipográficas ( ¶ o ´) y de que no hay caracteres no imprimibles. En estos casos, CONSULTAV puede devolver un valor inesperado
o incorrecto.

Para obtener más información, vea Función LIMPIAR y Función RECORTAR.

{ Al buscar valores de fechas o números, asegúrese de que los datos de la primera columna de
   no se
almacenen como valores de texto, ya que, en ese caso, CONSULTAV puede devolver un valor incorrecto o inesperado.
{ Si ordenado es FALSO y Ô   es un valor de texto, se pueden usar los caracteres comodín de signo de
interrogación (?) y asterisco (*) en el argumento Ô  . El signo de interrogación corresponde a un solo carácter
cualquiera y el asterisco equivale a cualquier secuencia de caracteres. Si lo que desea buscar es un signo de interrogación o un
asterisco, escriba una tilde ( Ž) antes del carácter.

emplo

emplo 1

En este ejemplo, se busca en la columna Densidad de una tabla de propiedades atmosféricas los valores correspondientes de las
columnas Viscosidad y Temperatura (los valores se refieren a aire a 0 grados Celsius al nivel del mar, o 1 atmósfera).

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.

¿Cómo copio un ejemplo?

  
       Ñ


 0,457 3,55 500

0,525 3,25 400


!

0,606 2,93 300


"
0,675 2,75 250
$
0,746 2,57 200
%
0,835 2,38 150

0,946 2,17 100


1,09 1,95 50


1,29 1,71 0

 c
     
 

 üCONSULTAV(1;A2:C10;2) Usando una coincidencia aproximada, busca el valor 1 en la 2,17


columna A, busca el mayor de los valores que sea inferior o
igual a 1 en la columna A, que es 0,946, y después devuelve

el valor de la columna B en la misma fila.






üCONSULTAV(1;A2:C10;3;VERDADERO) Usando una coincidencia aproximada, busca el valor 1 en la 100
columna A, busca el mayor de los valores que sea inferior o
igual a 1 en la columna A, que es 0,946, y después devuelve

el valor de la columna C en la misma fila.





!
üCONSULTAV(0,7;A2:C10;3;FALSO) Usando una coincidencia exacta, busca el valor 0,7 en la #N/A
columna A. Como en la columna A no hay ninguna
coincidencia exacta, devuelve un error.



"
üCONSULTAV(0,1;A2:C10;2;VERDADERO)Usando una coincidencia aproximada, busca el valor 0,1 en #N/A
la columna A. Como 0,1 es inferior al menor de los valores de
la columna A, devuelve un error.




$
 üCONSULTAV(2;A2:C10;2;VERDADERO) Usando una coincidencia aproximada, busca el valor 2 en la 1,71
 columna A, busca el mayor de los valores que sea inferior o
igual a 2 en la columna A, que es 1,29, y después devuelve el

valor de la columna B en la misma fila.



%

NOTA En Excel Web App, para ver el resultado en el formado adecuado, seleccione la celda y, a continuación, en el grupo
Número de la pestaña Inicio, haga clic en la flecha que aparece junto a Formato de número y haga clic en General.

emplo 2

En este ejemplo, se buscan valores en la columna Id. de artículo de una tabla de productos para bebés y se les asignan los
valores correspondientes de las columnas Costo y Marcas para calcular los precios y las condiciones de prueba.

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en b lanco.

¿Cómo copio un ejemplo?

   


 
     


ST-340 Cochecito 145,67 $ 30%


!

BI-567 Babero 3,56 $ 40%


"
DI-328 Pañales 21,45 $ 35%
$
WI-989 Toallitas 5,12 $ 40%
%
AS-469 Aspirador 2,56 $ 45%


c
     
 


ü CONSULTAV("DI-328"; A2:D6; 3; FALSO) * (1 + Calcula el precio minorista de los pañales 28,96 $ ?

CONSULTAV("DI-328"; A2:D6; 4; FALSO)) agregando el porcentaje marcado al costo.



 ü (CONSULTAV("WI-989"; A2:D6; 3; FALSO) * (1 + Calcula el precio de venta de las toallitas 5,73 $ ?


 CONSULTAV("WI-989"; A2:D6; 4; FALSO))) * (1 - restando un descuento especificado al
 20%) precio minorista.


ü SI(CONSULTAV(A2; A2:D6; 3; FALSO) >ü 20; "La Si el costo de un artículo es superior o igual La marca ?
marca es " & 100 * CONSULTAV(A2; A2:D6; 4; a 20,00 $, muestra la cadena "La marca es es 30%

FALSO) &"%", "El costo es inferior a 20,00 $") ~~%"; en caso contrario, muestra "El costo

es inferior a 20,00 $".




 ü SI(CONSULTAV(A3; A2:D6; 3; FALSO) >ü 20; "La Si el costo de un artículo es superior o igual El costo ?
 marca es: " & 100 * CONSULTAV(A3; A2:D6; 4; a 20,00 $, muestra la cadena "La marca es es 3,56 $
FALSO) &"%"; "El costo es $" & CONSULTAV(A3; ~~%"; en caso contrario, muestra el costo "El

A2:D6; 3; FALSO)) costo es ~ ~~ $".





NOTA En Excel Web App, para ver el resultado en el formado adecuado, seleccione la celda y, a continuación, en el grupo
Número de la pestaña Inicio, haga clic en la flecha que aparece junto a Formato de número y haga clic en General.

emplo 3

En este ejemplo, se busca en la columna Id. de una tabla de empleados y se buscan los valores coincidentes de otras columnas
para calcular las edades y probar las condiciones de error.

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.

¿Cómo copio un ejemplo?

    

    ñ  "


 c 

  


1 Cornejo Cecilia Rep. de ventas 8 de


 diciembre
 de 1968

 2 López Arturo Vicepresidente 19 de


! de ventas febrero de
1952


3 González Nuria Rep. de ventas 30 de
" agosto de
1963

$ 4 Escolar Jesús Rep. de ventas 19 de
septiembre
de 1958

%
5 Navarro Tomás Jefe de ventas 4 de marzo
de 1955

 6 Gil Enrique Rep. de ventas 2 de julio de
1963

c
     
  ? ?
 üENTERO(FRAC.AÑO(FECHA(2004;6;30); Para el año fiscal 2004, 49 ? ?
 CONSULTAV(5;A2:E7;5; FALSO); 1)) busca la edad de un
empleado cuya id. es 5.

Usa la función

c&º para restar
 la fecha de nacimiento
 de la fecha final del año
 fiscal y muestra el
resultado como un
entero usando la función
ñѺ.

 üSI(ESNOD(CONSULTAV(5;A2:E7;2;FALSO)) ü Si hay un empleado Navarro ? ?


VERDADERO; "Empleado no encontrado"; cuya id. es 5, muestra

CONSULTAV(5;A2:E7;2;FALSO)) sus apellidos; en el caso

contrario, muestra el
 mensaje "Empleado no
 encontrado".
 La función ñº
 devuelve el valor
 VERDADERO si la
función ºñÑ

devuelve el valor de
error #NA.

 üSI(ESNOD(CONSULTAV(15;A3:E8;2;FALSO)) ü Si hay un empleado Empleado no ? ?



VERDADERO; "Empleado no encontrado"; cuya id. es 15, muestra encontrado
CONSULTAV(15;A3:E8;2;FALSO)) sus apellidos; en el caso

contrario, muestra el
 mensaje "Empleado no
 encontrado".

 La función ñº
 devuelve el valor
VERDADERO si la

función ºñÑ
 devuelve el valor de
error #NA.
 üCONSULTAV(4;A2:E7;3;FALSO) & " " & Para un empleado cuya Jesús Escolar ? ?
 CONSULTAV(4;A2:E7;2;FALSO) & " es un " & id. es 4, concatena los es un
CONSULTAV(4;A2:E7;4;FALSO) valores de tres celdas representante

para formar una frase de ventas.

completa.



NOTA En Excel Web App, para ver el resultado en el formado adecuado, seleccione la celda y, a continuación, en el grupo
Número de la pestaña Inicio, haga clic en la flecha que aparece junto a Formato de número y haga clic en General.

En este artículo se describen la sintaxis de la fórmula y el uso de la función ½USCAR en Microsoft Excel.

’escripción

La función ½USCAR devuelve un valor de un rango de una fila o una columna o de una matriz. La función ½USCAR tiene dos
formas de sintaxis: la forma vectorial y la matricial.

   º

Buscar en un rango de una fila o una columna (denominado c ? Use la forma vectorial cuando disponga de una amplia lista
vector) un valor y devolver un valor desde la misma posición   de valores en los que buscar o cuando es posible que los
en un segundo rango. valores cambien con el tiempo.

Buscar el valor especificado en la primera fila o columna de c ? Use esta forma cuando disponga de una pequeña lista de
una matriz y devolver un valor desde la misma posición en la  valores y éstos permanezcan siempre constantes .
última fila o columna de la matriz.
NOTAS

{ También se puede usar la función ½USCAR como alternativa para la función SI para crear pruebas o pruebas que excedan el
límite de funciones anidadas. Vea los ejemplos de la forma matricial.
{ Para que la función ½USCAR funcione correctamente, los datos en los que se realiza la búsqueda se deben colocar en orden
ascendente. Si esto no es posible, considere la posibilidad de usar las funciones BUSCARV , BUSCARH o COINCIDIR.

Forma vectorial

Un vector es un rango de una sola fila o columna. La forma vectorial de ½USCAR busca un valor en un rango de una columna o
una fila (denominado vector) y devuelve un valor desde la misma posición en un segundo rango de una columna o una fila. Use
esta forma de la función ½USCAR cuando desee especificar el rango que incluya los valores que desea buscar. La otra forma de
la función ½USCAR busca automáticamente en la primera columna o fila.

Sintaxis
½^"

    

#    
 ! 

La sintaxis de la forma vectorial de la función ½USCAR tiene los siguientes argumentos:

{ valor_buscado Obligatorio. Valor que busca la función ½USCAR en el primer vector. V   puede ser un número,
texto, un valor lógico o un nombre de referencia que se refiere a un valor.
{ vector_de_comparación Obligatorio. Rango que sólo contiene una fila o una columna. Los valores del
Ô  
    pueden ser texto, números o valores lógicos.

IMPORTANTE Los valores del Ô  


    se deben colocar en orden ascendente: ..., -2, -1, 0, 1, 2, ..., A-Z,
FALSO, VERDADERO; de lo contrario, ½USCAR puede devolver un valor incorrecto. El texto en mayúsculas y en
minúsculas es equivalente.

{ vector_resultado Opcional. Rango que solo incluye una fila o una columna. El argumento Ô   debe tener el
mismo tamaño que Ô  
   .

Observaciones

{ Si la función ½USCAR no puede encontrar el Ô  , la función muestra el valor más grande en Ô  
   
que es menor o igual al Ô  .
{ Si el Ô   es menor que el menor valor del Ô  
   , ½USCAR devuelve el valor de error #N/A.

emplo

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.

¿Cómo copio un ejemplo?

  


c
    


4,14 rojo

! 4,19 anaranjado

" 5,17 amarillo

$ 5,77 verde
% 6,39 azul

 c
     
 

üBUSCAR(4,19;A2:A6;B2:B6) Busca 4,19 en la columna A y devuelve el valor de la columna B que está en la anaranjado

misma fila.


üBUSCAR(5,00;A2:A6;B2:B6) Busca 5,00 en la columna A, encuentra el siguiente valor inferior (4,19) y anaranjado
 devuelve el valor de la columna B que está en la misma fila.


üBUSCAR(7,66;A2:A6;B2:B6) Busca 7,66 en la columna A, encuentra el siguiente valor inferior (6,39) y azul
 devuelve el valor de la columna B que está en la misma fila.


üBUSCAR(0;A2:A6;B2:B6) Busca 0 en la columna A y devuelve un error, ya que 0 es menor que el valor #N/A
más bajo del vector_de_comparación A2:A7.




$)|$*+?&|?,+ -. , )

Forma matricial

La forma matricial de ½USCAR busca el valor especificado en la primera fila o columna de una matriz y devuelve un valor de la
misma posición en la última fila o columna de la matriz. Use esta for ma de ½USCAR cuando los valores que desea buscar están
en la primera fila o columna de la matriz. Use la otra forma de ½USCAR cuando desea especificar la ubicación de la columna o
fila.

SUGERENCIA En general, es mejor usar las funciones ½USCARH o ½USCARV en lugar de la forma matricial de ½USCAR. Esta
forma de ½USCAR se proporciona por cuestiones de compatibilidad con otros programas de hojas de cálculo.

Sintaxis
½^"

 
 ! 

La sintaxis de la forma matricial de la función ½USCAR tiene estos argumentos:

{ valor_buscado Obligatorio. Valor que busca la función ½USCAR en una matriz. El argumento Ô   puede ser un
número, texto, un valor lógico o un nombre de referencia que se refiere a un valor.
Si ½USCAR no puede encontrar el valor de Ô  , usa el mayor valor de la matriz que es menor o igual que
el Ô  .
Si el valor de Ô   es menor que el menor valor de la primera fila o columna (según las dimensiones de la
matriz), ½USCAR devuelve el valor de error #N/A.
{ matriz Obligatorio. Rango de celdas que contiene texto, números o valores lógicos que desea comparar con valor_buscado.

La forma matricial de ½USCAR es muy similar a las funciones ½USCARH y ½USCARV. La diferencia es que ½USCARH
busca el valor de Ô   en la primera fila, ½USCARV busca en la primera columna y ½USCAR realiza la
búsqueda según las dimensiones de la matriz.

{ Si la matriz cubre un área que es más ancha que alta (más columnas que filas), ½USCAR busca el valor de Ô  
en la primera fila.
{ Si una matriz es cuadrada o más alta que ancha (tiene más filas que columnas), ½USCAR busca en la primera columna.
{ Con las funciones ½USCARH y ½USCARV, puede especificar un índice en vertical o en horizontal, pero ½USCAR siempre
selecciona el último valor de la fila o columna.
IMPORTANTE Los valores de la matriz se deben colocar en orden ascendente: ..., -2, -1, 0, 1, 2, ..., A-Z, FALSO,
VERDADERO; de lo contrario, ½USCAR puede devolver un valor incorrecto. El texto en mayúsculas y en minúsculas es
equivalente.

emplos

 
??

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.

¿Cómo copio un ejemplo?

{ Seleccione el ejemplo de este artículo.

IMPORTANTE No seleccione los encabezados de columna o de fila.

Seleccionar un ejemplo de la Ayuda

{ Presione CTRL+C.
{ En Excel, cree una hoja de cálculo o un libro en blanco.
{ En la hoja de cálculo, seleccione la celda A1 y presione CTRL+V.

IMPORTANTE Para que el ejemplo funcione correctamente, debe pegarlo en la celda A1 de la hoja de cálculo.

{ Para cambiar entre ver los resultados y ver las fórmulas que devuelven los resultados, presione Alt+º, o en la ficha Fórmulas, en
el grupo Auditoría de fórmulas, haga clic en el botón Mostrar fórmulas.

Después de copiar el ejemplo en una hoja de cálculo en blanco, puede adaptarlo a sus necesidades.

  

 c
     
 

 üBUSCAR("C";{"a";"b";"c";"d"\1;2;3;4}) Busca "C" en la primera fila de la matriz, encuentra el valor superior que 3
 es menor o igual ("c") y, a continuación, devuelve el valor en la última fila
 que está en la misma columna.


 üBUSCAR("balda";{"a";1\"b";2\"c";3}) Busca "balda" en la primera fila de la matriz, encuentra el valor superior 2


 que es menor o igual ("b") y, a continuación, devuelve el valor en la
 última columna que está en la misma fila.
!

 
??

En el siguiente ejemplo se usa una matriz de números para asignar una puntuación a un resultado.
El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.

¿Cómo copio un ejemplo?

  


"

 


45

!
90

" 78

$ c
     
 

 üBUSCAR(A2;{0;60;70;80;90};{"F";"D";"C";"B";"A"}) Busca el valor de A2 (45) en la primera F


 fila de la matriz, encuentra el valor
superior que es menor o igual (0) y, a

continuación, devuelve el valor en la

última fila de la matriz que está en la
 misma columna.
%

 üBUSCAR(A3;{0;60;70;80;90};{"F";"D";"C";"B";"A"}) Busca el valor de A3 (90) en la primera A


 fila de la matriz, encuentra el valor
superior que es menor o igual (90) y, a

continuación, devuelve el valor en la
 última fila de la matriz que está en la
 misma columna.


 üBUSCAR(A4;{0;60;70;80;90};{"F";"D";"C";"B";"A"}) Busca el valor de A4 (78) en la primera C


fila de la matriz, encuentra el valor

superior que es menor o igual (70) y, a

continuación, devuelve el valor en la
 última fila de la matriz que está en la
 misma columna.

 üBUSCAR(A2;{0;60;63;67;70;73;77;80;83;87;90;93;97};{"F";"D - Busca el valor de A2 (45) en la primera F
 ";"D";"D+";"C -";"C";"C+";"B-";"B";"B+";"A-";"A";"A+"}) fila de la matriz, encuentra el valor
superior que es menor o igual (0) y, a

continuación, devuelve el valor en la

última fila de la matriz que está en la
 misma columna.


 üBUSCAR(A3;{0;60;63;67;70;73;77;80;83;87;90;93;97};{"F";"D - Busca el valor de A3 (90) en la primera A-


";"D";"D+";"C -";"C";"C+";"B-";"B";"B+";"A-";"A";"A+"}) fila de la matriz, encuentra el valor

superior que es menor o igual (90) y, a

continuación, devuelve el valor en la
 última fila que está en la misma
 columna.

 üBUSCAR(A4;{0;60;63;67;70;73;77;80;83;87;90;93;97};{"F";"D - Busca el valor de A4 (78) en la primera C+


";"D";"D+";"C -";"C";"C+";"B-";"B";"B+";"A-";"A";"A+"}) fila de la matriz, encuentra el valor

superior que es menor o igual (77) y, a

continuación, devuelve el valor en la
 última fila que está en la misma
 columna.

$)|$*+?&|?,+ -. , )

¿Le resultó este artículo de ayuda?

?
?

Mostrar todo

En este artículo se describe la sintaxis de la fórmula y el uso de la función SUMAR.SI.CONJUNTO de Microsoft Excel.

’escripción

Agrega las celdas de un rango que cumpla con varios criterios. Por ejemplo, si desea sumar los números del rango A1:A20 sólo
si los números de B1:B20 correspondientes son mayores que cero (0) y los números de C1:C20 correspondientes son menores
que 10, puede usar la siguiente fórmula:

ü$"%&%^ ' ()*+½()½*+,-+,^()^*+,.(+,! 

IMPORTANTE El orden de los argumentos es diferente entre las funciones SUMAR.SI.CONJUNTO y SUMAR.SI.
Concretamente, el argumento  
es el primer argumento de SUMAR.SI.CONJUNTO, pero es el tercero de
SUMAR.SI. Si está copiando o editando estas funciones similares, asegúrese de poner los argumentos en el orden correcto.

Sintaxis
$"%&%^ ' 
/ 

/    (   (

/    *   * %%%! 

La sintaxis de la función SUMAR.SI.CONJUNTO tiene los siguientes argumentos:

{ rango_suma Obligatorio. Una o más celdas para sumar, incluidos números o nombres, rangos o referencias de celda que
contengan números. Se omiten los valores en blanco o de texto.
{ rango_criterios1 Obligatorio. El primer rango en el que se evalúan los criterios asociados.
{ criterios1 Obligatorio. Los criterios en forma de número, expresión, referencia de celda o texto que de fine qué celdas del
argumento     se agregarán. Por ejemplo, los criterios se pueden expresar como 32, ">32", B4, "manzanas" o "32".
{ rango_criterios2; criterios2; ¬ Opcional. Rangos adicionales y sus criterios asociados. Se permiten hasta 1 27 pares de
rangos/criterios.
Observaciones

{ Las celdas del argumento  


se suman sólo si se cumplen los criterios correspondientes especificados para esa celda.
Por ejemplo, supongamos que una fórmula contiene dos argumentos    . Si la primera celda de    
cumple con    y la primera celda de     cumple con   , se agrega la primera celda de  

a la suma y así sucesivamente para todas las celdas restantes de los rangos especificados .
{ Las celdas del argumento  
que contienen VERDADERO se evalúan como 1; las celdas de  
que
contienen FALSO se evalúan como 0 (cero).
{ A diferencia de los argumentos rango y criterios de la función SUMAR.SI, en la función SUMAR.SI.CONJUNTO, cada
argumento     debe contener el mismo número de filas y columnas que el argumento  
.
{ Puede usar caracteres comodín como el signo de interrogación () y el asterisco ( ) en los criterios. Un signo de interrogación
coincide con un carácter individual, un asterisco coincide con una secuencia de caracteres. Si desea buscar un signo de
interrogación o un asterisco, escriba una tilde ( Ž) antes del carácter.

emplos

emplo 1

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.

¿Cómo copio un ejemplo?

   

    " 


 

! 5 Manzanas 1

" 4 Manzanas 2

15 Alcachofas 1
$

3 Alcachofas 2
%

22 Bananas 1

12 Bananas 2

10 Zanahorias 1

33 Zanahorias 2


c
     
 


üSUMAR.SI.CONJUNTO(A2:A9; B2:B9; "üA*"; Agrega la cantidad total de productos vendidos que 20

C2:C9; 1) comienzan con "A" y fueron vendidos por el vendedor 1.



üSUMAR.SI.CONJUNTO(A2:A9; B2:B9; Agrega la cantidad total de productos (sin incluir bananas) 30


 "<>Bananas"; C2:C9; 1) vendidos por el vendedor 1.



emplo 2: Agregar importes de cuentas bancarias sobre la base del interés
pagado

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.

¿Cómo copio un ejemplo?


    


Ñ  
  
  
 ! 
 "


Cantidad en dólares 100 390 8321 500



!
Interés pagado (2000) 1% 0,5% 3% 4%

 Interés pagado (2001) 1% 1,3% 2,1% 2%


"
Interés pagado (2002) 0,5% 3% 1% 4%

$ c
     
 

% üSUMAR.SI.CONJUNTO(B2:E2; B3:E3; Importes totales de cada una de las cuentas 500


">3%"; B4:E4; ">ü2%") bancarias en las que el interés era mayor que
3% para el año 2000 y mayor o igual que 2%

para el año 2001.








üSUMAR.SI.CONJUNTO(B2:E2; B5:E5; Importes totales de cada una de las cuentas 8711


">ü1%"; B5:E5; "<ü3%"; B4:E4; ">1%") bancarias en las que el interés era entre 1% y
3% para el año 2002 y mayor que 1% para el
 año 2001.








emplo 3: Agregar las lluvias de días concretos

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.

¿Cómo copio un ejemplo?


     


    "  


  Ñ 
 
   

Lluvia (pulgadas totales) 3,3 0,8 5,5 5,5

 Temperatura promedio (grados) 55 39 39 57,5
!

Velocidad promedio del viento 6,5 19,5 6 6,5


 (millas por hora)

" c
     
 

$ üSUMAR.SI.CONJUNTO(B2:E2; Agrega la cantidad total de lluvia de los días en que la 8,8


B3:E3; ">ü40"; B4:E4; "<10") temperatura promedio era de al menos 40° Fahrenheit y la
velocidad promedio del viento era menor de 10 millas por

hora.

Sólo se suman las celdas B2 y E2 porque, para cada
 columna (de B a E), los val ores de las filas 3 y 4 deben
 cumplir con los criterios1 y los criterios2 respectivamente.
 Las celdas B3 y B4 cumplen con ambos criterios, al igual
 que E3 y E4. Sin embargo, C3 y C4 no cumplen con
 ninguno de los criterios. Por último, aunque D4 cumple con
los criterios2, D3 no cumple con los criterios1.













%

emplo 4: Agregar lluvia para los períodos de mañana y tarde de días específicos

Este ejemplo se basa en los datos del Ejemplo 3 y separa la lluvia, las temperaturas promedio y la velocidad promedio del viento
en dos períodos de 12 horas para cada día.

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.
¿Cómo copio un ejemplo?




    


    "  
  Ñ  
 
  


a.m.: lluvia (pulgadas totales) 1,3 0 1,5 3
!

p.m.: lluvia (pulgadas totales) 2 0,8 4 2,5




" a.m.: temperatura promedio (grados) 56 44 40 38

 p.m.: temperatura promedio (grados) 54 34 38 77



$ a.m.: velocidad promedio del viento 13 6 8 1
(millas por hora)


 p.m.: velocidad promedio del viento 0 33 4 12
% (millas por hora)

 c
     
 




 üSUMAR.SI.CONJUNTO(B2:E3; Agrega la cantidad total de lluvias para los períodos de 3,5
 B4:E5; ">ü40"; B6:E7; "<10") 12 horas en los que la temperatura promedio era de al
 menos 40° Fahrenheit y la velocidad promedio del viento
era menor de 10 millas por hora.

Sólo se suman las celdas B3, C2, y D2, ya que sus
 celdas correspondientes cumplen con ambos criterios .
 Las celdas correspondientes de B3 son B5 y B7, las
 celdas correspondientes de C2 son C4 y C6, y las celdas
 correspondientes de D2 son D4 y D6.

Como ejemplo de los datos excluidos de la operación, las

celdas correspondientes de B2 (B4 y B6) no cumplen con
 ambos criterios; concretamente, la celda B6 se excluye
 porque su valor (13) es mayor que el valor del argumento
 criterios2 (10).















emplo 5: scribir criterios como una referencia o mediante caracteres comodín

El ejemplo será más fácil de entender si lo copia en una hoja de cálculo en blanco.

¿Cómo copio un ejemplo?

     c '

        '   "




     

  

 Casa1 1200 2 1 sí 1940 $125.0


00
! Casa2 1580 3 1,5 no 1965 $217.0
00

"
Casa3 2200 4 3 sí 2003 $376.0
00
$
Casa4 1750 3 2,5 sí 2001 $249.0
% 00

 Casa5 2140 4 3 sí 1998 $199.0


00

 ü">"&DECIMAL(SUMA(1;1);0) ü"sí" ü"s*"

 c
    
  ? ?
 

 üSUMAR.SI.CONJUNTO(G2:G6;C2:C6;A7;E2:E6;B7;F2:F6;">1999"; Suma los 625000 ? ?
 F2:F6;"<2004") precios de
las casas
que
tengan al
menos 3
dormitorio
s, un
garaje y
que
 tengan
 entre 5 y
 10 años
 de
 antigüeda
d en el

año 2009.

üPROMEDIO.SI.CONJUNTO(G2:G6;C2:C6;">2";E2:E6;C7;F2:F6;"> Devuelve 312500 ? ?


1999";F2:F6;"<2004") el precio
promedio
de las
casas que
tengan al
menos 3
dormitorio
s, un
garaje y
que
tengan
entre 5 y
10 años
de
antigüeda
d en el
año 2009.

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