Formato condicional según valor otra hoja

Tengo un libro de varias hojas, dos de ellas son iguales, pero con distintos datos, por lo que no quiero que se copian valores, solo color fondo celda y necesito:
Que las celdas que cambien de color sean las celdas de la hoja "Horas", siempre y cuando esa misma celda en la hoja "Turnos" también tenga un valor ( distinto del de la hoja "Horas")quedando de la siguiente forma.
1-> Celda ( " " ) de hoja "Turnos" con valor y misma celda de hoja "Horas" también con valor, RESULTADO el fondo la celda
de la hoja "Horas" cambia al mismo que tiene esa celda en la hoja "Turnos"
2-> Celda ( " " ) de hoja "Turnos" sin valor y misma celda de hoja "Horas" con valor, RESULTADO el fondo la celda
de la hoja "Horas" se queda con el color que tiene (ahora es el mismo que tiene la celda D12, E12, F12, etc. Según macro
de formato condicional, Modulo 1 )
3-- Celda ( " " ) de hoja "Turnos" con valor y misma celda de hoja "Horas" sin valor, RESULTADO el fondo la celda
de la hoja "Horas" se queda con el color que tiene (ahora es el mismo que tiene la celda D12, E12, F12, etc. Según macro
de formato condicional, Modulo 1 )
Te intento adjuntar fichero en el cual ya hay macro en hoja "Turnos" la cual quiero mantener
En el modulo 1 he empezado a hacer una macro a base de formatos condicionales por cada una de las celdas pero que solo cumple dos de los tres condicionantes, ya que si el valor de la celda en hoja turnos esta vacío y en la hoja Horas esta lleno, muestra el color de la celda de la hoja turnos ( debería quedar con el color de la celda de la hoja Horas, más concretamente con el color de la celda D..
No se si me podrás ayudar, yo he empezado con formato condicional, pero son macros muy largas e inviables, luego pensé en que me copiara siempre los colores y luego yo con formato condicional le diría cuales deberían cambiar al mismo color que en la cabecera de los meses, cosa que no he sabido hacer, y ademas no aligera las macros ya que tengo que hacer dos macros por celda, una de ellas relacionada al valor de una celda de otra hoja y tampoco he sabido hacerla
Un Saludo y gracias de antemano
1

1 respuesta

Respuesta
1
Me gustaría ayudarte, pero para tener una idea más clara precisaría el fichero. Posteame tu e-amil y yo te envío el mio para el intercambio de ficheros. Me hago una idea de lo que necesitas pero quisiera tenerlo más claro antes de empezar a divagar con las macros y fórmulas...
Mandame tu email a [email protected] y te envío el fichero
Gracias
Si das por terminada la pregunta, cierra y valora la ayuda.
La contestación a la pregunta ha sido por intercambio de ficheros.
Para el resto de foreros, este es el trozo de código que se le ha añadido:
If Target.Column > 3 And Target.Column < 35 Then
        If Cells(Target.Row, 1) <> "" Then
            If Sheets("Horas").Range(Target.Address) <> "" And Sheets("Turnos").Range(Target.Address) <> "" Then
                Sheets("horas").Range(Target.Address).Interior.ColorIndex = Sheets("Turnos").Range(Target.Address).Interior.ColorIndex
            Else
                Sheets("horas").Range(Target.Address).Interior.ColorIndex = Sheets("horas").Cells(12, Target.Column).Interior.ColorIndex
            End If
        End If
    End If
Gracias por tu rapidez y eficiencia, te remito el fichero ya que solo colorea bien el mes de enero, el resto de los meses los colorea cogiendo como referencia la fila 12 del mes de enero
Un saludo y gracias
Con esta pequeña modificación que he realizado creo que funciona (por lo menos en las pruebas que yo he realizado). Recuerda cuando termines, cerrar y valorar la ayuda.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    HORAS_Copiar_Color_cabecera_meses_Enero '(Modulo 1 )
    Select Case Target.Row
        Case Is < 35
            FILA = 12
        Case Is < 58
            FILA = 35
        Case Is < 81
            FILA = 58
        Case Is < 104
            FILA = 81
        Case Is < 127
            FILA = 104
        Case Is < 150
            FILA = 127
        Case Is < 173
            FILA = 150
        Case Is < 196
            FILA = 173
        Case Is < 219
            FILA = 196
        Case Is < 242
            FILA = 219
        Case Is < 265
            FILA = 242
        Case Is < 288
            FILA = 265
    End Select
    If Target.Column > 3 And Target.Column < 35 Then
        For Each MICELDA In Range(Target.Address)
            If Cells(MICELDA.Row, 1) <> "" Then
                P = MICELDA.Address
                If Sheets("HORAS").Range(MICELDA.Address) <> "" And Sheets("Turnos").Range(MICELDA.Address) <> "" Then
                    COLO = Sheets("Turnos").Range(MICELDA.Address).Interior.ColorIndex
                    Sheets("Horas").Range(MICELDA.Address).Interior.ColorIndex = COLO
                Else
                    Sheets("Horas").Range(MICELDA.Address).Interior.ColorIndex = Sheets("Horas").Cells(FILA, MICELDA.Column).Interior.ColorIndex
                End If
            End If
       Next
    End If
End Sub
He probado y en las celdas coloreadas como fin de semana si en hoja turnos pones un valor y también lo pones en hoja horas funciona perfectamente pero si eliminas el valor de la hoja turnos en la hoja horas te muestra el color en gris, falla pero no va a ser problema de la macro, va a ser que en la hoja turnos están coloreadas las celdas con formato condicional, por lo que coge el color original de la celda, para solucionar este pequeño inconveniente necesitaríamos poner en la hoja turnos una macro que colorease las columnas según el color de las filas 12,35, etc y que no fuese por formato condicional un saludo y gracias
Simplemente hay que pegar parte del código en la hoja de Turnos. Es el trozo del Select case .... y cambiar el valor 12 por la variable FILA. Ya te he enviado el fichero modificado.
Cuando des por terminado el tema, cierra la pregunta y valora la ayuda.
Fabuloso, excepcional, maravilloso, con gente así da gusto trabajar experto recomendabe al 200%, muchas gracias por tu atención, dedicación y paciencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas