Ver celdas cambiadas

19/05/2010 - 10:01 por Belinda | Informe spam
..hola amigos...

Estoy buscando respuesta a esto, que creo haber visto antes, pero no
lo encuentro. Tengo una hoja con la que calculo nóminas.
La mayoría de sus datos son fijos, o sea que el dia 1 de cada mes ya
las tengo hechas. Luego, a fin de mes, solo tengo que modificar las
que tienen alguna incidencia. Mi pregunta es si hay alguna forma de
que, partiendo de una base de datos original, la del día 1, cuando
cambie algún dato, me resalte las celdas con cambios. Los cambios son
resultado de fórmulas.
La hoja la realizo a primeros de mes. En una fila pongo los días, el 1
al 31. En columnas, los nombre de las personas y en otro rango, los
datos. Si pongo un 1 a todos lo días laborables la hoja calcula las
horas y los diferentes conceptos del convenio en ese rango Si por
ejemplo, una persona falta un día determinado, ese día le pongo un 2,
con lo que varían todos los datos de esa fila...etc.
Gracias por vuestra ayuda

Preguntas similare

Leer las respuestas

#6 Belinda
19/05/2010 - 16:33 | Informe spam
On 19 mayo, 12:52, "Pedro F. Pardo" wrote:
On 19 May, 11:37, Belinda wrote:





> On 19 mayo, 12:19, "Pedro F. Pardo" wrote:

> > On 19 May, 10:27, Belinda wrote:

> > > On 19 mayo, 10:48, "Pedro F. Pardo" wrote:

> > > > On 19 May, 09:01, Belinda wrote:

> > > > > ..hola amigos...

> > > > > Estoy buscando respuesta a esto, que creo haber visto antes, pero no
> > > > > lo encuentro. Tengo una hoja con la que calculo nóminas.
> > > > > La mayoría de sus datos son fijos, o sea que el dia 1 de cada mes ya
> > > > > las tengo hechas. Luego, a fin de mes, solo tengo que modificar las
> > > > > que tienen alguna incidencia. Mi pregunta es si hay alguna forma de
> > > > > que, partiendo de una base de datos original, la del día 1, cuando
> > > > > cambie algún dato, me resalte las celdas con cambios. Los cambios son
> > > > > resultado de fórmulas.
> > > > > La hoja la realizo a primeros de mes. En una fila pongo los días, el 1
> > > > > al 31. En columnas, los nombre de las personas y en otro rango, los
> > > > > datos. Si pongo un 1 a todos lo días laborables la hoja calcula las
> > > > > horas y los diferentes conceptos del convenio en ese rango Si por
> > > > > ejemplo, una persona falta un día determinado, ese día le pongo un 2,
> > > > > con lo que varían todos los datos de esa fila...etc.
> > > > > Gracias por vuestra ayuda

> > > > Puedes usar el formato condicional.

> > > > Por ejemplo:

> > > > Si tienes:
> > > >            A                   B                 C
> > > >                              día 1               día2
> > > >     Empleado1            1                   <Formato condicional
> > > > eliges la opción: Formula Si  y escribes esto:   =$B2<>C2
> > > >     Empleado2            1
> > > >     Empleado3            1
> > > >     Empleado4            2
> > > >     Empleado5            1
> > > >     Empleado6            3

> > > > Escribe el formato condicional en la celda  C2
> > > > Escoge un formato para destacar la celda, Negrita, fondo amarillo, o
> > > > lo que quieras.
> > > > Copia el formato al resto del rango.

> > > > La fórmula lo que dice es que si el contenido de la celda donde estés
> > > > es distinto a lo que hay escrito en la misma fila pero en la columna
> > > > B, la celda en cuestión aparecerá marcada.

> > > > El dolar delante de la letra B es para fijar la Columna (la columna B)
> > > > que tomas como referencia para el resto del mes.

> > > > Tomando este ejemplo puedes adaptarlo a tus necesidades deopendiendo
> > > > de qué quieres que sirva como base fija y de como quieres marcar los
> > > > cambios.

> > > > Si necesitas ayuda en adaptarlo, solo pregunta ;-)- Ocultar texto de la cita -

> > > > - Mostrar texto de la cita -

> > > Gracias por responder Pedro...pero no es exactamente lo que necesito,
> > > ya que la hoja ya tiene sus formatos condicionales para otras cosas y
> > > las celdas cambian también din depender del 1 ó del 2 que haya en el
> > > cuadrante...

> > > La idea es, se me ocurrre, activar una macro que vaya marcando las
> > > celdas que cambien su valor en ese momento (rango de valores:
> > > J10:AJ206), incluso las que están en blanco, es decir no activar la
> > > macro hasta que vaya a hacer los cambios

> > > Lo que yo hago es (para ganar tiempo) pasar los datos de este primer
> > > cuadrante (sin incidencias) al programa que hace las nóminas. Luego, a
> > > final de mes, cuando tengo que cerrarlo, anoto en él las
> > > incidencias...Esas celdas, cuyos valores son modificados por estas
> > > incidencias y los nuevos valores que pueda haber (celdas en blanco)
> > > son las que debería marcarme la macro, ya que son solo las que voy a a
> > > modificar en el programa de nóminas

> > > Saludos

> > ok, ¿Cómo quieres marcar las celdas?
> > En negrita?
> > Con el fondo de alguna forma?

> > Te puedo dar las instrucciones básicas de la macro, por ejemplo:

> > Private Sub Worksheet_Change(ByVal Target As Range)

> >     If Target.Column > 10 And Target.Column < 37 And Target.Row > 9
> > And Target.Row < 207 Then 'Esto solo lo hace si se cambia algo dentro
> > del rango J10:AJ206
> >                 If Target.Value <> Cells(**fila**, **columna**).Value
> > Then 'si el valor que ha cambiado difiere del valor que has tomado
> > como referencia
> >                 'Esto pone la letra en negrita
> >                 Target.Font.Bold = True

