Saltar al contenido

excel2003 mas de 3 formatos condicionales


EMILIO33

Recommended Posts

Hola amigos. Tengo un problema. Os adjunto el archivo. Quiero establecer formatos condicionales basados sobre 7 posibilidades (excel 2003 solamente permite 3 posibilidades). Quiero poner color de fondo a las celdas de las columnas A,B,C y D, según sea el valor de la misma fila en la columna E.

He leido en varios foros y los que son buenos de verdad (yo no lo soy) lo hacen gracias a VBA.

En el archivo adjunto, tengo grabada la macro "FORMATO_COND", esta macro tiene guardadas las ejecuciones de excel para crear 3 formatos condicionales, y ampliar manualmente a 7 el sistema falla con el código de error 1004 (avisado que seria así por la ayuda en línea de excel).

He encontrado otras opciones en algunos foros, al parecer válidas, cuyas lineas de programación os reproduzco en las otras fichas del archivo, pero yo no se aplicar estas opciones a mi programa.

¿Alguien sabe como hacerlo? ¿Alguien es tan amable de echarme una mano? ¿Es complicadillo o qué? espero vuestras noticias. Gracias amigos.

Listado_colores.zip

Enlace a comentario
Compartir con otras webs

En las versiones anteriores a Excel 2007 sólo es posible tener 3 formatos condicionales en la misma celda.

Si necesitas 7 debes hacerlo de otra forma. La única solución que se me ocurre es una macro que se ejecute cada vez que cambia una celda de la hoja.

Por otra parte, en los formatos que tienes actualmente, la condición hace referencia a la fila siguiente a la que está. P.e. La fila 3 está en azul (color que corresponde a la fila 4) en lugar del amarillo que marca.

Esperamos tu respuesta. Un saludo.

Enlace a comentario
Compartir con otras webs

Gracias por tu ayuda, amigo. Sí, me he equivocado en la aplicación del formato condicional. En este post (para no liarlo más) adjunto el archivo arreglado, o sea, agradeceré a los foreros que tomen como punto de partida el archivo de este post y no el anterior. Gracias a todos.

Comentas que lo mejor seria una macro que se ejecutara cada vez que se cambia el valor de una celda... bien... planteamiento bueno. Solamente una cosa, los datos de este listado corresponden a una vinculación con bases de datos externa y se actualiza cada vez que se abre el archivo. No pasa nada, sigue siendo bueno ¿No?.

¿Cómo seria esta macro que planteas? ¿No sirven las macros planteadas en los foros indicados en el archivo?

Gracias amigo. Espero tu ayuda.

Listado_colores.zip

Enlace a comentario
Compartir con otras webs

Te adjunto un fichero en el que he cambiado algunas cosas:

La hoja CódigoColor tiene los colores y el texto que busca en la misma celda. Este es el patrón de color que va a buscar, o sea, que si quieres cambiar el color o la descripción a mostrar, deberás hacerlo aquí. A partir de entonces, tomará este nuevo color (los anteriores conservarán el que tuvieran, si quieres cambiar pulsa F2 sobre la celda de colores).

La hoja relación continúa igual, cuando indiques el código, las celdas anteriores cambiarán.

El módulo VBA está comentado, para si quieres cambiar algo.

No sé si he sabido explicarme. Si tienes alguna cuestión o comentario, no dudes en decírmelo. Espero que te pueda haber ayudado.

Un saludo.

Ps. El fichero es .rar renombrado como .zip, puesto que no permite subirlo de esta forma.

Listado_colores_comprimido.zip

Enlace a comentario
Compartir con otras webs

Hola Emilio

