FÓRMULAS VARIAS

50
FÓRMULAS VARIAS Página inicial 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 en Excel 2003 (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_jrgc ARROBA yahoo.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 este enlace.  En Excel 2010 Microsoft ha cambiado el nombre de algunas funciones. Una tabla con los cambios más notables puede consultarse aquí . ACTUALIZACIÓN JUNIO DE 2011: con el lanzamiento del Service Pack 1 para Office 2010, Microsoft se ha corregido a sí misma y ha revertido los cambios de nombres de funciones. Poner en una celda el nombre del libro: [Ejemplo] =EXTRAE(CELDA("nombrearchivo");ENCONTRAR("[";CELDA("nombrearchivo"))+1;ENCONTRAR( "]";CELDA("nombrearchivo"))-ENCONTRAR("[";CELDA("nombrearchivo"))-1)  Nota: para que esto funcione es necesario haber guardado el libro al menos una vez.  Poner en una celda el nombre de la hoja: [Ejemplo] =EXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("]";CELDA("nombrearchivo";A1))+1;32)  Si el libro tiene una sola hoja y además libro y hoja se llaman igual, es necesario complicar bastante la fórmula: [Ejemplo] =SI(ESERROR(EXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("]";CELDA("nombrearchivo"; A1))+1;32));EXTRAE(SUSTITUIR(CELDA("nombrearchivo";A1);"\";"*";LARGO(CELDA("nombrearc hivo";A1))- LARGO(SUSTITUIR(CELDA("nombrearchivo";A1);"\";"")));ENCONTRAR("*";SUSTITUIR(CELDA("n ombrearchivo";A1);"\";"*";LARGO(CELDA("nombrearchivo";A1))- LARGO(SUSTITUIR(CELDA("nombrearchivo";A1);"\";""))))+1;32);EXTRAE(CELDA("nombrearchivo ";A1);ENCONTRAR("]";CELDA("nombrearchivo";A1))+1;32))  Saber la edad exacta (o cualquier otro período de tiempo) expresada en años, meses y días: [Ejemplo] =SIFECHA(A1;HOY();"y") & " años " & SIFECHA(A1;HOY();"ym") & " meses " & SIFECHA(A1;HOY();"md") & " días"  

Transcript of FÓRMULAS VARIAS

Page 1: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 1/50

 

FÓRMULAS VARIAS

Página inicial 

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 almismo 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 concolumnas completas en Excel 2003 (pero sí con filas completas) y, además, convieneajustar al máximo los rangos que se le pasan como argumentos a esta función porqueevalúa todas las celdas de dichos rangos, estén o no vacías. Esta misma recomendaciónes válida también para las fórmulas matriciales. 

Algunas fórmulas son bastante complejas de forma que, a pesar de que las he probadovarias veces antes de ponerlas aquí, pudiera darse el caso de que no funcionaran bien entodas las situaciones. Si encuentras alguno de estos casos, puedes notificármelo a lasiguiente dirección de correo electrónico: excel_jrgc ARROBA yahoo.es, e intentaréarreglarlo. 

En esta página están todas las fórmulas sin un orden en concreto. Hay un índice por temasen este enlace. 

En Excel 2010 Microsoft ha cambiado el nombre de algunas funciones. Una tabla con loscambios más notables puede consultarse aquí . ACTUALIZACIÓN JUNIO DE 2011: con ellanzamiento del Service Pack 1 para Office 2010, Microsoft se ha corregido a sí misma yha revertido los cambios de nombres de funciones. 

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

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

Poner en una celda el nombre de la hoja: [Ejemplo] =EXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("]";CELDA("nombrearchivo";A1))+1;32) 

Si el libro tiene una sola hoja y además libro y hoja se llaman igual, es necesario complicarbastante la fórmula: [Ejemplo] 

