Ed ställde veckans Excel-fråga.
Jag behöver ett enkelt Excel-makro som söker - låt säga - Kolumn C och markerar röda cellerna som innehåller dagens datum (nuvarande datum) och markerar gula andra celler i kolumnen som är 15 dagar i framtiden från dagens datum?
Användare av Excel 97 eller Excel 2000 kan dra nytta av det nya alternativet Villkorlig formatering. Låt oss täcka hur man gör det manuellt utan makro först.
- Gå till cell C1.
- Välj Format, Villkorligt format på menyn
- Ändra rullgardinsmenyn till vänster i dialogrutan för att läsa "Formel är"
- Ange till höger om dialogrutan:
=INT(C1)=TODAY()

- Klicka på format, klicka på mönster, välj Rött. Klicka på OK
- Klicka på Lägg till …
- Ändra rullgardinsmenyn till vänster i dialogrutan för att läsa "Formel är"
- Ange till höger om dialogrutan:
=AND(INT(C1)>TODAY(),(INT(C1)-TODAY())<16)
- Klicka på Format, klicka på Mönster, välj gult. Klicka på OK.
- Klicka på OK för att slutföra tilldelningen av detta villkorliga format till cell C1.

Om formatet är korrekt kommer cell C1 att ändras till rött om det innehåller dagens datum och till gult om datumet är de närmaste 15 veckorna. Funktionen TODAY () i formatet säkerställer att om vi öppnar arbetsboken en annan dag markerar den röda cellerna för den aktuella dagen.
Du kan nu kopiera cell C1, markera alla data i kolumn C och göra Redigera> Klistra in special> Formater> OK för att tillämpa det formatet på varje cell i kolumn C.
Följande makro automatiserar tilldelningen av det villkorliga formatet:
Sub Macro2() Range("C1").Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=INT(C1)=TODAY()" Selection.FormatConditions(1).Interior.ColorIndex = 3 Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=AND(INT(C1)>TODAY(),(INT(C1)-TODAY())<16)" Selection.FormatConditions(2).Interior.ColorIndex = 6 Selection.Copy FinalRow = Range("C15000").End(xlUp).Row Range("C2:C" & FinalRow).Select Selection.PasteSpecial Paste:=xlPasteFormats End Sub
För Excel 95-användare har du inte villkorlig formatering, men du kan använda ett makro så här:
Sub Macro95() ThisDate = Date FinalRow = Range("C15000").End(xlUp).Row For x = 1 To FinalRow ThisCell = Int(Range("C" & x).Value) If ThisCell = ThisDate Then Range("C" & x).Interior.ColorIndex = 3 Else DaysFromNow = ThisCell - ThisDate If DaysFromNow> 0 And DaysFromNow < 16 Then Range("C" & x).Interior.ColorIndex = 6 End If End If Next x End Sub
Formelfunktionen för funktionen villkorligt format är mycket kraftfull och låter dig markera celler som passar olika kriterier.