jueves, 18 de febrero de 2010

La función ES.PAR y ES.IMPAR en Excel.

Hace algunos días expliqué el uso de las funciones
ESTEXTO y ESNUMERO, donde ya mencioné la existencia de este tipo de funciones ES, que nos devolvian al ejecutarlas VERDADERO o FALSO como elementos.
Veremos un ejemplo de cómo aplicar otra de estas funciones, la función ES.PAR (trabajaríamos de forma idéntica para su homóloga ES.IMPAR).
Un lector preguntó:
...tengo una planilla en la que deseo sumar el contenido de las filas pares de una columna ...

Para resolver este problema, necesitaremos en primer lugar diferenciar las filas pares de las impares de nuestra base de datos; dicho de otro modo, tenemos que decirle a nuestra función la numeración de éstas, lo que haremos con la función FILA(referencia).
El argumento de la función FILA podrá ser un rango de celdas o una sola, y devuelve el número de fila de la referencia. Si tuvieramos un rango como argumento tendríamos que ejecutarla en forma matricial.
Una vez determinado el número de filas, deberemos discriminar aquellas que son pares o impares, por lo que sobre este valor de FILA, aplicaremos la función ES.PAR.

Veámoslo con un ejemplo. Tenemos un listado de valores:


Aprovecharemos conceptos ya conocidos, como crear una Lista o Tabla a partir de nuestro rango de celdas, para entender mejor la fórmula a emplear.
Explicaré la fórmula matricial a emplear por partes. En primer lugar nos interesa en una columna anexa descubrir con la función FILA(celda) cuál es el número de fila de cada una de los valores de nuestra Tabla:


El siguiente paso será facilitar a nuestra futura fórmula el conocimiento de las filas PARES, lo que haremos aplicando sobre esta columna auxiliar creada, la función ES.PAR(número). Observemos cómo el argumento de esta función tiene que ser necesariamente un valor numérico.


como todas las funciones ES nos devuleve un valor lógico. Recordemos que VERDADERO euqivale a un valor 1, y FALSO a un valor 0.

Último paso, si multiplicamos celda a celda cada columna auxiliar creada, obtendremos sólo una columna de valores distintos de cero para aquellas filas que sean pares; las cuales podremos sumar para alcanzar nuestro resultado.


Lo explicado en los pasos anteriores se puede resumir en unn única celda, aplicando la siguiente función en forma matricial:
{=SUMA((ES.PAR(FILA(Tabla1))*Tabla1))}
recordando el primer paso en el que creamos la Lista con nuestro rango de valores.

