Pregunta Excel: cambie el color de la celda según una fecha en el comentario o mezcle con el texto


Estoy usando Excel 2010 y estoy tratando de configurar una regla que cambie el color de una celda en función de una fecha dentro de esa celda.

Por ejemplo, la celda puede contener Site meeting - 11.05.14

Me gustaría poder cambiar el color automáticamente si está a 2 semanas de distancia, 1 semana fuera, 2 días y expiró.

Idealmente, no quiero tener una celda separada con solo la fecha, así que posiblemente la fecha podría estar en los comentarios. Me doy cuenta de que estoy pidiendo mucho, pero espero que alguien tenga una solución.

Tengo una solución para esto, pero es difícil y no es lo que busco. Usando el formato condicional y la función = NOW puedo lograr los resultados pero usando dos celdas. Espero que haya una manera de decirle a Excel que ignore todo en una celda antes de un cierto símbolo. En este caso "-".

Googleing me ha llevado a VBA, que lamentablemente no tengo idea de cómo usarlo. Entonces, ¿alguien aquí puede ayudar? O al menos dame un empujón en la dirección correcta.


1


origen


Dave, no tiene que ser una función de hoja de cálculo. Solo pensé que sería la manera más simple. Pero tal vez lo que estoy preguntando es algo para vba? En ese caso estoy lleno. Tengo cero experiencia con vba. - Jonathan


Respuestas:


Esto hace lo que quieras

Sub WorkOutTime()

    'see http://dmcritchie.mvps.org/excel/colors.htm for colour chart

dim columnToUse as string
columnToUse = "A"    ' update this to the colum you want to use


Dim expired As Integer
expired = 3 'red

Dim twoDays As Integer
twoDays = 8 'blue

Dim sevenDays As Integer
sevenDays = 27 ' yellow

Dim fourteenDays As Integer
fourteenDays = 7 ' purple


Dim currentCell As Integer
currentCell = 1

Do While (True)

If (Range(columnToUse & currentCell).Value = "") Then
    Exit Do
End If


Dim timeNow As Date
timeNow = Date

Dim willContinue As Boolean
willContinue = True

Dim dateDifference As Integer

dateDifference = dateDiff("d", timeNow, Range(columnToUse & currentCell).Value)

If dateDifference >= 14 And willContinue Then
    Range(columnToUse & currentCell).Interior.ColorIndex = fourteenDays
    willContinue = False
End If

If dateDifference <= 7 And dateDifference > 2 And willContinue Then
    Range(columnToUse & currentCell).Interior.ColorIndex = sevenDays
End If

If dateDifference <= 2 And dateDifference >= 0 And willContinue Then
    Range(columnToUse & currentCell).Interior.ColorIndex = twoDays
End If

If dateDifference < 0 And willContinue Then
    Range(columnToUse & currentCell).Interior.ColorIndex = expired
End If

currentCell = currentCell + 1

Loop

End Sub

enter image description here

Entonces, en el barra de herramientas del desarrollador, haga clic en Insertar y haga clic en el botón. Arrastre la forma a la pantalla.

Haga clic en Aceptar

Haga clic derecho en el botón y asígnele el nombre WorkOutTime

Si no obtiene la pantalla VBa, haga clic en Visual Basic desde la cinta

Eliminar lo que está allí y pegar mi código.

Guardar como una hoja de trabajo habilitada para macros. Ejecutarlo

Tenga en cuenta que mi código solo funciona para artículos en la Columna A


0



Dave, eres un genio. ¡Muchas gracias! - Jonathan
Dave, ¿tengo razón al decir que si cambio la "a" a la celda que quiero, seguirá funcionando? - Gracias - Jonathan
¿A qué te refieres? Si te refieres a la columna, mira el código actualizado. Ahora puede cambiar la columna 1 en su lugar y clasificará el lote. - Dave
Tenga en cuenta también que puede actualizar el código para ejecutarlo cuando abra el archivo, etc. office.microsoft.com/en-gb/excel-help/... - Dave
Gracias. Ahora tengo problemas para ejecutarlo. Lo cambié para ver la columna Y. Hay algunas fechas. Uno de ellos el 01/05/2014. Cuando hago clic en el botón, ¿no pasa nada? ¿Importa que las dos filas de la punta de la columna Y se fusionen con X, Y, Z, AA, AB y AC? En última instancia, me gustaría cambiar las fechas en Y, AA y AC. - Gracias - Jonathan