> >                 'Esto pone el fondo amarillo
> >                 Target.Interior.ColorIndex = 36
> >                 Target.Interior.Pattern = xlSolid
> >         End If
> >     End If

> > End Sub


> > Cells(**fila**, **columna**) representa la celda que usas como
> > referencia (la del día 1)

> > Si esas celdas están en la columna J por ejemplo, es decir comparas
> > todas las columnas con la J tendrías que poner:

> > Cells(Target.Row, 10).Value

> > Fila: la misma de la celda que acabas de cambiar
> > Columna: 10 (equivale a la columna J)

> > No he probado esta macro en Excel, de modo que seguro que algo
> > falla :-) pero es solo una idea, tampoco sé exactamente donde está el
> > rango que tomas como base para ver las diferencias, si me das más
> > datos podemos afinarla un poco más. ¿o te basta con esto?

> > Saludos,- Ocultar texto de la cita -

> > - Mostrar texto de la cita -

> Hola Pedro...

> Cells(**fila**, **columna**) representa la celda que usas como
> referencia (la del día 1)

> ...creo que no me he explicado bien: No uso ninguna celda como
> referencia, es decir, la celda de referencia es la misma que quiero
> evaluar, o sea, todas las de ese rango.

> Es decir, quiero que la  macro marque con fondo verde (por ejemplo)
> que la celda L15 que antes tenia 428,00 ahora tiene 480,00, que la
> celda M13, que antes estaba en blanco, ahora tiene 1584,00con la
> salvedad de estos valores pueden ser cambiados debido a que esas
> celdas tienen fórmulas o que esos datos se los meto yo directamente

> Saludos

Entonces quizá es mucho más sencillo, prueba a ver si la opción
rastrear cambios, del menú Herramientas te sirve.
Marca donde pone: "donde", el rango de datos que quieres comprobar.

Mi excel está en Inglés y pone: Track Changes, no sé exactamente como
se dirá en Español.

Si no es suficiente aun podemos arreglar la macro ;-)- Ocultar texto de la cita -

- Mostrar texto de la cita -



gracias Pedro...puede valer, pero cada vez que lo hago, excel me da un
error de esos que se autorecupera. Uso Excel 2003. Me daría mas
tranquilidad un macro en el que pudiese ver yo lo que hace...

Saludos
Respuesta Responder a este mensaje
#7 Pedro F. Pardo
19/05/2010 - 18:54 | Informe spam
On 19 May, 15:33, Belinda wrote:
On 19 mayo, 12:52, "Pedro F. Pardo" wrote:



> On 19 May, 11:37, Belinda wrote:

> > On 19 mayo, 12:19, "Pedro F. Pardo" wrote:

> > > On 19 May, 10:27, Belinda wrote:

> > > > On 19 mayo, 10:48, "Pedro F. Pardo" wrote:

> > > > > On 19 May, 09:01, Belinda wrote:

> > > > > > ..hola amigos...

> > > > > > Estoy buscando respuesta a esto, que creo haber visto antes, pero no
> > > > > > lo encuentro. Tengo una hoja con la que calculo nóminas.
> > > > > > La mayoría de sus datos son fijos, o sea que el dia 1 de cada mes ya
> > > > > > las tengo hechas. Luego, a fin de mes, solo tengo que modificar las
> > > > > > que tienen alguna incidencia. Mi pregunta es si hay alguna forma de
> > > > > > que, partiendo de una base de datos original, la del día 1, cuando
> > > > > > cambie algún dato, me resalte las celdas con cambios. Los cambios son
> > > > > > resultado de fórmulas.
> > > > > > La hoja la realizo a primeros de mes. En una fila pongo los días, el 1
> > > > > > al 31. En columnas, los nombre de las personas y en otro rango, los
> > > > > > datos. Si pongo un 1 a todos lo días laborables la hoja calcula las
> > > > > > horas y los diferentes conceptos del convenio en ese rango Si por
> > > > > > ejemplo, una persona falta un día determinado, ese día le pongo un 2,
> > > > > > con lo que varían todos los datos de esa fila...etc.
> > > > > > Gracias por vuestra ayuda

> > > > > Puedes usar el formato condicional.

> > > > > Por ejemplo:

> > > > > Si tienes:
> > > > >            A                   B                 C
> > > > >                              día 1               día2
> > > > >     Empleado1            1                   <Formato condicional
> > > > > eliges la opción: Formula Si  y escribes esto:   =$B2<>C2
> > > > >     Empleado2            1
> > > > >     Empleado3            1
> > > > >     Empleado4            2
> > > > >     Empleado5            1
> > > > >     Empleado6            3

> > > > > Escribe el formato condicional en la celda  C2
> > > > > Escoge un formato para destacar la celda, Negrita, fondo amarillo, o
> > > > > lo que quieras.
> > > > > Copia el formato al resto del rango.

> > > > > La fórmula lo que dice es que si el contenido de la celda donde estés
> > > > > es distinto a lo que hay escrito en la misma fila pero en la columna
> > > > > B, la celda en cuestión aparecerá marcada.

> > > > > El dolar delante de la letra B es para fijar la Columna (la columna B)
> > > > > que tomas como referencia para el resto del mes.

> > > > > Tomando este ejemplo puedes adaptarlo a tus necesidades deopendiendo
> > > > > de qué quieres que sirva como base fija y de como quieres marcar los
> > > > > cambios.

> > > > > Si necesitas ayuda en adaptarlo, solo pregunta ;-)- Ocultar texto de la cita -

> > > > > - Mostrar texto de la cita -