46 comentarios:

  1. Muchas gracias, acabo de resolver un pequeño problema con esta publicación...

    ResponderEliminar
  2. Respuestas
    1. Hola, que tal?
      quizá si expones lo que no entiendes podría explicartelo de otra forma.
      Slds

      Eliminar
  3. hola espero me ayuden: necesito que excel en la hoja dos me de los valores de las filas pares de la hoja1.
    F. alfredo

    ResponderEliminar
    Respuestas
    1. Hola Alfredo,
      sólo tendrías que aplicar la fórmula matricial explicda en este post... no importa que estén en hojas diferentes, la fórmula funcionará igualmente.
      Otra cosa sería que quisieras filtrar los registros de una base de datos y obtener sólo los que se encuentren en filas pares, si es este el caso, lo más sencillo sería incluir una column auxiliar, donde determina si la fila es par o no (un condicional SI te ayudaría), y luego aplicaríamos un filtro avanzado sobre todo el rango, llevándonos el resultado del filtro a otra hoja ( en tu caso la hoja 2).
      Slds

      Eliminar
    2. Hola Ismael,
      me interesa hacer lo segundo que mencionas pero no sé como aplicar un condicional a celdas, no por su contenido sino por su número de fila, es decir quiero copiar el contenido de las celdas con número de fila impar a otra columna o a otra hoja no importa, podrías dar más detalles de cómo se hace eso, gracias.

      Eliminar
    3. Hola Sarahí,
      lo más sencillo. Deberás añadir una columna auxiliar a tu origen de datos con la fórmula
      =ES.IMPAR(FILA())
      esto te devolverá VERDADERO o FALSO según la fila real donde esté la fórmula sea IMPAR o no lo sea. Una vez realizado este paso, simplemente aplcia un Filtro avanzado sobre el origen completo (incluida la nueva columna), y aplica el criterio donde la columna auxiliar sea VERDADERO, dentro de la configuración del filtro avanzado indica copiar a otro lugar.
      También podrías aplicar un Autofiltro de igual forma y seleccionar, copiar y pegar los registros resultantes.
      Slds cordiales

      Eliminar
  4. Gracias por este pequeño post, me ha ayudado a filtrar el trabajo.

    ResponderEliminar
  5. Hola,
    Tengo 2 hojas. En la primera tengo aproximadamente 600 filas y en la 2da quisiera copia únicamente los valores que se encuentran en las filas impares. Existe alguna fórmula que me lo permita?
    Gracias de antemano

    ResponderEliminar
    Respuestas
    1. Hola,
      coloca en la primera columna (columna A) de la hoja destino los valores 1,3,5,7,9, etc (impares), y la celda inmediata de su derecha (columna B) la siguiente fórmula:
      =INDIRECTO("Hoja1!A"&A1)
      asegúrate de ajustar el nombre al de tu hoja , así como la letra de la columna donde estén los datos que necesitas:= 'Hoja1!A'

      saludos

      Eliminar
  6. BUENAS NOCHES, PODRIA AYUDARME EN UN CASO?

    ResponderEliminar
  7. COMO PUEDO RESOLVER ESTE CASO: ME DEJARON COMO TAREA.
    Diseñe una fórmula de tal manera que Ud. ingrese en una celda un valor numérico X y en otra celda valide y devuelva como resultado lo siguiente:
    • SI X está entre 100 y 1000, muestre como resultado “CUMPLE”
    • SI X está no está entre 100 y 1000, muestre como resultado “NO CUMPLE”

    ResponderEliminar
    Respuestas
    1. Hola Katherine,
      prueba con:
      =SI(Y(celda>=100;celda<=1000);"cumple";"no cumple")

      Saludos

      Eliminar
  8. HOLA COMO PUDE RESOLVER aplicar formato condicional para que los colores de los renglones se alternen en verde (nones) y blanco (pares)

    ResponderEliminar
    Respuestas
    1. Hola Viky,
      lo más sencillo sería que convirtiera tu rango en Tabla, y marcaras (está así por defecto) la opción de filas con bandas...
      Otra opción es la que se explica aquí:
      http://excelforo.blogspot.com.es/2013/01/vba-intercalando-filas-alternas-en-un.html
      saludos

      Eliminar
  9. hola Ismael.... necesito filtrar de una relación de números solo los que terminan en 02 y 03.

    ResponderEliminar
    Respuestas
    1. Hola Mané,
      te diría que lo más sencillo sería añadir un Campo Calculado a tu origen de dato que evalúe la doble condición:
      =SI(O(DERECHA(A2;2)="02";DERECHA(A2;2)="03");"filtrar";"no")
      y luego aplicar un autofiltro directo sobre ese nuevo campo, sobre el elemento 'filtrar'.
      Espero te sirva.
      Saludos

      Eliminar
  10. Buenas Ismael.
    Yo tengo un problema con la ultima formula que has puesto =SUMA((ES.PAR(FILA(Tabla1))*Tabla1)), cuando la introduzco me sale el mensaje #¡VALOR!, y no entiendo porque ni solo como solucionarlo cuando en todo lo demás no he tenido ningún problema.
    Un saludo y gracias

    ResponderEliminar
    Respuestas
    1. Hola José,
      ¿has ejecutado la fórmula matricialmente (presionando Ctrl+Mayusc+Enter en lugar de solo Enter)??
      Slds

      Eliminar
  11. Hola Ismael,

    Necesitaría, de una listado de importes, la suma acumulada de los impares en fórmula matricial y no acabo de dar con ello. ¿Podrías ayudarme?

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola,
      curiosamente es una de los ejercicios propuestos en los cursos ofertados en
      www.excelforo.com

      Podría ser por ejemplo (matricialmente):
      =SUMA(ES.IMPAR(VALOR(A2:A9))*A2:A9)
      slds

      Eliminar
  12. buenas tardes.
    Necesito mostrar que la celda de excel posee digitos denro de un string

    ResponderEliminar
  13. Buenos días, quisiera que un número me multiplique por un facto "x" cuando es par, y cuando es impar por un factor "y", como haría, gracias por todo y felicitaciones por sus aportes. Saludos

    ResponderEliminar
    Respuestas
    1. Hola Yuri,
      aplicarías un condicional SI:
      =SI(ES.PAR(numero);numero*'factor x';numero*'factor y')
      Saludos!!

      Eliminar
  14. Agradecería que me ayudara a sumar los elementos de las diagonales principales de cualquier matriz cuadrada, es decir dada una matriz cuadrada, entonces como hallar la suma de los elementos de las diagonales principales usando excel

    ResponderEliminar
    Respuestas
    1. Hola @ngel+z,
      todo depende de donde tengas la matriz cuadrada (empieza en A1?).
      La idea podría ser la matricial:
      =SUMA(SI(COLUMNA(A1:C3)=FILA(A1:C3);A1:C3;0))
      con lo que sumas los valores de la diagonal principal...

      Espero te oriente, de todas formas me parece interesante la pregunta y subiré un post al blog con una explicación más detallada.

      Un saludo

      Eliminar
  15. ALGUIEN PUEDE AYUDARME, EN HOJA 1 TENGO UN LISTADO DE PRODUCTOS, CADA UNO TIENE UN TIEMPO DETERMINADO DE FABRICACION (HRS), PERO QUISIERA QUE EN HOJA 2 SE RELLENE UNA FILA SIMULANDO EL TIEMPO REQUERIDO DE CADA PRODUCTO COMO SI FUESE UN CRONOGRAMA A LO LARGO DEL DIA.

    SI ALGUIEN ME PUEDE AYUDAR LE AGRADECERIA MUCHISIMO.

    GRACIAS

    ResponderEliminar
    Respuestas
    1. Hola Fabián,
      el asunto será trabajoso, ya que deberás construir una tabla de referencia cruzada detallando las 24 horas del día en la primera fila, y en la primera columna los productos..
      finalmente construir una fórmula que emplee búsquedas y condiciones de cada producto comparándose con las horas del día....

      Espero te oriente la idea.

      Slds

      Eliminar
  16. La población del Perú es de 25 millones de habitantes a finales del 2010. Si se considera que el
    crecimiento poblacional es de 3% al año, calcule el año en el cual, la población del Perú alcanzará los
    45 millones de habitantes.
    UN FAVOR COMO SE RESUELVE ESTOOOOOO NO ENTIENDOOOOO

    ResponderEliminar
    Respuestas
    1. Hola Janeth,
      cómo estás?, un placer saludarte igualmente.
      Yo aplicaría la herramienta Buscar Objetivo sobre la fórmula:
      =25000000*(1+3%)^n
      con el valor objetivo: 46000000
      Es decir, en una celda A1 escribes 25000000
      en otra C1:
      =A1*(1+3%)^B1
      y ahora ejecutas Buscar objetivo indicando que la celda objetivo es C1 asignando el valor 45000000 y dando como celda cambiante B1, al resolver te saldrá que B1 (esto es, el número de años) es:
      19,88533433
      o lo que es lo mismo 19 años y aprox 10 meses
      Slds

      Eliminar
  17. Hola, estoy hcendo una hoja de calculo en excel, sucede que usando el condiciona si, quero que los numeros pares hagan algo y si son pares que hagan otra cosa, como hago eso?

    Como hago para que en otro condiional, unos numeros hagan una función, ejemplo quiero que los 1,3,5,7,8,9 hagan algo, cómo lo hago para no hacer el condicional para cada uno
    quedo atento

    ResponderEliminar
    Respuestas
    1. Hola,
      =SI(ES.PAR(celda);"si es par haz una cosa";"si es impar otra cosa")

      Saludos

      Eliminar
  18. quiero una ecuacion en excel que cuando elija un valo por ejemplo 1 el resultado sea 11 cuando es 2 sea 17 cuando es 3 sea 22 cuando es 4 es 28 cuando es 5 sea 33

    ResponderEliminar
    Respuestas
    1. Hola Cristihan,
      que tal estás, un placer saludarte igualmente.
      Con mucho gusto te puedo ayudar.

      podrías probar con la función:
      =ELEGIR(celda_valor;11;17;22;28;33)

      celda:valor será la celda donde escribas el 1,2,3,4 o5

      Un cordial saludo

      Eliminar
  19. buenas noches necesito que me ayudes con esta formula:
    Llene los 10 datos, todos los números pares son PEPE y los impares son ANDREA

    ResponderEliminar
  20. Hola!Podrias ayudarme con esta fórmula? Utilizando =SUMAR.SI debemos hacer que se sumen solamente los números pares.

    ResponderEliminar
    Respuestas
    1. Hola Melissadvc
      con SUMAR.SI sería bastante elaborado.. no se si sería posible, pero con esta fórmula funciona perfectamente:

      =SUMAPRODUCTO(--(RESIDUO(C3:C8;2)=0);C3:C8)

      Espero te sirva
      Saludos

      Eliminar
  21. QUIERO FILTRAR UNOS CODICOS PERO QUE LOS ULTIMOS 2 DIGITOS SEAN PARES

    ResponderEliminar
    Respuestas
    1. Hola, qué tal estás?
      un placer saludarte y poder orientarte...

      Podrías añadir dos columnas auxiliares con esos dos últimos dígitos
      y luego aplicarles una función ES.PAR que devuelva si es par..en cuyo caso tendrás un VERDADERO que podrás filtrar

      Saludos cordiales

      Eliminar
  22. Buenas noches.
    Necesito obtener de una lista de numeros el promedio de todos aquellos que sean pares.
    gracias

    ResponderEliminar
    Respuestas
    1. Hola,
      en comentarios anteriores tienes la pista (y casi la solución), prueba con:
      =PROMEDIO(SI(RESIDUO(A1:A8;2)=0;A1:A8))
      ejecutada matricialmente, i.e., presionando Control Mayúscula Enter

      Saludos

      Eliminar
  23. hola, Necesito su ayuda, porfavor, me dieron variedad de numeros, en el cual me dicen que pinte de fondo rojo todos los numeros pares que se encuentren en las filas y columanas impares. usando lel comando FORMATO CONDICIONAL.
    agradeciria mucho su pronta respuesta.... Gracias...


    ResponderEliminar
    Respuestas
    1. Hola
      aplicaría un Formato condicional, como nueva regla con fórmula:
      =Y(ES.PAR(celda);ES.IMPAR(COLUMNA(celda));ES.IMPAR(FILA(celda)))
      y luego dar formato deseado
      Espero te sirva
      Saludos

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.