Ед зададе въпроса за Excel тази седмица.
Имам нужда от прост макрос на Excel, който ще търси - нека кажем - Колона C и маркира червено клетките, които съдържат днешната дата (текущата дата) и маркира жълто всяка друга клетка в колоната, която е 15 дни в бъдеще от днешната дата?
Потребителите на Excel 97 или Excel 2000 могат да се възползват от новата опция за условно форматиране. Нека да разгледаме как първо да направите това ръчно без макрос.
- Преместване в клетка C1.
- От менюто изберете Формат, Условен формат
- В лявата част на диалоговия прозорец променете падащото меню, за да прочетете „Формулата е“
- В дясната страна на диалоговия прозорец въведете:
=INT(C1)=TODAY()

- Щракнете върху формат, щракнете върху Модели, изберете Червено. Щракнете върху OK
- Щракнете върху Добавяне …
- В лявата част на диалоговия прозорец променете падащото меню, за да прочетете „Формулата е“
- В дясната страна на диалоговия прозорец въведете:
=AND(INT(C1)>TODAY(),(INT(C1)-TODAY())<16)
- Щракнете върху Формат, Щракнете върху Модели, Изберете жълто. Щракнете върху OK.
- Щракнете върху OK, за да завършите присвояването на този условен формат на клетка C1.

Ако форматът е въведен правилно, клетка C1 ще се промени на червена, ако съдържа днешната дата, и на жълта, ако датата е през следващите 15 седмици. Функцията TODAY () във формата ще гарантира, че ако отворим работната книга в друг ден, тя ще маркира в червено клетките за този ден.
Вече можете да копирате клетка C1, да маркирате всички данни в колона C и да направите Edit> Paste Special> Format> OK, за да приложите този формат към всяка клетка в колона C.
Следният макрос ще автоматизира присвояването на условния формат:
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
За потребители на Excel 95 нямате условно форматиране, но можете да използвате макрос като този:
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
Функцията за формула на функцията за условен формат е много мощна и ще ви позволи да маркирате клетки, които отговарят на различни критерии.