A lo largo del hilo me ha acompañado continuamente la necesidad de saber cuál es la base de aplicar un color u otro, es decir el texto en negrita indicando un color (columna E9 es lo que aparece en tus hojas, o lo que quieres es que las columnas (A a D) correspondientes a cada color se coloreen en el color indicado.

Si es así y sabiendo cúal es el criterio de asignación de colores las macros que adjuntas en tu ejemplo se podrían modificar para tu caso. En el caso contrario la solución del compañero efmc podría serte válida.

Un saludo desde Vitoria

Enlace a comentario
Compartir con otras webs

"ioyama":

Gracias por tu interés en ayudarme. El rango de datos se recupera de una base de datos externa donde uno de los campos de esa base de datos es el campo "color" donde anoto el nombre del color con el que quiero que se pinte la fila de datos en las consultas de excel; ahora hay que traducir "la palabra en hechos" y hay que conseguir pintar el resto de celdas de la fila con el color que indico en esta celda. Aunque la opción planteada por efmc sea también válida, me gustaría madurar un poco lo que me planteas tú. Trabajo muchísimo con formatos y me gustaría aprender y entender todo aquello que tú en este caso me puedas enseñar, tendiendo en cuenta por supuesto, que soy bastante pardillo. ¿Te he contestado a lo que preguntas? Creo que sí. Espero tus noticias, si puedes. Gracias

"efmc" :

Me doy cuenta de lo pardillo que soy en temas de programación con el trabajo que me has enviado. En el archivo que me has enviado funciona de maravilla, pero intento trasladar tu trabajo al archivo original donde lo quiero llevar a cabo y tengo problemas para implantarlo. De todas formas no he podido dedicarme a esto todo el tiempo que quiero, casi seguro que hasta mañana no podré llegar a alguna conclusión. Mañana te digo algo, y confio en tu ayuda una vez sepa decirte por qué no me ha llegado a funcionar, seguro que me lo indicas en un momento. Gracias.

Enlace a comentario
Compartir con otras webs

Hola Emilio

Entiendo como lo haces, yo a lo que me refería es que si una fila determinada debe ir en amarillo (por ejemplo) será debido a algún criterio (espero que no artístico o de presentación). Por ejemplo la fila 3 va en amarillo porque el valor de la celda B3 es mayor de 25 y menor de 50, o porque en la celda C3 se indica que el responsable es Pepe o etc., etc. es decir sabiendo los criterios se puede tener una tabla de asiganación de colores y mediante una macro (ya que hasta Excel 2007 el formato condicional sólo admite 3 condiciones, con 2007 no sé cuántos exactamente) similar a cualquiera de las que aportabas en tu ejemplo hacer que las filas se coloreen según los criterios marcados.

Un saludo desde Vitoria

P.S. Te adjunto un fichero que preparé hace tiempo para otro foro, verás que en la 3ª hoja hay unos nombres coloreados y un rango de fechas. En función de ese rango se colorean en la hoja principal los días afectados. No es exactamente tu caso sino un ejemplo de lo que te digo.

Como ya he comentado en otro mensaje, si este hilo se va a alargar quizás fuese interesante sacarlo de PRESENTACIONES y pasarlo a Macros, Funciones o General, creo que quedaría al alcance de más gente (las presentaciones no es lo que más se suele consultar en los foros, por lo menos yo)

CalendarioColoreado_io_7768_02.zip

Enlace a comentario
Compartir con otras webs

Apreciado ioyama:

El criterio del color se basa en los valores de la celda "D", los registros de la relación tienen asignado un valor (en texto, está claro) en la columna D. Opté por crear un campo aparte denominado "color" que es el de la columna "E" en base a que hay diferentes valores de la columna "D" que van con el mismo color; como ves, solamente es por una simple cuestión de simplicidad, a la hora de hacer la macro pretendo trabajar con "un valor=un color" en vez de que un color abarque a dos o más valores, por eso creé este campo con el nombre del color. Y todos los datos/registros de la lista provienen de una base de datos externa, excel solamente los consulta, calcula totales si procede, y formatea según condicionantes (más de tres en este caso).

por otra parte, estoy de acuerdo contigo en traspasar este hilo a "macros", pero recuerda lo "pardillo" que soy. ( ¿Cómo se traspasa? )

Gracias amigo. Saludos desde Lleida.

Enlace a comentario
Compartir con otras webs

Amigo efmc:

En primer lugar, igual que a ioyama, GRACIAS por ayudarme, sois estupendos.

Te explico: He aplicado todo lo que tú me has dicho en mi archivo y va perfectamente bien. Creo que lo he aplicado bien, los colores se me aplican a la perfeccion. En la ficha original las columnas a la izquierda no son 3, son diez; he modificado el valor en cuestión y va perfectamente. Creo que va genial tu planteamiento.

Solamente hay un problema: Tu trabajo funciona si yo voy a la columna donde está el nombre del color y allí le escribo manualmente un color de la lista; entonces se activan la macros y las se colorean tal y como yo pretendo. Pero si estos datos se recuperan de una consulta externa NO SE COLOREA NADA una vez la consulta se ha actualizado.

La solución a este problema tiene pinta como si solamente hubiera que cambiar la manera de ejecutarse esta macro... ¿NO?. También se le puede indicar a la misma macro que primero actualice la consulta en cuestión y luego pinte todos los registros según el valor de la columna del color... cierto ¿NO?

Gracias.

Enlace a comentario
Compartir con otras webs

Hola Emilio

En el adjunto tienes una posibilidad (se ejecuta al abrir el fichero, o bien llamando a la macro Colorear, puedes poner un botón o un acceso desde teclado).

Quizás a efmc se le ocurra algo más ágil (he probado el evento Worksheet_Activate, pero no me ha convencido, probablemente no habré estado suficientemente hábil)

Un saludo desde Vitoria

Listado_colores_io_fae.zip

Enlace a comentario
Compartir con otras webs

  • 3 months later...

Colores Formato Condicional

Buenos días, lleva varios días rompiendome la cabeza para asignar colores a las celdas cuando introduzco un dato y no me sale del todo bien o si hubiera otra forma que se pudiera hacer se lo agradecería.

Ejemplo.

Tengo que utilizar las celdas de la A1 B1 C1 D1 E1 F1 G1

* Introduzco un valor en A1 -> la celda cambia a color rojo

* Introduzco un valor en B1 -> cambia a color azul y la A1 a azul tambien

* Introduzco un valor en C1 -> cambia a amarillo, y a su vez B1 y A1 amarillo

* Introduzco un valor en D1 -> cambia a verde, y a su vez C1, B1 y A1 verde

* Introduzco un valor en E1 -> cambia a rosa, y a su vez D1, C1, B1 y A1 rosa

Si introduzco un valor en F1 (aqui sera texto 3 letras) la celda cambia color blanco

Si meto un valor en G1, color negro y que cambie a color negro a la vez F1, E1, y D1.

Un saludo y espero su ayuda. Gracias.

Enlace a comentario
Compartir con otras webs

Crear una cuenta o conéctate para comentar

Necesitas ser usuario para poder dejar un comentario

Crear una cuenta

Registrarse para una nueva cuenta en nuestra comunidad. ¡Es fácil!

Registrar una nueva cuenta

Conectarse

¿Ya tienes una cuenta? Conéctate aquí.

Conéctate ahora
  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • buenas noches, quisiera saber si puedo mejorar mi macros que se encuentra en el evento change de la hoja de calculo de Excel, son códigos de cálculos básicos, además si me pudieran ayudar a reducir el código o darme algún tip para reducirlo yo mismo estaría muy agradecido.  de ante mano muchas gracias     Private Sub Worksheet_Change(ByVal Target As Range)     Application.ScreenUpdating = False     Application.Calculation = xlManual     Application.EnableEvents = False              If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then             Sub todo()          Range("E22") = WorksheetFunction.Sum(Range("E4:E21"))     Range("E23") = WorksheetFunction.Sum(Range("E4:E19"))     Range("E24") = WorksheetFunction.Sum(Range("E23") - WorksheetFunction.Sum(Range("I4:I7")))     Range("i22") = WorksheetFunction.Sum(Range("I4:I21"))     Range("I4") = Range("E23") * 0.1     Range("I6") = Range("E23") * 0.0127     Range("I5") = Range("EN10") * Range("EN11")     Range("I7") = Range("E23") * 0.006     Range("I25") = Range("E22") - Range("I22")     Range("I12") = Range("E24") * 0.03     Range("C7") = WorksheetFunction.Sum(Range("EQ8") - (Range("EQ9"))) + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16")     'Range("E7") = WorksheetFunction.Sum(Range("C7") * ((Range("E4") * 0.0077777)))     Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19")     'Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 1.3) * 1.5) * Range("C9")     'Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 0.3)) * (Range("C8"))     Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 1.3) * 1.5) * Range("C9")     Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 0.3)) * (Range("C8"))     Range("E7") = WorksheetFunction.Sum((((Range("E4") / Range("C4")) * 7) / 44) * 1.5) * Range("C7")          End Sub              End If                  Application.Calculation = xlAutomatic     Application.ScreenUpdating = True     Application.EnableEvents = True     End Sub
    • Buenas perdonad la espera adjunto el fichero Excel y explico mas detallado lo que me solicitan: Lo que me solicitan es que esos CP de la pestaña Casos de prueba los cuales tienen formulas para que cuando se copien y peguen junto a sus pasos el CP se va autoincrementando a 1,2,3 etc...., pero si copias ese CP bien solo con el primer paso o con todos sus  pasos y lo insertas entre dos CP no continua con la numeración, como se ve en la foto al hacer eso el CP insertado continua con la numeración CP2 y el de abajo pone también CP2 no se incrementa ni ese ni el valor de CU que hay a la derecha que también es incremental. Necesitaría que continuara con esa numeración aun insertándolo entre medio de 2 tanto el CP como el CU de la derecha. También me solicitan que el campo Ciclo 1 de la pestaña Resumen es auto incremental cuando copias y pegas va sumando 1, pero en las formulas referentes a Ok KO Y bloqueo al copiar y pegar se mantiene la misma formula , la idea es que cuando copies y pegues la fila donde están los ciclos se autoincremente Ciclo a 1,2,3,4 etc... y la formula de los campos OK,KO y Bloqueos se incremente también pasando de la columna I a la J  luego a la k etc... y que en Resultados Ciclo el numero de la formula también se incremente Resultados Ciclo 1 , 2 ,3 etc... que cambie la columna a la vez que el numero de Resultados Ciclo. Gracias por adelantado un saludo. Plantilla v3 Pruebas.xlsx  
    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
    • Saludos a ambos. Copiar y pegar por sí solas, no tengo el conocimiento de que sirvan como "evento" para actualizar las referencias que buscas hacer, en la forma que lo quieres hacer, ó la fórmula como la quieres hacer. Te recomiendo abrir un tema similar en Macros, es posible que algún Maestro te de alguna idea. Por otro lado, si debe ser con funciones, entonces tendías que interactuar con COLUMNA() y FILA() para que al pegar el destino "sepa" donde está ubicado e intentar cambiar la referencia. =INDIRECTO(CARACTER(COLUMNA()+64)&FILA()) Algo como eso se podría usar para obtener el código ASCII de la letra de la columna (donde 65 es el código para “A”), y FILA() devuelve el número de la fila. La función CARACTER() convierte el código ASCII en una letra. Luego, INDIRECTO() toma la cadena resultante (por ejemplo, “A1”, “B2”, etc.) y la usa como una referencia de celda. En ese caso, una posible idea de editar tu ejemplo sería: =SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&"1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")); 0)   Enfatizo que es una idea, es muy probable que haya que editar. Así como esta su tema, la recomendación del maestro toma relevancia porque especular o deducir no es lo adecuado para intentar ayudar en este tipo de consultas. Por esta causa de mi parte por ejemplo no puedo aportar algo adicional.
    • En el ejemplo te he puesto 1 segundo para no hacer largo el gif, cámbialo a tu necesidad
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.