martes, 9 de junio de 2015

Formato condicional usando el operador lógico Y

Archivo de Excel utilizado: formato_condicional.xlsx

Veamos un caso de práctico del uso que se da a Formato Condicional cuando lo usamos con una fórmula que requiere el uso del operador lógico Y. Lo que hacemos es añadir dos condiciones lógicas de forma que se exige que se cumplan ambas. Cuando se piden ambas se requiere usar el Y.
  • pedimos que el valor sea inferior al promedio de su columna, y
  • pedimos que no se trate de una celda vacía


15 comentarios:

  1. Muchas gracias, sirvió de mucho para agilizar.

    ResponderEliminar
  2. Muchas gracias
    Es una aportación didáctica, perfectamente clara y muy instructiva.
    A destacar ( especialmente para mi) el problema al copia el formato.
    Algo que hasta la fecha no me había sucedido pero que tendré muy presente de ahora en adelante.
    Reitero mi agradecimiento por las aportaciones y lo que aprendemos de usted.
    Un saludo.

    ResponderEliminar
  3. Estimado Adolfo, antes que nada una felicitación por publicar información tan ilustrativa, mira yo apenas estoy empezando a utilizar las macros, tengo una base con más de mil indicadores, de los cuales cada indicador tiene datos para distintos años, algunos son datos bienales, anuales..., de mi base quiero extraer la atriz con la información correspondiente a cada indicador y de ahi generar una gráfica por cada uno, crees que se pueda hacer algo, un cordial saludo

    ResponderEliminar
  4. Muchas gracias Don Adolfo por sus grandes aportaciones a la cultura de la informática, principalmente al Excel. Yo le estoy muy agradecido porque he aprendido lo que uste no se imagina. Dios lo bendiga

    ResponderEliminar
  5. Luego de aplicar lo aprendido aquí, quise contar las celdas con color de formato condicional, pero no me funciona. Adjunto código

    Function ContarColor(rango As Range, color As Long) As Long
    Application.Volatile
    Dim rngC As Range

    For Each rngC In rango.Cells
    If rngC.FormatConditions.Count > 0 Then If ColorIndexDelFC(rngC) = color Then ContarColor = ContarColor + 1
    Next rngC

    Set rngC = Nothing
    End Function

    Espero su comentario. Gracias!

    ResponderEliminar
    Respuestas
    1. Este es otro código que también utilicé y no me funcionó

      Function CONTARPORCOLORFC(CeldaColor As Range, Rango As Range) As Integer

      Dim Celda As Range
      Dim Total As Integer
      Dim Color As Long

      Color = COLORFC(CeldaColor)

      For Each Celda In Rango.Cells
      If COLORFC(Celda) = Color Then
      Total = Total + 1
      End If
      Next Celda

      CONTARPORCOLORFC = Total

      End Function

      Eliminar
    2. Hola Alejandro.
      Te he dejando en el fichero de Excel una nueva hoja. En la Hoja2 se suman los de color azul de enero en la columna AB.
      Verás que es una fórmula matricial. Las fórmulas matriciales se validan con CONTROL+SHIFT+ENTER.
      Un saludo.

      Eliminar
    3. Estimado:
      Muchas gracias, ha resultado muy bien para el primer mes, pero me ha surgido un problema al querer replicarlo a los otros años utilizando la misma fórmula. Los valores que arroja la fórmula me dan distintos al número de celdas con color, reviso y reviso la fórmula y no encuentro error.

      Eliminar
    4. Estimado Adolfo;
      Tengo varias dudas respecto la Formula es de Carácter Matricial y estoy recién estudiando este tema ;

      =SUMA(--((B2:AA2)<=(B$62:AA$62))*(B2:AA2<>""))
      Que significa -- en realidad la formula completa?? puede explicar favor, le agradezco y excelente Aporte.
      saludos
      Hernan Padilla

      Eliminar
    5. Hola Hernan.
      Añadir -- al inicio de una fórmula sirve para convertir los valores lógicos de VERDADERO o FALSO en valores numéricos de 1 y 0. Uno de los signos negativos sirve para multiplicar por -1 esto fuerza a que los valores lógicos se conviertan en numéricos. El otro signo negativo sirve para que los valores numéricos obtenidos no sean negativos, ya que en matemáticas (-1)*(-1)=1.
      En la fórmula se trabaja con rangos. Cuando se escribe: (B2:AA2)<=(B$62:AA$62) lo que estamos pidiendo a Excel es que nos de un vector de valores lógicos (VERDADERO o FALSO) que se obtienen al comparar si los valores del rango (B2:AA2) son menores o iguales a los valores del rango (B$62:AA$62).
      Ese vector de valores lógicos se convierte en un vector de ceros y unos al añadir los dos signos negativos (--). Ese vector de ceros y unos luego se multiplica por el rango B2:AA2 pero sólo cuando el valor es distinto (<>) de "".
      El resultado de toda esta fórmula es que únicamente se cuentan los valores del rango B2:AA2 que sean distintos de "" y que sean menores o iguales a la media, que podemos encontrar en el rango (B$62:AA$62).
      ¿Por qué, sirve para contar si se usa la función SUMA? Como estamos usando vectores de ceros y unos, y los unos suponen valores que cumplen los criterios, lo que hacemos sumando esos unos es sumar los valores que cumplen los criterios. Pero no sumamos el valor que tienen en su celda, sino simplemente sumamos 1 por cada uno de los valores que cumplen los criterios. Y esto es contar.
      En el rango (B2:AA2) únicamente existen tres valores que cumplen que están por debajo de la media, y por tanto el resultado para esa fila es 3.
      Un saludo.

      Eliminar
  6. Hola Adolfo:
    He seguido los pasos del ejercicio y tengo resultado erróneos. Pasa en las celdas D6, D31, D36, D45,, por ejemplo.
    La fórmula que tengo en el formato condicional es:
    =Y(B2<=PROMEDIO(B$2:C$61);B2<>"")

    No entiendo dónde está el error.
    Gracias.

    ResponderEliminar
    Respuestas
    1. Hola Piti.
      Para hacer el formato condicional es necesario primero estar situados en la celda B2. Luego se hacen los pasos que se comentan en el vídeo y finalmente se extiende el formato a toda la tabla con la brocha. El rango al que se extiende con la brocha, al hacer el pegado de formato incluye desde la propia celda B2.
      Espero que te funcione.

      Eliminar
  7. Buenos días!. Enhorabuena por el Blog!!.

    Nos podría enseñar cómo se hacen los gráficos de la OCDE que suelen ser de barras y dentro de la barra o encima o debajo de ella aparece un rombo con el nivel de ese mismo indicador para otro país, o para el mismo país en otro año diferente? Muchas gracias !

    ResponderEliminar
  8. Hola buenas tardes,
    Lo primero de todo es felicitarte por el blog que puede ser el mejor en español de Excel.

    Tengo un problema con una tabla de excel he intentado buscar algo parecido en esta web pero no encontré nada.
    Quiero insertar en una celda 3 valores posibles: 0, 1 y cualquier otro entre 2 y 99. Depende de cual de esas tres posibilidades se escriba en la celda, hay que hacer una de esas 3 operaciones. Estoy intentando hacerlo con la función SI anidada pero no hay manera, me sale una fórmula ininteligible.
    También querria que la fila de la casilla se ponga de un color u otro si se escribe en la celda un 0 o un 1.
    Si pudiera ayudarme se lo agradezco.Un saludo y enhorabuena por la web de nuevo.

    ResponderEliminar
    Respuestas
    1. Hola Fernando. Supongamos que es el la celda A1 donde puedes poner el valor 0, o en valor 1, o cualquier otro. Vamos a crear una fórmula en la celda B1 que nos diga cuando se ha puesto un 0, un 1, o cualquier otro valor. La fórmula es la siguiente.
      =SI(A1=0;"cero";SI(A1=1;"uno";"otro"))
      Para el formato condicional puedes poner un doble formato. Sigue estos pasos para la celda A1.
      1º Pon a la celda A1 un fondo azul
      2º Estando en A1 vamos a Formato condicional y elegimos "nueva regla" y "Utilice una fórmula que determine las celdas para aplicar formato". Escribe la siguiente fórmula =A1=0 y en Formato elige Relleno amarillo. Aceptamos.
      3º Estando en A1 vamos a Formato condicional y elegimos "nueva regla" y "Utilice una fórmula que determine las celdas para aplicar formato". Escribe la siguiente fórmula =A1=1 y en Formato elige Relleno verde. Aceptamos.
      Si todo ha salido bien, al escribir un 1 en la celda A1 ésta se pondrá de color verde, si escribimos un 0 se pondrá de color amarillo y para cualquier otro valor se pondrá de color azul.
      Espero que te funcione bien.
      Un saludo.

      Eliminar