> > > > Gracias por responder Pedro...pero no es exactamente lo que necesito,
> > > > ya que la hoja ya tiene sus formatos condicionales para otras cosas y
> > > > las celdas cambian también din depender del 1 ó del 2 que haya en el
> > > > cuadrante...

> > > > La idea es, se me ocurrre, activar una macro que vaya marcando las
> > > > celdas que cambien su valor en ese momento (rango de valores:
> > > > J10:AJ206), incluso las que están en blanco, es decir no activar la
> > > > macro hasta que vaya a hacer los cambios

> > > > Lo que yo hago es (para ganar tiempo) pasar los datos de este primer
> > > > cuadrante (sin incidencias) al programa que hace las nóminas. Luego, a
> > > > final de mes, cuando tengo que cerrarlo, anoto en él las
> > > > incidencias...Esas celdas, cuyos valores son modificados por estas
> > > > incidencias y los nuevos valores que pueda haber (celdas en blanco)
> > > > son las que debería marcarme la macro, ya que son solo las que voy a a
> > > > modificar en el programa de nóminas

> > > > Saludos

> > > ok, ¿Cómo quieres marcar las celdas?
> > > En negrita?
> > > Con el fondo de alguna forma?

> > > Te puedo dar las instrucciones básicas de la macro, por ejemplo:

> > > Private Sub Worksheet_Change(ByVal Target As Range)

> > >     If Target.Column > 10 And Target.Column < 37 And Target.Row > 9
> > > And Target.Row < 207 Then 'Esto solo lo hace si se cambia algo dentro
> > > del rango J10:AJ206
> > >                 If Target.Value <> Cells(**fila**, **columna**).Value
> > > Then 'si el valor que ha cambiado difiere del valor que has tomado
> > > como referencia
> > >                 'Esto pone la letra en negrita
> > >                 Target.Font.Bold = True

> > >                 'Esto pone el fondo amarillo
> > >                 Target.Interior.ColorIndex = 36
> > >                 Target.Interior.Pattern = xlSolid
> > >         End If
> > >     End If

> > > End Sub


> > > Cells(**fila**, **columna**) representa la celda que usas como
> > > referencia (la del día 1)

> > > Si esas celdas están en la columna J por ejemplo, es decir comparas
> > > todas las columnas con la J tendrías que poner:

> > > Cells(Target.Row, 10).Value

> > > Fila: la misma de la celda que acabas de cambiar
> > > Columna: 10 (equivale a la columna J)

> > > No he probado esta macro en Excel, de modo que seguro que algo
> > > falla :-) pero es solo una idea, tampoco sé exactamente donde está el
> > > rango que tomas como base para ver las diferencias, si me das más
> > > datos podemos afinarla un poco más. ¿o te basta con esto?

> > > Saludos,- Ocultar texto de la cita -

> > > - Mostrar texto de la cita -

> > Hola Pedro...

> > Cells(**fila**, **columna**) representa la celda que usas como
> > referencia (la del día 1)

> > ...creo que no me he explicado bien: No uso ninguna celda como
> > referencia, es decir, la celda de referencia es la misma que quiero
> > evaluar, o sea, todas las de ese rango.

> > Es decir, quiero que la  macro marque con fondo verde (por ejemplo)
> > que la celda L15 que antes tenia 428,00 ahora tiene 480,00, que la
> > celda M13, que antes estaba en blanco, ahora tiene 1584,00con la
> > salvedad de estos valores pueden ser cambiados debido a que esas
> > celdas tienen fórmulas o que esos datos se los meto yo directamente

> > Saludos

> Entonces quizá es mucho más sencillo, prueba a ver si la opción
> rastrear cambios, del menú Herramientas te sirve.
> Marca donde pone: "donde", el rango de datos que quieres comprobar.

> Mi excel está en Inglés y pone: Track Changes, no sé exactamente como
> se dirá en Español.

> Si no es suficiente aun podemos arreglar la macro ;-)- Ocultar texto de la cita -

> - Mostrar texto de la cita -

gracias Pedro...puede valer, pero cada vez que lo hago, excel me da un
error de esos que se autorecupera. Uso Excel 2003. Me daría mas
tranquilidad un macro en el que pudiese ver yo lo que hace...

Saludos



Prueba esta macro entonces:

Private Sub Worksheet_Change(ByVal Target As Range)
primera_columna = 10 'Columna J
ultima_columna = 36 'Columna AJ
primera_fila = 10 'Fila 10
ultima_fila = 206 'Fila 206

C=Target.column
F=Target.row

If C > primera_columna - 1 And C < ultima_columna + 1 And F >
primera_fila - 1 And F < ultima_fila + 1 Then
'Esto pone la letra en negrita
Target.Font.Bold = True

'Esto pone el fondo amarillo
Target.Interior.ColorIndex = 36
Target.Interior.Pattern = xlSolid
End If
End Sub
Respuesta Responder a este mensaje
#8 Pedro F. Pardo
19/05/2010 - 18:57 | Informe spam
On 19 May, 17:54, "Pedro F. Pardo" wrote:
On 19 May, 15:33, Belinda wrote:



> On 19 mayo, 12:52, "Pedro F. Pardo" wrote:

> > On 19 May, 11:37, Belinda wrote:

> > > On 19 mayo, 12:19, "Pedro F. Pardo" wrote:

> > > > On 19 May, 10:27, Belinda wrote:

> > > > > On 19 mayo, 10:48, "Pedro F. Pardo" wrote:

> > > > > > On 19 May, 09:01, Belinda wrote:

> > > > > > > ..hola amigos...

