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:

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


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:

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


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.

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


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.

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


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.

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

30 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