=SI(ESERROR(EXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("]";CELDA("nombrearchivo";A1))+1;32));EXTRAE(SUSTITUIR(CELDA("nombrearchivo";A1);"\";"*";LARGO(CELDA("nombrearchivo";A1))-

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

Saber la edad exacta (o cualquier otro período de tiempo) expresada en años, meses ydías: [Ejemplo] =SIFECHA(A1;HOY();"y") & " años " & SIFECHA(A1;HOY();"ym") & " meses " &SIFECHA(A1;HOY();"md") & " días" 

Page 2: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 2/50

 

(suponiendo que la fecha de nacimiento estuviera en A1 y que se quisiera saber la edad a fecha dehoy). 

Si no se desea que aparezcan incoherencias como, por ejemplo, "0 meses" o "1 días", se puedeusar una fórmula más compleja: =SI(SIFECHA(A1;HOY();"y")>0;SIFECHA(A1;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 ");"") 

Esta misma fórmula, con unas pequeñas modificaciones, sirve también para convertir en años,meses y días un número de días determinados (valgan como ejemplo los números de días quefiguran en los informes de vida laboral de la Seguridad Social española). Si el numero de días aconvertir está en A1 la fórmula sería: 

=SI(SIFECHA(--"1-1-1900";A1+2;"y")>0;SIFECHA(--"1-1-1900";A1+2;"y")&""&ELEGIR(MIN(SIFECHA(--"1-1-1900";A1+2;"y")+1;3);"";"año ";"años ");"")&SI(SIFECHA(--"1-1-1900";A1+2;"ym")>0;SIFECHA(--"1-1-1900";A1+2;"ym")&" "&ELEGIR(MIN(SIFECHA(--"1-1-

1900";A1+2;"ym")+1;3);"";"mes ";"meses ");"")&SI(SIFECHA(--"1-1-1900";A1+2;"md")>0;SIFECHA(--"1-1-1900";A1+2;"md")&" "&ELEGIR(MIN(SIFECHA(--"1-1-1900";A1+2;"md")+1;3);"";"día ";"días");"") 

Como curiosidad, en esta fórmula todos los +2 deberían ser +1. Esa unidad adicional es necesariaporque Excel, para no perder la compatibilidad, "heredó" un error procedente de Lotus 1-2-3, queerróneamente consideraba que el año 1900 fue bisiesto cuando en realidad no lo fue.

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

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

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

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

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

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

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

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

Nota 1: estas fórmulas sirven también, lógicamente, para sumar cada n filas o columnas. Porejemplo, para sumar cada 5 filas de una columna: {=SUMA((RESIDUO(FILA(A1:A100);5)=0)*A1:A100)} 

Saber el número de elementos distintos que hay en un rango: [Ejemplo] 

Page 3: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 3/50

 

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. 

Hallar la suma de los valores únicos en un rango: [Ejemplo] Si se necesita saber la suma de los valores únicos de un rango con nombre llamado Lista (es decir,sumando una sola vez cada valor aunque esté más de una vez en el rango), se puede usar lafó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, lafórmula las consideraría números. 

Mostrar los datos de una lista omitiendo los duplicados [Ejemplo] Suponiendo que en un rango con nombre llamado 'Lista' (de una sola columna y sin celdas vacías)hay un conjunto de datos uno o más de los cuales pueden estar repetidos, y que se necesita unalista 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:"&CONTARA(Lista)));COINCIDIR(Lista;Lista;0);"");FILA()))} 

La fórmula anterior habría que ponerla en la fila 1 de una columna cualquiera, y copiarla haciaabajo. 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 elnú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:"&CONTARA(Lista)));COINCIDIR(Lista;Lista;0);"");FILA()-4 ))} 

Si el rango con nombre 'Lista' estuviera dispuesto en una fila en lugar de en una columna, lasfórmulas serían: {=INDICE(Lista;K.ESIMO.MENOR(SI(TRANSPONER(COINCIDIR(Lista;Lista;0))=FILA(INDIRECTO

("1:"&CONTARA(Lista)));TRANSPONER(COINCIDIR(Lista;Lista;0));"");FILA()))} 

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

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

Page 4: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 4/50

 

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 demayor 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(DESREF(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. 

Números de puesto únicos. [Ejemplo] 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(INDIRECTO("1:"&SUMA(1/CONTAR.SI(Notas;Notas)))));0)} 

Sustituyendo K.ESIMO.MAYOR por K.ESIMO.MENOR es posible obtener los puestos únicos, perootorgándole a la nota más baja el puesto más alto y así con todas las demás. 

Averiguar los valores que faltan en una serie de números enteros [Ejemplo] Si se quiere un listado de los números que faltan en una serie de números enteros positivos llamada Lista, se podría usar la fórmula: 

{=K.ESIMO.MAYOR(SI(CONTAR.SI(Lista;FILA(INDIRECTO(MIN(Lista)&":"&MAX(Lista))))=0;FILA(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. Losnúmeros faltantes irían apareciendo de mayor a menor, y cuando no quedaran más númerosfaltantes, comenzarían a aparecer ceros. 

Si se necesitara que los números faltantes fueran apareciendo ordenados de menor a mayor, sepodría usar la fórmula: 

{=K.ESIMO.MENOR(SI(CONTAR.SI(Lista;FILA(INDIRECTO(MIN(Lista)&":"&MAX(Lista))))=0;FILA(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 lainversa, si bien el ejemplo lo está para mayor claridad. Tampoco sucede nada si uno o másnúmeros de la serie están repetidos. 

He recibido una consulta que plantea una situación interesante que me ha hecho escribir unanueva fórmula: se trata de averiguar qué números faltan en una serie cuyo número inicial es muygrande, por ejemplo 10010003456. 

Page 5: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 5/50

 

 

En este caso, las formulas anteriores fallarían porque no pueden procesar números superiores almáximo de filas de Excel (65.536 en la versión 2003, 1.048.576 a partir de la versión 2007), así queen 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úmeromás bajo. Otra ventaja de esta última fórmula es que puede procesar números enteros negativos ypositivos. El inconveniente es que es más compleja que la primera. 

Si se sabe que tan sólo falta un número en la serie de enteros positivos y que no hay repeticiones,es posible utilizar una fórmula más sencilla (aunque más interesante desde un punto de vistamatemático) para averiguar cual es el que falta. Por ejemplo, si en la columna A se encuentra laserie de números (y sólo la serie) sin repeticiones, la fórmula sería: 

=(MIN(A:A)+MAX(A:A))*(MAX(A:A)-MIN(A:A)+1)/2-SUMA(A:A) 

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

Contar y/o sumar las celdas cuyo valor se encuentra entre dos valores dados: [Ejemplo] =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 el número de celdas cuyo valor estuviera entre 5 y 15 en el rangoA1: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 la suma de los números cuyo valor estuvieran entre 5 y 15 en elrango A1:A25 

Contar las celdas de un determinado mes y año:  

=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 delañ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)) 

Sumar los X valores mayores o menores en una columna: [Ejemplo] {=SUMA(K.ESIMO.MAYOR(A1:A50;FILA(INDIRECTO("1:3"))))} o, usando SUMAPRODUCTO: =SUMAPRODUCTO(K.ESIMO.MAYOR(A1:A50;FILA(INDIRECTO("1:3")))) 

Page 6: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 6/50

 

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 

Nota: Las cuatro fórmulas siguientes son ejemplos que trabajan con el rango A1:A100.  Saber el número de la primera fila con datos en una columna:  

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

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

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

Saber el número de la última fila con datos en una columna:  

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

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

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

Nota: Las cuatro fórmulas siguientes son ejemplos que trabajan con el rango A1:Z1  

Averiguar el número de la primera columna con datos en una fila:  

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

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

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

Averiguar el número de la última columna con datos en una fila:  

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

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

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

Fórmulas para conocer el número de la primera o última fila cuyo valor es distinto de algo (osu valor): Imagen (13 kb) 

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 dosprimeras fórmulas por: 

Page 7: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 7/50

 

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

Averiguar el número de veces en que coinciden los valores de dos columnas  

Imagen (19 kb) 

En este ejemplo se necesita saber cuantas veces tienen el mismo valor ambas celdas de la mismafila. 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) 

Saber el valor mínimo o el valor máximo que hay en un rango a partir de un valor dado  

La función MIN devuelve el valor mínimo de un rango, pero si se necesita hallar el mínimo a partirde un número determinado (por ejemplo, excluyendo los ceros y números negativos), se puedeusar: {=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 puedeusar: {=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 a10. 

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

Si, por ejemplo, se desea averiguar la dirección de la celda en la que se encuentra el número111111 dentro del rango con nombre Datos, la fórmula sería: {=DIRECCION(COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;FILA(Datos)-CELDA("fila";Datos);0;1;);111111));0);COINCIDIR(1;SIGNO(CONTAR.SI(DESREF(Datos;;COLUMNA(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órmulapara una regla de validación. En Excel 2003 y versiones anteriores esto no es posible porque lasfórmulas necesarias superarían el límite de siete niveles de anidamiento permitidos. 

Conviene recordar que la función DIRECCION admite otros dos argumentos adicionales (tres enrealidad, pero el último no nos interesa en lo que concierne a esta fórmula): - dirección absoluta, relativa o una mezcla de ambas 

- estilo de referencia A1 (por defecto) o R1C1 (si se pone un 0 como último argumento) 

Fórmulas para averiguar el título de la columna o de la fila en que se encuentra el valormáximo o mínimo de un rango 

Imagen (28 kb) 

A partir del ejemplo, si se necesita:  El encabezado de la columna en que aparece por primera vez el valor mayor: 

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

Page 8: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 8/50

 

El encabezado de la columna en que aparece por última vez el valor mayor: {=INDICE(B1:D1;MAX((B2:D4=MAX(B2:D4))*COLUMNA(B2:D4))-1)} 

El encabezado de la columna en que aparece por primera vez el valor menor: {=INDICE(B1:D1;MIN(SI(MIN(B2:D4)=B2:D4;COLUMNA(B2:D4)))-1)} 

El encabezado de la columna en que aparece por última vez el valor menor: {=INDICE(B1:D1;MAX((B2:D4=MIN(B2:D4))*COLUMNA(B2:D4))-1)} 

El encabezado de la fila en que aparece por primera vez el valor mayor: {=INDICE(A2:A4;MIN(SI(MAX(B2:D4)=B2:D4;FILA(B2:D4)))-1)} 

El encabezado de la fila en que aparece por última vez el valor mayor: {=INDICE(A2:A4;MAX((B2:D4=MAX(B2:D4))*FILA(B2:D4))-1)} 

El encabezado de la fila en que aparece por primera vez el valor menor: {=INDICE(A2:A4;MIN(SI(MIN(B2:D4)=B2:D4;FILA(B2:D4)))-1)} 

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

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

Sumar las cantidades correspondientes a los últimos doce meses  

Suponiendo que en el rango A1:A50 hay una serie de fechas, en B1:B50 unos importescorrespondientes a cada una de dichas fechas, y que se necesitara saber la suma de los importescorrespondientes 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órmulasería: =SUMAPRODUCTO((A1:A50>=FECHA(AÑO(HOY())-1;MES(HOY())+1;1))*(A1:A50<FECHA(AÑO(HOY());MES(HOY());1));B1:B50) 

Totalizar por semanas los importes de una tabla de meses y días  

ver libro con un ejemplo (34 kb) 

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álculotenga un retardo perceptible. 

Calcular un descuento en función de un baremo y de la cantidad comprada o vendida  

Imagen (79 kb) 

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(hasta Excel 2003). 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órmulamatricial: {=SI(D2>0;SI(D2>0;INDICE(B$2:B$11;MIN(SI((A$2:A$11>=D2);FILA(A$2:A$11)-1));1);0);0)} 

Averiguar la fecha del domingo de Pascua de un año (entre 1900 y 2203)  

La siguiente fórmula devuelve la fecha del domingo de Pascua del año especificado en A1. Suautor es Thomas Jansen. Fue presentada a un concurso para encontrar la fórmula más corta para

Page 9: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 9/50

 

determinar el domingo de Pascua, que se desarrolló en el sitio web de Hans W. Herber(http://www.herber.de). 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, parael año 2008: =MONEDA((DIA(MINUTO(2008/38)/2+55)&"-4-" & 2008)/7;)*7-6 

Otra, un poco más larga: =MULTIPLO.INFERIOR(DIA(MINUTO(A1/38)/2+56)&"-5-"&A1;7)-34 

Nota: Pedro Wave me ha corregido amablemente el rango de fechas de estas fórmulas y meseñala que fallan para el año 2079. Sugiero visitar su blog en el que se trata el tema del cálculo deldomingo de Pascua en Excel de forma minuciosa. 

La celda en la que se ponga cualquiera de las dos fórmulas ha de tener formato de fecha, dadoque devuelven un número de serie. 

Averiguar cual es el siguiente año Jacobeo Para averiguar cual es el próximo año Jacobeo (el día 25 de julio es domingo), se puede usar lafórmula: {=AÑO(HOY())+COINCIDIR(VERDADERO;DIASEM(FECHA(AÑO(HOY())+FILA(INDIRECTO("1:11"))-1;7;25))=1;0)-1} 

Averiguar el valor máximo de la suma de las celdas de varias columnas (o filas)  

Por ejemplo, en el rango A1:C10 hay una serie de valores, y lo que se necesita es el valor máximode 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 valormá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.

Page 10: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 10/50

 

Contar y resumir datos filtrados [Ejemplo] Normalmente, las funciones de Excel para resumir o contar datos en base a criterios trabajaríancon la lista completa (a excepción de la función SUBTOTALES, que por defecto trabaja con losdatos visibles), pero Laurent Longre descubrió hace años una forma de usar la función DESREFque 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 deesta 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)  contar los valores únicos en el rango de valores filtrado (B2:B15 en el ejemplo): 

{=SUMA(SIGNO(FRECUENCIA(SI(SUBTOTALES(3;DESREF(B2:B15;FILA(B2:B15)-2;;1))>0;B2:B15);SI(SUBTOTALES(3;DESREF(B2:B15;FILA(B2:B15)-2;;1))>0;B2:B15)))} 

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 filtroactivo.";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 elfiltro, pero en la versiones siguientes es posible tener activa más de una condición al mismotiempo. La fórmula que devuelve una por una 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 filtroactivo.";INDICE(A2:A15;INDICE(K.ESIMO.MENOR(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:"&FILA

S(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íaque sustituir el -1 por dicho número. 

Hay disponible otro libro de ejemplo con esta fórmula, que sólo funcionará a partir de la versión 2007puesto que supera el límite de niveles de anidamiento permitidos hasta Excel 2003. 

Page 11: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 11/50

 

 

Fórmula que simula la función BUSCARV, pero buscando en dos columnas  

Imagen (19 kb) 

En el ejemplo se necesita averiguar el valor de la celda de la columna C en cuya fila la columna Atiene 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))} 

Averiguar la posición de la última aparición de un carácter en un texto  

La función HALLAR devuelve la posición en que aparece por primera vez un carácter dentro deuna cadena de texto, pero si se necesita saber la posición en que aparece por última vez se puedeusar 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 vaa estar en el texto. Por ejemplo, si se supiera con seguridad que no va a haber ningún cero sepodría usar: =ENCONTRAR("0";SUSTITUIR(A1;"b";"0";LARGO(A1)-LARGO(SUSTITUIR(A1;"b";"")))) 

Extraer los números situados a la derecha o a la izquierda en una cadena detexto.  [Ejemplo] 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(9,99999999999999E+307;1*(DERECHA(A1;FILA(INDIRECTO("1:"&LARGO(A1))))))} 

Para extraer el número situado a la izquierda (por ejemplo, extraer 9854 de la cadena 9854abcd),lo único que habría que hacer es sustituir DERECHA por IZQUIERDA. 

Estas fórmulas funcionarán con números con decimales, siempre que el separador decimal en lacadena de texto sea el mismo que el establecido en la configuración regional del equipo. 

Extraer un número de una cadena de texto [Ejemplo] Si se tiene que extraer un número de una cadena de texto situada en A1 pero la posición delnúmero no es fija, se puede usar la siguiente fórmula: {=EXTRAE(A1;COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));

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 valorpara poder operar numéricamente con él, lo único que habría que hacer es multiplicar por 1 elresultado (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 casosería posible convertir a hora la cadena de texto devuelta por la fórmula usando la función

Page 12: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 12/50

 

VALHORA (HORANUMERO en versiones anteriores a la 2010) o 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, porejemplo 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 tienendecimales), es posible utilizar una fórmula más sencilla: {=EXTRAE(A1;COINCIDIR(1;1*ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1));0);CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))} 

Extraer todos los caracteres numéricos de una cadena de texto [Ejemplo] <--Este ejemplosólo funciona en Excel 2007 y 2010 

Una complicación de la fórmula anterior sirve para extraer todos los caracteres numéricos de unacadena de texto, con la limitación de que tan sólo puede haber 14 caracteres numéricos, comomáximo, a la derecha del primer número que no sea cero. Es decir, la fórmula funcionará con, porejemplo, 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 15dígitos. 

Esta fórmula sólo funcionará a partir de la versión 2007 ya que supera los siete niveles deanidamiento permitidos como máximo hasta la versión 2003, y es posiblemente una de las más"desmesuradas" de las que hay en esta página, lo que quizás pueda resultar un poco sorprendenteporque, en principio, la tarea no parece muy complicada, pero en realidad para una sola fórmula sílo es: 

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

("1:"&LARGO(A1)));1))*(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)<>"0");0));"0";"")))&SUMA(EXTRAE(A1;K.ESIMO.MAYOR(ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10 (̂FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))))-1))} 

En la fórmula propuesta, a la expresión necesaria para extraer los números (a partir de SUMA), yade por sí bastante larga y complicada (282 caracteres), hay que anteponerle una aún más largaexpresión adicional (299 caracteres) para contar los posibles ceros a la izquierda y anteponerlos alresto de dígitos para evitar que se pierdan. Por lo tanto, si lo que se necesita es el valor numéricode los caracteres numéricos de la cadena (lo que, lógicamente, implica despreciar los ceros quepudiera 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, aunque sigue sin poder ser

utilizada en las versiones anteriores a Excel 2007 dado que mantiene intacta su estructura deanidamientos: 

{=SUMA(EXTRAE(A1;K.ESIMO.MAYOR(ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(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: 

Page 13: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 13/50

 

{=SUMA(EXTRAE(A1;K.ESIMO.MAYOR(ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))))-1))/10^CONTAR(1*EXTRAE(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 ausar esta última fórmula, es posible complicarla todavía un poco más para que ella misma loaverigüe: {=SUMA(EXTRAE(A1;K.ESIMO.MAYOR(ESNUMERO(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))*FILA(INDIRECTO("1:"&LARGO(A1)));FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))));1)*10^(FILA(INDIRECTO("1:"&CONTAR(1*EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))))-1))/10^CONTAR(1*EXTRAE(DERECHA(A1;LARGO(A1)-ENCONTRAR(EXTRAE(1/2;2;1);A1));FILA(INDIRECTO("1:"&LARGO(DERECHA(A1;LARGO(A1)-ENCONTRAR(EXTRAE(1/2;2;1);A1)))));1))}

Estas fórmulas procesan la cadena de texto situada en A1. 

Saber el número de veces que aparece un carácter o una cadena en un texto  

Suponiendo que A1 contiene el texto ABACDCABAEFE, para averiguar el número de aes queaparecen 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)} 

Averiguar el texto más repetido en un rango 

La función MODA devuelve el valor que más se repite en un rango, pero tan sólo se puede aplicara valores numéricos. Si se necesitara emular esta función en un rango compuesto de celdas contexto, 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))) 