> > > > > > > Estoy buscando respuesta a esto, que creo haber visto antes, pero no
> > > > > > > lo encuentro. Tengo una hoja con la que calculo nóminas.
> > > > > > > La mayoría de sus datos son fijos, o sea que el dia 1 de cada mes ya
> > > > > > > las tengo hechas. Luego, a fin de mes, solo tengo que modificar las
> > > > > > > que tienen alguna incidencia. Mi pregunta es si hay alguna forma de
> > > > > > > que, partiendo de una base de datos original, la del día 1, cuando
> > > > > > > cambie algún dato, me resalte las celdas con cambios. Los cambios son
> > > > > > > resultado de fórmulas.
> > > > > > > La hoja la realizo a primeros de mes. En una fila pongo los días, el 1
> > > > > > > al 31. En columnas, los nombre de las personas y en otro rango, los
> > > > > > > datos. Si pongo un 1 a todos lo días laborables la hoja calcula las
> > > > > > > horas y los diferentes conceptos del convenio en ese rango Si por
> > > > > > > ejemplo, una persona falta un día determinado, ese día le pongo un 2,
> > > > > > > con lo que varían todos los datos de esa fila...etc.
> > > > > > > Gracias por vuestra ayuda

> > > > > > Puedes usar el formato condicional.

> > > > > > Por ejemplo:

> > > > > > Si tienes:
> > > > > >            A                   B                 C
> > > > > >                              día 1               día2
> > > > > >     Empleado1            1                   <Formato condicional
> > > > > > eliges la opción: Formula Si  y escribes esto:   =$B2<>C2
> > > > > >     Empleado2            1
> > > > > >     Empleado3            1
> > > > > >     Empleado4            2
> > > > > >     Empleado5            1
> > > > > >     Empleado6            3

> > > > > > Escribe el formato condicional en la celda  C2
> > > > > > Escoge un formato para destacar la celda, Negrita, fondo amarillo, o
> > > > > > lo que quieras.
> > > > > > Copia el formato al resto del rango.

> > > > > > La fórmula lo que dice es que si el contenido de la celda donde estés
> > > > > > es distinto a lo que hay escrito en la misma fila pero en la columna
> > > > > > B, la celda en cuestión aparecerá marcada.

> > > > > > El dolar delante de la letra B es para fijar la Columna (la columna B)
> > > > > > que tomas como referencia para el resto del mes.

> > > > > > Tomando este ejemplo puedes adaptarlo a tus necesidades deopendiendo
> > > > > > de qué quieres que sirva como base fija y de como quieres marcar los
> > > > > > cambios.

> > > > > > Si necesitas ayuda en adaptarlo, solo pregunta ;-)- Ocultar texto de la cita -

> > > > > > - Mostrar texto de la cita -

> > > > > Gracias por responder Pedro...pero no es exactamente lo que necesito,
> > > > > ya que la hoja ya tiene sus formatos condicionales para otras cosas y
> > > > > las celdas cambian también din depender del 1 ó del 2 que haya en el
> > > > > cuadrante...

> > > > > La idea es, se me ocurrre, activar una macro que vaya marcando las
> > > > > celdas que cambien su valor en ese momento (rango de valores:
> > > > > J10:AJ206), incluso las que están en blanco, es decir no activar la
> > > > > macro hasta que vaya a hacer los cambios

> > > > > Lo que yo hago es (para ganar tiempo) pasar los datos de este primer
> > > > > cuadrante (sin incidencias) al programa que hace las nóminas. Luego, a
> > > > > final de mes, cuando tengo que cerrarlo, anoto en él las
> > > > > incidencias...Esas celdas, cuyos valores son modificados por estas
> > > > > incidencias y los nuevos valores que pueda haber (celdas en blanco)
> > > > > son las que debería marcarme la macro, ya que son solo las que voy a a
> > > > > modificar en el programa de nóminas

> > > > > Saludos

> > > > ok, ¿Cómo quieres marcar las celdas?
> > > > En negrita?
> > > > Con el fondo de alguna forma?

> > > > Te puedo dar las instrucciones básicas de la macro, por ejemplo:

> > > > Private Sub Worksheet_Change(ByVal Target As Range)

> > > >     If Target.Column > 10 And Target.Column < 37 And Target.Row > 9
> > > > And Target.Row < 207 Then 'Esto solo lo hace si se cambia algo dentro
> > > > del rango J10:AJ206
> > > >                 If Target.Value <> Cells(**fila**, **columna**).Value
> > > > Then 'si el valor que ha cambiado difiere del valor que has tomado
> > > > como referencia
> > > >                 'Esto pone la letra en negrita
> > > >                 Target.Font.Bold = True

> > > >                 'Esto pone el fondo amarillo
> > > >                 Target.Interior.ColorIndex = 36
> > > >                 Target.Interior.Pattern = xlSolid
> > > >         End If
> > > >     End If

> > > > End Sub


> > > > Cells(**fila**, **columna**) representa la celda que usas como
> > > > referencia (la del día 1)

> > > > Si esas celdas están en la columna J por ejemplo, es decir comparas
> > > > todas las columnas con la J tendrías que poner:

> > > > Cells(Target.Row, 10).Value

> > > > Fila: la misma de la celda que acabas de cambiar
> > > > Columna: 10 (equivale a la columna J)

> > > > No he probado esta macro en Excel, de modo que seguro que algo
> > > > falla :-) pero es solo una idea, tampoco sé exactamente donde está el
> > > > rango que tomas como base para ver las diferencias, si me das más
> > > > datos podemos afinarla un poco más. ¿o te basta con esto?

> > > > Saludos,- Ocultar texto de la cita -

> > > > - Mostrar texto de la cita -

> > > Hola Pedro...

> > > Cells(**fila**, **columna**) representa la celda que usas como
> > > referencia (la del día 1)

> > > ...creo que no me he explicado bien: No uso ninguna celda como
> > > referencia, es decir, la celda de referencia es la misma que quiero
> > > evaluar, o sea, todas las de ese rango.

> > > Es decir, quiero que la  macro marque con fondo verde (por ejemplo)
> > > que la celda L15 que antes tenia 428,00 ahora tiene 480,00, que la
> > > celda M13, que antes estaba en blanco, ahora tiene 1584,00con la
> > > salvedad de estos valores pueden ser cambiados debido a que esas
> > > celdas tienen fórmulas o que esos datos se los meto yo directamente

> > > Saludos

> > Entonces quizá es mucho más sencillo, prueba a ver si la opción
> > rastrear cambios, del menú Herramientas te sirve.
> > Marca donde pone: "donde", el rango de datos que quieres comprobar.

> > Mi excel está en Inglés y pone: Track Changes, no sé exactamente como
> > se dirá en Español.

> > Si no es suficiente aun podemos arreglar la macro ;-)- Ocultar texto de la cita -

> > - Mostrar texto de la cita -

> gracias Pedro...puede valer, pero cada vez que lo hago, excel me da un
> error de esos que se autorecupera. Uso Excel 2003. Me daría mas
> tranquilidad un macro en el que pudiese ver yo lo que hace...

> Saludos

Prueba esta macro entonces:

Private Sub Worksheet_Change(ByVal Target As Range)
    primera_columna = 10 'Columna J
    ultima_columna = 36  'Columna AJ
    primera_fila = 10    'Fila 10
    ultima_fila = 206    'Fila 206

    C=Target.column
    F=Target.row

    If C > primera_columna - 1 And C < ultima_columna + 1 And F >
primera_fila - 1 And F < ultima_fila + 1 Then
        'Esto pone la letra en negrita
        Target.Font.Bold = True

        'Esto pone el fondo amarillo
        Target.Interior.ColorIndex = 36
        Target.Interior.Pattern = xlSolid
    End If
End Sub



lo de "primera_fila -1" etc... debería aparecer en la línea de arriba
a continuación de " And F >"

borra el salto de línea para que funcione ;-)
Respuesta Responder a este mensaje
#9 Belinda
20/05/2010 - 09:53 | Informe spam
On 19 mayo, 18:57, "Pedro F. Pardo" wrote:
On 19 May, 17:54, "Pedro F. Pardo" wrote:





> On 19 May, 15:33,Belinda wrote:

> > On 19 mayo, 12:52, "Pedro F. Pardo" wrote:

> > > On 19 May, 11:37,Belinda wrote:

> > > > On 19 mayo, 12:19, "Pedro F. Pardo" wrote:

> > > > > On 19 May, 10:27,Belinda wrote:

> > > > > > On 19 mayo, 10:48, "Pedro F. Pardo" wrote:

> > > > > > > On 19 May, 09:01,Belinda wrote:

> > > > > > > > ..hola amigos...

> > > > > > > > Estoy buscando respuesta a esto, que creo haber visto antes, pero no
> > > > > > > > lo encuentro. Tengo una hoja con la que calculo nóminas.
> > > > > > > > La mayoría de sus datos son fijos, o sea que el dia 1 de cada mes ya
> > > > > > > > las tengo hechas. Luego, a fin de mes, solo tengo que modificar las
> > > > > > > > que tienen alguna incidencia. Mi pregunta es si hay alguna forma de
> > > > > > > > que, partiendo de una base de datos original, la del día 1, cuando
> > > > > > > > cambie algún dato, me resalte las celdas con cambios. Los cambios son
> > > > > > > > resultado de fórmulas.
> > > > > > > > La hoja la realizo a primeros de mes. En una fila pongo los días, el 1
> > > > > > > > al 31. En columnas, los nombre de las personas y en otro rango, los
> > > > > > > > datos. Si pongo un 1 a todos lo días laborables la hoja calcula las
> > > > > > > > horas y los diferentes conceptos del convenio en ese rango Si por
> > > > > > > > ejemplo, una persona falta un día determinado, ese día le pongo un 2,
> > > > > > > > con lo que varían todos los datos de esa fila...etc.
> > > > > > > > Gracias por vuestra ayuda

> > > > > > > Puedes usar el formato condicional.

> > > > > > > Por ejemplo:

> > > > > > > Si tienes:
> > > > > > >            A                   B                 C
> > > > > > >                              día 1               día2
> > > > > > >     Empleado1            1                   <Formato condicional
> > > > > > > eliges la opción: Formula Si  y escribes esto:   =$B2<>C2
> > > > > > >     Empleado2            1
> > > > > > >     Empleado3            1
> > > > > > >     Empleado4            2
> > > > > > >     Empleado5            1
> > > > > > >     Empleado6            3

> > > > > > > Escribe el formato condicional en la celda  C2
> > > > > > > Escoge un formato para destacar la celda, Negrita, fondo amarillo, o
> > > > > > > lo que quieras.
> > > > > > > Copia el formato al resto del rango.

> > > > > > > La fórmula lo que dice es que si el contenido de la celda donde estés
> > > > > > > es distinto a lo que hay escrito en la misma fila pero en la columna
> > > > > > > B, la celda en cuestión aparecerá marcada.

> > > > > > > El dolar delante de la letra B es para fijar la Columna (la columna B)
> > > > > > > que tomas como referencia para el resto del mes.

> > > > > > > Tomando este ejemplo puedes adaptarlo a tus necesidades deopendiendo
> > > > > > > de qué quieres que sirva como base fija y de como quieres marcar los
> > > > > > > cambios.

> > > > > > > Si necesitas ayuda en adaptarlo, solo pregunta ;-)- Ocultar texto de la cita -

> > > > > > > - Mostrar texto de la cita -

> > > > > > Gracias por responder Pedro...pero no es exactamente lo que necesito,
> > > > > > ya que la hoja ya tiene sus formatos condicionales para otras cosas y
> > > > > > las celdas cambian también din depender del 1 ó del 2 que haya en el
> > > > > > cuadrante...