Averiguar el elemento menos repetido en un rango  

Si se necesita saber cual es el elemento menos repetido de, por ejemplo, el rango A1:A10 (en el

que no puede haber 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 lafórmula devolvería el situado más arriba. 

Esta fórmula sirve para cualquier tipo de datos. 

Page 14: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 14/50

 

Averiguar el 2º, 3er., 4º etc. valor más repetido en un rango [Ejemplo] Sabemos que la función MODA devuelve el elemento más repetido de un rango. Si se necesitaaveriguar cuál es el 2º, 3º, etc. valor más repetido de un rango con nombre llamado Datos (que hade 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);CONTAR.SI(Datos;Datos)-FILA(Datos)/10^MAX(LARGO(Datos-ENTERO(Datos))));FILA());SI(COINCIDIR(Datos;Datos;0)=FILA(Datos);CONTAR.SI(Datos;Datos)-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 estarsituada en la fila 2. Situada en la fila 1, la fórmula devolvería el elemento más repetido, lo quecarece 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 lafunción MODA.VARIOS, la fórmula propuesta representa un modo de conseguir que vayanaparecido todos los elementos "empatados" en la primera posición de la clasificacion por sucantidad 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 sesustituye 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 dedeshacer los posibles "empates" en su cantidad de apariciones, para lo que recurre a la técnica derestarle a cada uno de ellos el resultado de la división de su número de fila entre 10^número dedecimales del elemento qué más decimales tenga+2. Esto podría tener como consecuencia que lafórmula no trabajase adecuadamente si uno o varios de los números que debe procesar tuviesenmuchos decimales y/o si uno o varios de los números fueran muy grandes. 

Si los elementos en el rango Datos fuesen cadenas de texto, se podría usar la siguiente variante dela fórmula: {=INDICE(Datos;COINCIDIR(K.ESIMO.MAYOR(SI(COINCIDIR(Datos;Datos;0)=FILA(Datos);CONTAR.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 oincluso si tan sólo hay números, pero si los números tuviesen decimales podrían producirseresultados incorrectos.

En caso de empate en el número de repeticiones, estas fórmulas devolverán primero el situadomá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! 

Averiguar el número de palabras de un texto y/o el promedio de sus longitudes  

Suponiendo que la celda A1 tiene un texto cuyas palabras están separadas por espacios, lafó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órmulasería: =LARGO(SUSTITUIR(A1;" ";""))/(LARGO(A1)-LARGO(SUSTITUIR(A1;" ";""))+1) 

Notas: 

Page 15: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 15/50

 

Hay que hacer notar que si hubiera signos de puntuación serían tenidos en cuenta alcalcular el promedio de los largos de las palabras. 

Si las palabras estuviesen separadas por, por ejemplo, guiones, lo único que habría quehacer es sustituir en las fórmulas " " por "-". 

Averiguar cual es el texto más largo de un rango [Ejemplo] 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 deellas.

Sería posible usar un formato condicional para resaltar todas las celdas cuyos textos fueran losmá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 

Averiguar el carácter o el dígito más repetido en una celda y/o el número de veces queaparece [Ejemplo] Suponiendo que se quiera saber cual es el carácter o el número más repetido en la celda A1, sepodría usar: {=MED(A1;MODA(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 nuevafunción MODA.VARIOS para devolver la lista de elementos "empatados" (si los hay) en el primerpuesto 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 elcarácter más a la derecha (útil para las versiones anteriores a la 2010, que no disponen de lafunción MODA.VARIOS): {=MED(A1;LARGO(A1)-MODA(COINCIDIR(MED(A1;LARGO(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);"")))} 

Averiguar la posición del primer carácter o número en una celda  

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

Page 16: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 16/50

 

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 VERDADEROpor FALSO. 

Averiguar la posición del último carácter o número en una celda  

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(INDIRECTO("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(INDIRECTO("1:"&LARGO(A1))))} y: {=EXTRAE(A1;MAX(ESNUMERO(SIGNO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)))*F

ILA(INDIRECTO("1:"&LARGO(A1))));1)} 

Saber si todos los caracteres del texto de una celda son letras [Ejemplo] Excel dispone de la función ESTEXTO para saber si el contenido de una celda es un texto, perodicha función no evalúa cada carácter, por lo que, por ejemplo, AB1C lo consideraría como texto apesar de tener un número. 

Si, por ejemplo, se necesitara saber si todos y cada uno de los caracteres de una celda son letrasmayúsculas, excluyendo la Ñ, se podría usar: 

=SUMAPRODUCTO((CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))>64)*(CODIGO(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)*(CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))<91))+(CODIGO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1))=209))=LARGO(A1) 

Si, además, se necesitara saber si el texto tiene una longitud determinada (por ejemplo, 6caracteres), 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;FILA(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 siguientessustituciones en las fórmulas: 

96 en vez de 64 

Page 17: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 17/50

 

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. 

Fórmulas para averiguar los dígitos de control de un Código de Cuenta de Cliente (CCC) delsistema bancario español [Ejemplo] Suponiendo que en A1 estuviera el código de la entidad bancaria (4 dígitos), en B1 el código de lasucursal (4 dígitos) y en C1 el código de la cuenta (10 dígitos), la fórmula para averiguar el dígitode control de la entidad + la sucursal (8 dígitos en total) sería:  {=EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(A1&B1;FILA(INDIRECTO("1:8"));1)*(EXTRAE(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: {=EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(C1;FILA(INDIRECTO("1:10"));1)*(EXTRAE(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: {=EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(A1&B1;FILA(INDIRECTO("1:8"));1)*(EXTRAE(37498625;FILA(INDIRECTO("1:8"));1)+1));11);1)&EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(C1;FILA(INDIRECTO("1:10"));1)*(EXTRAE(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&" "&EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(A1&B1;FILA(INDIRECTO("1:8"));1)*(EXTRAE(37498625;FILA(INDIRECTO("1:8"));1)+1));11);1)&EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(C1;FILA(INDIRECTO("1:10"));1)*(EXTRAE(0&137498625;FILA(INDIRE

CTO("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 losceros que pueda haber a la izquierda. Otra posibilidad es anteponer un apóstrofo ' a loscódigos, por ejemplo '0123 

Es posible sustituir SUMA por SUMAPRODUCTO, y de así hacerlo no sería necesariointroducir las fórmulas de forma matricial. 

En las versiones anteriores a la 2010 hay que sustituir RESTO por RESIDUO y MED porEXTRAE. 

Fórmula para averiguar los dígitos de control IBAN (International Bank Account Number)  Suponiendo que en A1 está 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 decontrol + los diez dígitos de la cuenta), sin espacios ni otros signos (como p.ej. guiones), la fórmulapara 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)&EXTRAE(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: 

Page 18: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 18/50

 

="ES"&DERECHA(0&98-RESIDUO(RESIDUO(RESIDUO(RESIDUO(EXTRAE(A1;1;8);97)&EXTRAE(A1;9;8);97)&EXTRAE(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 escomo 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)&EXTRAE(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 libro de ejemplo para la fórmula anterior (la que averiguaba los dígitos de control delCCC) hay una hoja con ejemplos de estas fórmulas que calculan los códigos de control IBAN. 

Averiguar la letra de control de un NIF (Número de Identificación Fiscal en España) o un NIE(Número de Identificación de Extranjeros)  [Ejemplo] 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) 

Respecto a los NIE, hay que tener en cuenta que deben comenzar siempre por X ó Y (estandoprevisto que en el futuro puedan empezar también por Z), y tener a continuación siete dígitos. Lafórmula para averiguar el dígito de control del NIE situado en A1 sería: 

=EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(ABS(CODIGO(IZQUIERDA(A1;1)))-88&DERECHA(A1;7);23)+1;1)

Averiguar el dígito verificador de un RUT (Rol Único Tributario) chileno 

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: vaya mi agradecimiento a quien sea que haya preparado el generador de RUTs válidos(http://joaquinnunez.cl/jQueryRutPlugin/generador-de-ruts-chilenos-validos.html), el cual me ha servidopara poder verificar que la fórmula funciona correctamente. 

Averiguar el dígito verificador de un DNIC (Dirección Nacional de Identificación Civil)uruguayo 

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)*EXTRAE("2987634";FILA(INDIRECTO("1:7"));1);1)));10);1) 

Usando como separador la coma, la fórmula sería: 

Page 19: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 19/50

 

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

Averiguar el dígito verificador de una CUIT (Clave Única de Identificación Tributaria)argentina 

Suponiendo que en A1 se encuentra la CUIT (en el formato 99-99999999), la fórmula paraaveriguar 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)} 

Calcular el dígito verificador de un Número de Cédula ecuatorianoSuponiendo que en A1 se encuentra el número de cédula cuyo dígito verificador se desea calcular,la fórmula sería: {=10-RESIDUO(SUMA(SI(EXTRAE(A1;FILA(INDIRECTO("1:9"));1)*RESIDUO(212121212;FILA(INDIRECTO("1:9"));1)>9;RESIDUO(A1;FILA(INDIRECTO("1:9"));1)*RESIDUO(212121212;FILA(INDIRECTO("1:9"));1)-9;RESIDUO(A1;FILA(INDIRECTO("1:9"));1)*RESIDUO(212121212;FILA(INDIRECTO("1:9"));1)));10)} 

Usando como separador la coma, la fórmula sería: {=10-RESIDUO(SUMA(SI(EXTRAE(A1,FILA(INDIRECTO("1:9")),1)*RESIDUO(212121212,FILA(INDIRE

CTO("1:9")),1)>9,RESIDUO(A1,FILA(INDIRECTO("1:9")),1)*RESIDUO(212121212,FILA(INDIRECTO("1:9")),1)-9,RESIDUO(A1,FILA(INDIRECTO("1:9")),1)*RESIDUO(212121212,FILA(INDIRECTO("1:9")),1))),10)} 

Nota: no dispongo de ejemplos reales de Cédulas del Ecuador para comprobar el correctofuncionamiento de la fórmula, pero parece que sí funciona puesto que calcula bien el ejemploplanteado aquí . 

Fórmula para averiguar el dígito de control de un código de barras EAN-13  

Suponiendo que en A1 se encuentre el código EAN-13 (12 dígitos) cuyo dígito de control se deseeaveriguar, la fórmula sería: 

=10-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:12"));1)*(EXTRAE(131313131313;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) 

Page 20: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 20/50

 

 

Fórmula para averiguar el dígito de control de un código de barras EAN-8  

Suponiendo que en A1 se encuentre el código EAN-8 (7 dígitos) cuyo dígito de control se deseeaveriguar, la fórmula sería: =10-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(INDIRECTO("1:7"));1)*(EXTRAE(3131313;FILA(INDIRECTO("1:7"));1)));10) 

Nota: las fórmulas que usan la función SUMAPRODUCTO se pueden hacer un poco más cortas sise convierten en matriciales, para lo cual lo único que hay que hacer es sustituirSUMAPRODUCTO por SUMA e introducirlas como fórmulas matriciales. 

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. 

Detectar si existe duplicidad de un conjunto de celdas  

imagen (11 kb) En este ejemplo se necesita averiguar qué filas están duplicadas (es decir, tienen las tres celdasiguales 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 seproduce la duplicidad. 

También sería posible usar la siguiente fórmula, pero hay que tener en cuenta que hay queintroducirla 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 conel mismo número. En esta imagen (37 kb) se puede ver la fórmula, aplicada en el rango D1:D6 

Fijar en una celda el lunes de la semana actual (o cualquier otro día de la semana)  

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 

Fórmula para averiguar el sábado, domingo, etc. anterior o posterior a una fecha  Si en A1 hay una fecha y se desea saber el sábado anterior a la misma se puede usar:

Page 21: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 21/50

 

=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 casolos resultados serían volátiles.

Fijar en una celda el primer o último día del mes actual, anterior o siguientePrimer 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 

Subtotalizar datos por tramos de edad 

Suponiendo que en rango A1:A50 hay una serie de fechas de nacimiento, y que se necesitasubtotalizar por tramos de edad de 10 años desde dichas fechas de nacimiento hasta la fechaactual, 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 quesustituir =0 por =1, =2 ... =XX/10

Si se necesitara tomar como referencia una fecha en concreto en lugar de la actual, habría quesustituir HOY() por alguna de las funciones de conversión a fechas de Excel. Por ejemplo, usandola 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 la fórmula 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 esasfechas. Por ejemplo, suponiendo que en el rango B1:B50 de la misma hoja hubiera una serie decantidades y se deseara obtener la suma que corresponde a quienes han nacido en los 10 añosanteriores a la fecha actual, la fórmula sería:

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

Page 22: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 22/50

 

 

Obtener un promedio despreciando el/los valor/es mayor/es o menor/es [Ejemplo] Suponiendo que se tiene un rango con nombre (de una sola columna de ancho) llamado Notas, yse 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ónK.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, lafórmula sería: {=PROMEDIO(K.ESIMO.MAYOR(Notas;FILA(INDIRECTO("1:"&FILAS(Notas)-CONTAR.SI(Notas;MIN(Notas))))))} 

Para obtener el promedio sin tener en cuentas TODAS las apariciones de la nota 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órmulaFILAS por COLUMNAS. 

Para averiguar el promedio del rango con nombre Notas despreciando tanto todos los valoresmenores como todos los mayores, la fórmula sería: 

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

Promediar cada n filas o columnas [Ejemplo] A partir de la fila 1 de una columna se tiene un rango con nombre llamado Datos y se desea

calcular el promedio cada, por ejemplo, 10 filas. La fórmula sería: 

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

Lógicamente, para calcular el promedio cada, por ejemplo, 5 filas, lo único que habría que hacer essustituir el 10 por un 5. 

Esta fórmula funcionaría exactamente igual si el rango con nombre Datos estuviese dispuesto enuna fila a partir de su columna A. 

Averiguar la/s letra/s de una columna [Ejemplo] Esta fórmula devuelve la letra de la columna de la celda A1: 

=SUSTITUIR(IZQUIERDA(CELDA("direccion";A1);ENCONTRAR("$";CELDA("direccion";A1);2)-1);"$";"") Lógicamente, para devolver la letra (o letras) correspondiente/s a otra columna lo único que hayque hacer es sustituir los dos A1 por la dirección de cualquier celda de la columna deseada. 

Averiguar a qué bimestre, trimestre, cuatrimestre o semestre pertenece unafecha [Ejemplo] 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  

Page 23: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 23/50

 

- para el cuatrimestre, /2 por /4 

- y para el semestre, /2 por /6. 

Obtener la cantidad de domingos (o cualquier otro día de la semana) que hay entre dosfechas [Ejemplo] Suponiendo que en A1 hay una fecha y en A2 otra fecha, mayor que la de A1, la siguiente fórmuladevolverá 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. 

Fórmulas para saber si un número es o no primo [Ejemplo] 

NOTA: En este enlace hay una pequeña monografía sobre fórmulas capaces de procesar númerosmás grandes que la expuesta aquí. 

Suponiendo que el número estuviera en A1: {=A1&ELEGIR(N((SUMA(--(MULTIPLO.INFERIOR(A1;FILA(INDIRECTO("1:"&ENTERO(RAIZ(A1+1)))))=A1))>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 contenganun 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.368.

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 aprocesar son muy grandes tendrá que hacer muchos cálculos  

usando esta función VBA es posible averiguar si un número es primo hasta el922.337.203.685.477 

Fórmula para obtener el reverso de un número entero [Ejemplo] 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(INDIRECTO("

1:"&LARGO(ABS(A1))))-1))*SIGNO(A1)} Lo mismo hace: =SUMAPRODUCTO(EXTRAE(ABS(A1);FILA(INDIRECTO("1:"&LARGO(ABS(A1))));1)*10^(FILA(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(INDIRECTO("1:"&LARGO(ABS(A1))))-1))*SIGNO(A1)=A1)+1;" no";" sí")&" es capicúa."} 

Page 24: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 24/50

 

Nota: El máximo de dígitos que puede tener el número es 15, es decir los mismos que la precisiónnumérica de Excel. 

Averiguar si una palabra o frase es un palíndromo [Ejemplo] La siguiente fórmula devuelve VERDADERO si la palabra en A2 es un palíndromo (se lee igual enambos sentidos) y FALSO si no lo es: {=Y(EXTRAE(A2;FILA(INDIRECTO("1:"&ENTERO(LARGO(A2)/2)));1)=EXTRAE(A2;LARGO(A2)-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(LARGO(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 dela palabra o de la frase, mientras que las dos fórmulas anteriores necesitan evaluar tan sólo lamitad: 

{=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 puedehaber son signos de puntuación ni acentos. 

Averiguar el valor decimal de un número binario [Ejemplo] Excel dispone del complemento Herramientas para Análisis, que incluye una función para realizareste 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 tieneformato numérico, éste no podrá ser mayor de 15 unos (32.767 en decimal), mientras que si lacelda 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 laque se encuentre el número a convertir. 

Averiguar el valor binario de un número decimal [Ejemplo] 

NOTA: aconsejo la consulta de éste artículo sobre la conversión desde base 10 (decimal) acualquiera de las bases 2 a 9. 

Page 25: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 25/50

 

Excel dispone del complemento Herramientas para Análisis, que incluye una función para realizareste cálculo, pero en cualquier caso se puede usar la siguiente fórmula para hallar el valor binariode 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 unoseguido de 15 ceros). 

Hay que tener en cuenta que aunque el número devuelto por la fórmula "pueda parecer"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 de32.768, pero los resultados podrán no ser correctos. 

Esta misma fórmula (con las modificaciones necesarias) puede devolver números en lasbases 3 a 9. En el libro de ejemplo de esta función se pueden ver dichas fórmulas, así comosus limitaciones. 

Averiguar el valor decimal de un número hexadecimal [Ejemplo] Excel dispone del complemento Herramientas para Análisis, que incluye una función para realizareste cálculo, pero en cualquier caso se puede usar la siguiente fórmula para hallar el valor decimalde 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);"0123456789

abcdef")-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 devolveresta 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 elvalor decimal de un número en otras bases que requieran más de los 10 símbolos numéricos delsistema decimal. Por ejemplo, para hallar el valor decimal de un número en base 15, la fórmulasería: {=SUMA((HALLAR(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));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 

Ley de Benford 

Si se desea conocer el grado de cumplimiento (o incumplimiento) de una serie de datos llamadaDatos de la Ley de Benford, la fórmula para el 1 sería:{=(SUMA(--(IZQUIERDA(ABS(Datos);1)="1"))/FILAS(Datos))-LOG(1+1/1)}

para el 2:

Page 26: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 26/50

 

{=(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 elnúmero que se deseara. 

Con unas pequeñas modificaciones es posible conseguir que la fórmula funcione para los nprimeros dígitos, donde n lo determinará el número de fila de la celda en la que se encuentre lafó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 estasfórmulas en un mismo libro o sesión de Excel, puesto que en situaciones reales lo normalserá que tengan que hacer muchísimos cálculos. 

Saber la cantidad de números pares y/o impares que hay en un rango  

Suponiendo que en el rango A1:A10 hay una serie de números enteros y que se desea averiguarcuantos 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 resultadoun error o no devolver el resultado correcto. 

Sumar los números pares o impares de un rango 

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 resultadoun error o no devolver el resultado correcto. 

Averiguar un número de la serie Fibonacci 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 elnú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 averiguarhasta el Fibonacci 139 (29 dígitos). En este libro de ejemplo hay un ejemplo de la función, junto conalgunas otras que hacen uso de este tipo de datos (artículo sobre el tema). 

Page 27: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 27/50

 

En esta página hay varias funciones para trabajar en Excel con enteros grandes, sirviendo una deellas para hallar números de la serie Fibonacci más allá del 139 (en las pruebas he llegado hasta el9999 de la serie). 

La siguiente fórmula devuelve VERDADERO si el número situado en A1 pertenece a la serieFibonacci y FALSO en caso contrario. Hay que tener en cuenta que, debido a la precisión numéricade 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")))} 

Rachas  [Ejemplo] <--Este ejemplo sólo funciona en Excel 2007 y 2010 

Por ejemplo, si en el rango A1:A30 hay un rango con nombre llamado Serie, con las letrasABAACABBBAAACCAAAABCBBAAAAAACA (una letra en cada celda), y se necesita contar lacantidad de rachas de A que tengan al menos dos aes, la fórmula sería: 

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

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

Para averiguar el promedio de elementos que tienen esas rachas, la fórmula sería: 

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

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

En esta última fórmula sería posible sustituir PROMEDIO por otra función estadística, como porejemplo MAX ó MIN. 

Lógicamente, sustituyendo >=2 por >=número_que_se_desee la fórmula devolverá los datoscorrespondientes a dicho número. 

Sería posible obtener un listado con el número de repeticiones que tiene cada una de las rachas.La fórmula es: 

{=INDICE(SI(FRECUENCIA(SI(Serie="A";FILA(Serie)-

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

Page 28: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 28/50

 

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

Esta fórmula habría que situarla en la fila 1 de cualquier columna vacía, y luego copiarla y pegarlahacia abajo. Cuando no queden rachas por mostrar comenzará a aparecer el error #¡NUM! 

Como curiosidad, esta última fórmula, con sus más de 950 caracteres, es la más larga de las queaparecen en esta página, y a mi juicio es también una de las más complicadas, si no la que más. 

Ninguna de las fórmulas anteriores funciona con versiones de Excel anteriores a la 2007 puestoque superan el límite de siete niveles de anidamiento que admiten dichas versiones. 

Una simplificación de estas fórmulas puede ser utilizada para averiguar la racha que tiene másnúmeros positivos y más negativos en el rango con nombre Serie. La fórmula para averiguar laracha con más números positivos es: 

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

y para averiguar la que tiene más números negativos: 

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

Resulta evidente que estas mismas fórmulas sirven también para averiguar las rachas de númerosmayores o menores a uno dado. Lo único que habría que hacer es sustituir ">0" y "<0" por elnúmero que se necesitase. 

Estas dos últimas fórmulas sí pueden ser utilizadas en versiones de Excel anteriores a la 2007. En

este enlace hay un libro (versión Excel 2003) con ambas fórmulas trabajando. 

[Ejemplo para las tres fórmulas que vienen a continuación ] Averiguar la cantidad de divisores de un número entero positivo y obtener una lista de losmismos 

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 decualquier columna: {=K.ESIMO.MAYOR(((MULTIPLO.INFERIOR($A$1;FILA(INDIRECTO("1:"&ENTERO($A$1/2))))=$A$1)*FILA(INDIRECTO("1:"&ENTERO($A$1/2))));FILA())} y copiándola hacia abajo hasta igualar el número de divisores del número (el resultado de laprimera fórmula). Si se sustituye FILA() por un número entero, la fórmula devolverá el divisor queocupe ese número en la lista de divisores (ordenada de forma descendente). Si el númeroexcediese la cantidad de divisores, la fórmula devolverá 0. 

Page 29: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 29/50

 

La fórmula no considera el entero que procesa como divisor de sí mismo, aunque lógicamente loes.

Averiguar la suma de los divisores de un número entero positivo  

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(INDIRECTO("1:"&ENTERO(A1/2))))} 

La fórmula no considera el entero que procesa como divisor de sí mismo, aunque lógicamente loes. 

Averiguar si un número entero positivo es Defectivo, Perfecto o Abundante  

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 Excel2007 y 2010 es el 2.097.153, pero los cálculos necesarios para números tan grandes pueden llevarbastante tiempo. 

Nota: en esta página hay funciones VBA que pueden hacer los tres cálculos anteriores hasta elmáximo del tipo de datos Currency de VBA (922.337.203.685.477)

Complicando estas fórmulas es posible llegar a procesar hasta el 13.107.200 en Excel 2003 yhasta el 209.715.200 a partir de Excel 2007, pero hay que tener en cuenta que los cálculos paranúmeros tan grandes pueden requerir muchísimo tiempo y, además, que es posible que aparezcael error "Excel se ha quedado sin recursos" dependiendo del número que se esté intentandoprocesar y de la memoria de que disponga la computadora. 

La fórmula para calcular la suma de los divisores del número entero positivo situado en A1 es: 

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

La fórmula para obtener el listado de los divisores es: {=K.ESIMO.MAYOR((MULTIPLO.INFERIOR($A$1;COLUMNA(INDIRECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS(($A$1/100)/2;0)))-1)*100)=$A$1)*(COLUMNA(INDIRECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS(($A$1/100)/2;0)))-1)*100);FILA())} Si se sustituye FILA() por un número entero, la fórmula devolverá el divisor que ocupe esa posiciónen la lista de divisores ordenada de mayor a menor. Si el número excediese la cantidad dedivisores, la fórmula devolverá 0. Si se desease la lista de divisores ordenada de menor a mayor lo

único que habría que hacer es sustituir K.ESIMO.MAYOR por K.ESIMO.MENOR. 

Y la fórmula para averiguar si el número es Defectivo, Perfecto o Abundante: 

{=ELEGIR(SIGNO(SUMA((MULTIPLO.INFERIOR(A1;COLUMNA(INDIRECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS((A1/100)/2;0)))-1)*100)=A1)*(COLUMNA(INDIRECTO("a:cv"))+(FILA(INDIRECTO("1:"&REDONDEAR.MAS((A1/100)/2;0)))-1)*100))-A1)+2;"Defectivo";"Perfecto";"Abundante")} 

Page 30: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 30/50

 

Hay que tener en cuenta que las dos últimas fórmulas podrían no devolver el resultado correcto siel número a procesar fuese inferior al 101  

Macros para proteger o desproteger una hoja Excel  En 20/10/2009, en  Macros ,  Macros Excel , por jmaterano

Sencillo código de Visual Basic para Aplicaciones (VBA) que permite proteger odesproteger hojas de Excel

re il 

   

  5  inShare0

  Email 

¿Deseas conocer cómo proteger o desproteger una hoja Excel a través de macros?

En este tutorial te explicaremos en tan solo cuatro pasos como crear una macro muy simple

que te permitirá proteger una hoja de Excel, y otra que te permitirá desprotegerla, unas

escasas líneas de código que puede resultarte de amplia utilidad en aquellos casos donde

Page 31: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 31/50

 

requieres trabajar con macros mucho más grandes que deben intervenir sobre hojas de

cálculo protegidas con contraseña.

Paso 1: Activar la ficha Programador. 

Los comandos que se usan para editar y ejecutar macros en Excel se encuentran en el grupoCódigo de la ficha Programador, la cual de forma predeterminada se encuentra oculta. Por

ello nuestro primer paso de este tutorial para proteger o desproteger una hoja Excel será

abrir nuestro archivo y activar la ficha Programador. Recuerda que este paso solo aplicaráen caso de que no tengas activa esta ficha; si ya la tienes activa puedes ir directamente al

paso siguiente.

En Excel 2007 ubica la cinta de opciones de la barra de herramientas e ingresarás en: BotónInicio / Opciones de Excel / Más frecuentes / y deberás seleccionar la opción Mostrarficha programador en la cinta de opciones. La imagen anexa te muestra cuál es la opcióna seleccionar para activar esta ficha:

Paso 2: Ingresar al editor de Visual Basic y crear un nuevo Módulo. 

Nuestro segundo paso será ingresar al Editor de Visual Basic. Para ello en la ficha

Programador deberás ubicar el grupo Código el cual podrás identificar fácilmente porencontrarse a la izquierda, con una apariencia como la de la imagen anexa:

Una vez ubiques el grupo código harás clic en el botón Visual Basic, el cuál te llevará al

Editor de Visual Basic. Cuando ingreses al editor ubicarás a la derecha de la pantalla la

Page 32: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 32/50

 

ventana del Proyecto – VBAProject. Allí deberás hacer clic derecho sobre la

carpeta Microsoft Excel Objetos correspondiente al libro Excel en donde desees incluir tunueva macro para proteger y desproteger una hoja Excel. En el menú desplegable que

aparecerá selecciona Insertar y luego Módulo, para crear un nuevo módulo en donde

serán alojadas nuestras macros.

En la imagen anexa puedes apreciar cuales son las opciones a seleccionar para incluir un

nuevo módulo:

Paso 3: Alojar código para proteger o desproteger una hoja Excel. 

Nuestro siguiente paso será copiar en el nuevo Modulo que hemos insertado el siguientecódigo de Visual Basic. El código incluye dos macros: Proteger, la cual te permitirá

proteger con la contraseña de tu preferencia una hoja Excel, y Desproteger, la cual te

permitirá desproteger cualquier hoja Excel de tu preferencia si conoces cual es lacontraseña de desprotección de la misma.

En la línea de código que hace referencia al objeto Sheets deberás escribir el nombre de la

hoja de cálculo de Excel que deseas proteger o desproteger según la macro que edites.En el

código que te estamos suministrando ambas macros se encuentran trabajando sobre la

Hoja1. Puedes cambiar libremente esta configuración por la hoja de tu preferenciacambiando el tecto Hoja1 por el nombre de la hoja de cálculo a proteger o desproteger

cuidando de respetar las comillas.

En el campo (“xxxx”) de ambas macros vas a colocar la contraseña de tu preferencia,recomendablemente una que puedas recordar fácilmente:

Sub PROTECCION()

Sheets("Hoja1").Select

Page 33: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 33/50

 

ActiveSheet.Protect ("XXXX")

End Sub

Sub DESPROTEGER()

Sheets("Hoja1").Select

ActiveSheet.Unprotect ("XXXX")

End Sub

Para probar o ejecutar cualquiera de tus nuevas macros para proteger o desproteger una

hoja Excel solo debes colocar el cursor al comienzo de cada código y presionar el botón de

ejecución de la Macro (Ejecutar Sub/UserForm (F5)).

Para que la Macro sea más segura debes bloquear el acceso al Editor de Visual Basic ycon esto restringir el acceso. Nuestro último paso de este tutorial nos mostrará como

hacerlo.

Page 34: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 34/50

 

Paso 4: Proteger el acceso al Editor de Visual Basic. 

En el Editor de Visual Basic harás clic derecho sobre la carpeta Microsoft Excel Objetos del libro de

Excel con el que trabajas para que selecciones en el menú desplegable que te aparecerá la opción

Propiedades de VBAProject . En la imagen anexa podrás apreciar cual es esta opción:  

Una vez seleccionada la opción Propiedades de VBAProject te va aparecer un cuadro de

dialogo en donde vas a seleccionar la pestaña Protección en donde marcarás la opción

“Bloquear proyecto para visualización”. Debajo de esta opción debes ingresar la

contraseña de tu preferencia para tener acceso al Editor de Visual Basic. Esta contraseñate será solicitada la próxima vez que intentes editar el código al momento de acceder al

Editor de Visual Basic.

Esperamos que este tutorial te haya resultado de máxima utilidad, no dudes comentarnos sitienes alguna duda o consulta adicional.

Page 35: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 35/50

 

Recuerda que en nuestra categoría de artículos relacionados con Macros en Excel

podrás encontrar muchísima más información, artículos y tutoriales.

Page 36: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 36/50

 

SUMAPRODUCTO Tablas Dinamicas Tips Validacion de Datos Varios 

 

 Validar fechas en Excel con un calendario

VIERNES, MAYO 18, 2007

A partir de la nota sobre cómo insertar un calendario en una hoja de Excel, un lector me

 

pregunta como crear un calendario que aparezca cuando elegimos una celda en la que

queremos ingresar una fecha.

El objetivo, claramente, es validar la entrada. Es decir, asegurarnos que el usuario ingrese

una fecha y no un número cualquiera.

Una forma práctica de hacerlo es usando Validación de datos. Por ejemplo, si queremos

asegurarnos que el rango A2:A20 el usuario ingrese sólo fechas del año 2007, podemos

definir esta validación de datos

De esta manera, si el usuario elige una fecha fuera del año 2007, recibirá un mensaje de

error

Pero en realidad lo que queremos es que el usuario elija la fecha que quiere introducir en la

celda. También esto podemos hacerlo con validación de datos, usando la opción Lista.

Creamos un nombre, año_2007, que contenga las fechas a usar. Para esto podemos, por

ejemplo, poner las fechas en el rango A1:A365 de la Hoja2. Luego definimos la validación

de datos

y así obtenemos una lista desplegable.

Page 37: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 37/50

 

Coincidamos en que estos métodos no son muy flexibles que digamos. Así que nuestro

objetivo será crear un calendario que aparezca cada vez que queremos elegir una fecha.

Esto la haremos con una macro y el Calendar Control (el número depende de la versión de

Excel), que ya mencionamos en nuestra nota anterior. 

Nuestra macro puede estar almacenada en el Personal.xls  y de esta manera estar

disponible para todo cuaderno activo. O puede estar ligada a un cuaderno específico y sólo

estará disponible cuando este cuaderno esté abierto. Esto último es lo que mostraremos en

esta nota.

Nuestro proyecto se compone de lo siguiente:

- una forma que contenga el calendario

- una macro que muestre el calendario cada vez que la celda activa esté dentro del rango

indicado e introduzca la fecha elegida en la celda activa

- un evento que dispare la macro cuando la celda activa esté en el rango indicado.

Empecemos por crear la forma que contenga al calendario. Para esto activamos el editor de

Visual Basic (ALT+F11) y agregamos una forma (UserForm) al proyecto

En la ventana de Propiedades el proyecto (si no está visible usamos el menú Ver—Ventana

Propiedades del VBe, o pulsamos F4) cambiamos el valor estándar en Caption por "Elija un

fecha"

Para agregar el Calendar Control debemos hacer visible el cuadro de herramientas (menú

Ver—Cuadro de Herramientas). Inmediatamente usamos el menú Herramientas—Controles

Adicionales

Page 38: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 38/50

 

Y elegimos el Calendar Control. Esto hace que su icono aparezca en el cuadro de controles

a la izquierda de la forma. Pulsamos el icono y creamos el calendario sobre la forma

Las propiedades del calendario pueden ser cambiadas en la ventana de Propiedades,

estando este seleccionado.

Ahora tenemos que escribir el código para el calendario. Para esto, con la forma

seleccionada, usamos el menú Ver—Código (atajo: F7). Esto nos lleva a la ventana de

código de la forma. En ella escribimos

Para probar el funcionamiento de la forma la seleccionamos con Ctrl+Tab y pulsamos F5. La

forma aparecerá en la Hoja1. Para cerrarla pulsamos la X en el ángulo superior derecho.

Nuestro próximo paso es poner un código que transfiera la fecha elegida en el calendario a

la celda activa en la hoja.

Hacemos un doble clic sobre el calendario en la forma, lo que abre la ventana de código

donde escribimos

Private Sub Calendar1_Click()

ActiveCell.Value = Calendar1.Value

Unload Me

End Sub

Volvemos a probar el funcionamiento de nuestra forma, seleccionándola con Ctrl+Tab y F5

para accionarla. Elegimos una fecha del calendario y veremos que este se cierra y la fecha

elegida aparecerá en la celda activa.

Page 39: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 39/50

 

 

Ahora necesitamos un método para que el calendario se abra sólo cuando la celda

seleccionada (activa) este comprendida en el rango donde queremos poner las fechas (en

nuestro caso A2:A20).

Para esto necesitamos dos elementos: una rutina que haga aparecer la forma y un evento

que accione la rutina cuando la celda seleccionada cae en el rango indicado.

La macro para mostrar la forma la escribimos en un módulo de Vba, que agregamos

usando el icono o con el menú Insertar—Módulo:

Sub abrir_calendario()

UserForm1.Show

End Sub

El evento debemos escribirlo en la ventana de código de la Hoja1, que abrimos haciendo un

doble clic en el icono de la Hoja1 en la ventana del proyecto.

Allí agregamos este código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rngFechas As Range

Set rngFechas = Range("A2:A20")

If Union(Target, rngFechas).Address = rngFechas.Address Then _

Call abrir_calendario

End Sub

Page 40: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 40/50

 

 

Con esto hemos terminado nuestro proyecto. Ahora, cada vez que seleccionemos una celda

en el rango A2:A20 de la Hoja1, aparecerá el calendario y podemos elegir la fecha.

Como abran notado, podemos cambiar el año y el mes libremente.

Page 41: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 41/50

 

 

Page 42: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 42/50

 

 

Page 43: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 43/50

 

 

Page 44: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 44/50

Page 45: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 45/50

Page 46: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 46/50

Page 47: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 47/50

Page 48: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 48/50

Page 49: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 49/50

 

 

POBNER EL VALOR DE CELDA EN CALENDARIOSupongamos que la celda C1 de la hoja1 contiene la fecha, en el evento UserForm_Activate()

puedes poner

Private Sub UserForm_Activate()

Calendar1.Value = Sheets(1).Range("C1").Value

End Sub

Page 50: FÓRMULAS VARIAS

5/14/2018 FÓRMULAS VARIAS - slidepdf.com

http://slidepdf.com/reader/full/formulas-varias 50/50