> > > > > > La idea es, se me ocurrre, activar una macro que vaya marcando las
> > > > > > celdas que cambien su valor en ese momento (rango de valores:
> > > > > > J10:AJ206), incluso las que están en blanco, es decir no activar la
> > > > > > macro hasta que vaya a hacer los cambios

> > > > > > Lo que yo hago es (para ganar tiempo) pasar los datos de este primer
> > > > > > cuadrante (sin incidencias) al programa que hace las nóminas. Luego, a
> > > > > > final de mes, cuando tengo que cerrarlo, anoto en él las
> > > > > > incidencias...Esas celdas, cuyos valores son modificados por estas
> > > > > > incidencias y los nuevos valores que pueda haber (celdas en blanco)
> > > > > > son las que debería marcarme la macro, ya que son solo las que voy a a
> > > > > > modificar en el programa de nóminas

> > > > > > Saludos

> > > > > ok, ¿Cómo quieres marcar las celdas?
> > > > > En negrita?
> > > > > Con el fondo de alguna forma?

> > > > > Te puedo dar las instrucciones básicas de la macro, por ejemplo:

> > > > > Private Sub Worksheet_Change(ByVal Target As Range)

> > > > >     If Target.Column > 10 And Target.Column < 37 And Target.Row > 9
> > > > > And Target.Row < 207 Then 'Esto solo lo hace si se cambia algo dentro
> > > > > del rango J10:AJ206
> > > > >                 If Target.Value <> Cells(**fila**, **columna**).Value
> > > > > Then 'si el valor que ha cambiado difiere del valor que has tomado
> > > > > como referencia
> > > > >                 'Esto pone la letra en negrita
> > > > >                 Target.Font.Bold = True

> > > > >                 'Esto pone el fondo amarillo
> > > > >                 Target.Interior.ColorIndex = 36
> > > > >                 Target.Interior.Pattern = xlSolid
> > > > >         End If
> > > > >     End If

> > > > > End Sub


> > > > > Cells(**fila**, **columna**) representa la celda que usas como
> > > > > referencia (la del día 1)

> > > > > Si esas celdas están en la columna J por ejemplo, es decir comparas
> > > > > todas las columnas con la J tendrías que poner:

> > > > > Cells(Target.Row, 10).Value

> > > > > Fila: la misma de la celda que acabas de cambiar
> > > > > Columna: 10 (equivale a la columna J)

> > > > > No he probado esta macro en Excel, de modo que seguro que algo
> > > > > falla :-) pero es solo una idea, tampoco sé exactamente donde está el
> > > > > rango que tomas como base para ver las diferencias, si me das más
> > > > > datos podemos afinarla un poco más. ¿o te basta con esto?

> > > > > Saludos,- Ocultar texto de la cita -

> > > > > - Mostrar texto de la cita -

> > > > Hola Pedro...

> > > > Cells(**fila**, **columna**) representa la celda que usas como
> > > > referencia (la del día 1)

> > > > ...creo que no me he explicado bien: No uso ninguna celda como
> > > > referencia, es decir, la celda de referencia es la misma que quiero
> > > > evaluar, o sea, todas las de ese rango.

> > > > Es decir, quiero que la  macro marque con fondo verde (por ejemplo)
> > > > que la celda L15 que antes tenia 428,00 ahora tiene 480,00, que la
> > > > celda M13, que antes estaba en blanco, ahora tiene 1584,00con la
> > > > salvedad de estos valores pueden ser cambiados debido a que esas
> > > > celdas tienen fórmulas o que esos datos se los meto yo directamente

> > > > Saludos

> > > Entonces quizá es mucho más sencillo, prueba a ver si la opción
> > > rastrear cambios, del menú Herramientas te sirve.
> > > Marca donde pone: "donde", el rango de datos que quieres comprobar.

> > > Mi excel está en Inglés y pone: Track Changes, no sé exactamente como
> > > se dirá en Español.

> > > Si no es suficiente aun podemos arreglar la macro ;-)- Ocultar texto de la cita -

> > > - Mostrar texto de la cita -

> > gracias Pedro...puede valer, pero cada vez que lo hago, excel me da un
> > error de esos que se autorecupera. Uso Excel 2003. Me daría mas
> > tranquilidad un macro en el que pudiese ver yo lo que hace...

> > Saludos

> Prueba esta macro entonces:

> Private Sub Worksheet_Change(ByVal Target As Range)
>     primera_columna = 10 'Columna J
>     ultima_columna = 36  'Columna AJ
>     primera_fila = 10    'Fila 10
>     ultima_fila = 206    'Fila 206

>     C=Target.column
>     F=Target.row

>     If C > primera_columna - 1 And C < ultima_columna + 1 And F >
> primera_fila - 1 And F < ultima_fila + 1 Then
>         'Esto pone la letra en negrita
>         Target.Font.Bold = True

>         'Esto pone el fondo amarillo
>         Target.Interior.ColorIndex = 36
>         Target.Interior.Pattern = xlSolid
>     End If
> End Sub

lo de "primera_fila -1" etc... debería aparecer en la línea de arriba
a continuación de " And F >"

borra el salto de línea para que funcione ;-)- Ocultar texto de la cita -

- Mostrar texto de la cita -



Gracias Pedro...

El caso es que funciona sin cambiar lo que dices. Entiendo que lo que
has hecho es que sobre una hoja determinada, la macro evalúa si en
cada celda ha habido un + - 1 y en caso de que asi sea, actúa. El
"poblema" es que solo lo hace cuando metes algo manualmente, es
decir, no hace nada cuando una celda es modificada debido a una
fórmula¿Es posible forzar la macro para que también haga algo
cuando esa/s celdas son modificadas por efecto de una fórmula?. Ej: si
yo pongo 12 en una celda en blanco, bien, si le sumo a una celda +2,
también actua, pero sin en AF 5 tengo la formula ¡ y en A1 pongo
algo diferente de lo que hay, AF5 se actualiza, pero la macro no marca
el cambio

Saludos
Respuesta Responder a este mensaje
#10 Pedro F. Pardo
20/05/2010 - 16:34 | Informe spam
On 20 May, 08:53, Belinda wrote:
On 19 mayo, 18:57, "Pedro F. Pardo" wrote:



> On 19 May, 17:54, "Pedro F. Pardo" wrote:

> > On 19 May, 15:33,Belinda wrote:

> > > On 19 mayo, 12:52, "Pedro F. Pardo" wrote:

> > > > On 19 May, 11:37,Belinda wrote:

> > > > > On 19 mayo, 12:19, "Pedro F. Pardo" wrote:

> > > > > > On 19 May, 10:27,Belinda wrote:

> > > > > > > On 19 mayo, 10:48, "Pedro F. Pardo" wrote:

> > > > > > > > On 19 May, 09:01,Belinda wrote:

> > > > > > > > > ..hola amigos...

> > > > > > > > > Estoy buscando respuesta a esto, que creo haber visto antes, pero no
> > > > > > > > > lo encuentro. Tengo una hoja con la que calculo nóminas.
> > > > > > > > > La mayoría de sus datos son fijos, o sea que el dia 1 de cada mes ya
> > > > > > > > > las tengo hechas. Luego, a fin de mes, solo tengo que modificar las
> > > > > > > > > que tienen alguna incidencia. Mi pregunta es si hay alguna forma de
> > > > > > > > > que, partiendo de una base de datos original, la del día 1, cuando
> > > > > > > > > cambie algún dato, me resalte las celdas con cambios. Los cambios son
> > > > > > > > > resultado de fórmulas.
> > > > > > > > > La hoja la realizo a primeros de mes. En una fila pongo los días, el 1
> > > > > > > > > al 31. En columnas, los nombre de las personas y en otro rango, los
> > > > > > > > > datos. Si pongo un 1 a todos lo días laborables la hoja calcula las
> > > > > > > > > horas y los diferentes conceptos del convenio en ese rango Si por
> > > > > > > > > ejemplo, una persona falta un día determinado, ese día le pongo un 2,
> > > > > > > > > con lo que varían todos los datos de esa fila...etc.
> > > > > > > > > Gracias por vuestra ayuda

> > > > > > > > Puedes usar el formato condicional.

> > > > > > > > Por ejemplo:

> > > > > > > > Si tienes:
> > > > > > > >            A                   B                 C
> > > > > > > >                              día 1               día2
> > > > > > > >     Empleado1            1                   <Formato condicional
> > > > > > > > eliges la opción: Formula Si  y escribes esto:   =$B2<>C2
> > > > > > > >     Empleado2            1
> > > > > > > >     Empleado3            1
> > > > > > > >     Empleado4            2
> > > > > > > >     Empleado5            1
> > > > > > > >     Empleado6            3

> > > > > > > > Escribe el formato condicional en la celda  C2
> > > > > > > > Escoge un formato para destacar la celda, Negrita, fondo amarillo, o
> > > > > > > > lo que quieras.
> > > > > > > > Copia el formato al resto del rango.

> > > > > > > > La fórmula lo que dice es que si el contenido de la celda donde estés
> > > > > > > > es distinto a lo que hay escrito en la misma fila pero en la columna
> > > > > > > > B, la celda en cuestión aparecerá marcada.

> > > > > > > > El dolar delante de la letra B es para fijar la Columna (la columna B)
> > > > > > > > que tomas como referencia para el resto del mes.

> > > > > > > > Tomando este ejemplo puedes adaptarlo a tus necesidades deopendiendo
> > > > > > > > de qué quieres que sirva como base fija y de como quieres marcar los
> > > > > > > > cambios.

> > > > > > > > Si necesitas ayuda en adaptarlo, solo pregunta ;-)- Ocultar texto de la cita -

> > > > > > > > - Mostrar texto de la cita -

> > > > > > > Gracias por responder Pedro...pero no es exactamente lo que necesito,
> > > > > > > ya que la hoja ya tiene sus formatos condicionales para otras cosas y
> > > > > > > las celdas cambian también din depender del 1 ó del 2 que haya en el
> > > > > > > cuadrante...

> > > > > > > La idea es, se me ocurrre, activar una macro que vaya marcando las
> > > > > > > celdas que cambien su valor en ese momento (rango de valores:
> > > > > > > J10:AJ206), incluso las que están en blanco, es decir no activar la
> > > > > > > macro hasta que vaya a hacer los cambios

> > > > > > > Lo que yo hago es (para ganar tiempo) pasar los datos de este primer
> > > > > > > cuadrante (sin incidencias) al programa que hace las nóminas. Luego, a
> > > > > > > final de mes, cuando tengo que cerrarlo, anoto en él las
> > > > > > > incidencias...Esas celdas, cuyos valores son modificados por estas
> > > > > > > incidencias y los nuevos valores que pueda haber (celdas en blanco)
> > > > > > > son las que debería marcarme la macro, ya que son solo las que voy a a
> > > > > > > modificar en el programa de nóminas

> > > > > > > Saludos

> > > > > > ok, ¿Cómo quieres marcar las celdas?
> > > > > > En negrita?
> > > > > > Con el fondo de alguna forma?

> > > > > > Te puedo dar las instrucciones básicas de la macro, por ejemplo:

> > > > > > Private Sub Worksheet_Change(ByVal Target As Range)

> > > > > >     If Target.Column > 10 And Target.Column < 37 And Target.Row > 9
> > > > > > And Target.Row < 207 Then 'Esto solo lo hace si se cambia algo dentro
> > > > > > del rango J10:AJ206
> > > > > >                 If Target.Value <> Cells(**fila**, **columna**).Value
> > > > > > Then 'si el valor que ha cambiado difiere del valor que has tomado
> > > > > > como referencia
> > > > > >                 'Esto pone la letra en negrita
> > > > > >                 Target.Font.Bold = True

> > > > > >                 'Esto pone el fondo amarillo
> > > > > >                 Target.Interior.ColorIndex = 36
> > > > > >                 Target.Interior.Pattern = xlSolid
> > > > > >         End If
> > > > > >     End If

> > > > > > End Sub


> > > > > > Cells(**fila**, **columna**) representa la celda que usas como
> > > > > > referencia (la del día 1)

> > > > > > Si esas celdas están en la columna J por ejemplo, es decir comparas
> > > > > > todas las columnas con la J tendrías que poner:

> > > > > > Cells(Target.Row, 10).Value

> > > > > > Fila: la misma de la celda que acabas de cambiar
> > > > > > Columna: 10 (equivale a la columna J)

> > > > > > No he probado esta macro en Excel, de modo que seguro que algo
> > > > > > falla :-) pero es solo una idea, tampoco sé exactamente donde está el
> > > > > > rango que tomas como base para ver las diferencias, si me das más
> > > > > > datos podemos afinarla un poco más. ¿o te basta con esto?

> > > > > > Saludos,- Ocultar texto de la cita -

> > > > > > - Mostrar texto de la cita -

> > > > > Hola Pedro...

> > > > > Cells(**fila**, **columna**) representa la celda que usas como
> > > > > referencia (la del día 1)

> > > > > ...creo que no me he explicado bien: No uso ninguna celda como
> > > > > referencia, es decir, la celda de referencia es la misma que quiero
> > > > > evaluar, o sea, todas las de ese rango.

> > > > > Es decir, quiero que la  macro marque con fondo verde (por ejemplo)
> > > > > que la celda L15 que antes tenia 428,00 ahora tiene 480,00, que la
> > > > > celda M13, que antes estaba en blanco, ahora tiene 1584,00con la
> > > > > salvedad de estos valores pueden ser cambiados debido a que esas
> > > > > celdas tienen fórmulas o que esos datos se los meto yo directamente

> > > > > Saludos

> > > > Entonces quizá es mucho más sencillo, prueba a ver si la opción
> > > > rastrear cambios, del menú Herramientas te sirve.
> > > > Marca donde pone: "donde", el rango de datos que quieres comprobar.

> > > > Mi excel está en Inglés y pone: Track Changes, no sé exactamente como
> > > > se dirá en Español.

> > > > Si no es suficiente aun podemos arreglar la macro ;-)- Ocultar texto de la cita -

> > > > - Mostrar texto de la cita -

> > > gracias Pedro...puede valer, pero cada vez que lo hago, excel me da un
> > > error de esos que se autorecupera. Uso Excel 2003. Me daría mas
> > > tranquilidad un macro en el que pudiese ver yo lo que hace...

> > > Saludos

> > Prueba esta macro entonces:

> > Private Sub Worksheet_Change(ByVal Target As Range)
> >     primera_columna = 10 'Columna J
> >     ultima_columna = 36  'Columna AJ
> >     primera_fila = 10    'Fila 10
> >     ultima_fila = 206    'Fila 206

> >     C=Target.column
> >     F=Target.row

> >     If C > primera_columna - 1 And C < ultima_columna + 1 And F >
> > primera_fila - 1 And F < ultima_fila + 1 Then
> >         'Esto pone la letra en negrita
> >         Target.Font.Bold = True

> >         'Esto pone el fondo amarillo
> >         Target.Interior.ColorIndex = 36
> >         Target.Interior.Pattern = xlSolid
> >     End If
> > End Sub

> lo de "primera_fila -1" etc... debería aparecer en la línea de arriba
> a continuación de " And F >"

> borra el salto de línea para que funcione ;-)- Ocultar texto de la cita -

> - Mostrar texto de la cita -

Gracias Pedro...

El caso es que funciona sin cambiar lo que dices. Entiendo que lo que
has hecho es que sobre una hoja determinada, la macro evalúa si en
cada celda ha habido un + - 1 y en caso de que asi sea, actúa. El
"poblema" es que solo lo hace cuando  metes algo manualmente, es
decir, no hace nada cuando una celda es modificada debido a una
fórmula¿Es posible forzar la macro para que también haga algo
cuando esa/s celdas son modificadas por efecto de una fórmula?. Ej: si
yo pongo 12 en una celda en blanco, bien, si le sumo a una celda +2,
también actua, pero sin en AF 5 tengo la formula ¡ y en A1 pongo
algo diferente de lo que hay, AF5 se actualiza, pero la macro no marca
el cambio

Saludos



El problema es que para Excel el contenido de la celda no ha cambiado
porque es una formula y sigue siendo la misma formula,
por eso no se marca aunque el valor sea distinto :-(

Estoy pensando y lo único que se me ocurre es que tengas en otra hoja
los valores fijos que se supone que deberías tener.
Es decir,

Tienes dos copias de la misma tabla en primer lugar como datos fijos y
en otro sitio con las formulas y tal.
1 2 4 6 1 2 4 6
1 3 2 6 1 3 2 6
2 2 4 7 2 2 4 7


Cuando cambias algo por ejemplo el 3 de de aqui abajo lo compara con
la tabla fija y al ver que es diferente lo marca de alguna manera.
1 2 4 6 1 2 4 6
1 3 2 6 1 3 *3* 6
2 2 4 7 2 2 4 7


Si no, no veo como vas a poder comprobar qué ha cambiado y que no.

¿A alguien se le ocurre una idea mejor?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida