Ed zadał pytanie dotyczące programu Excel w tym tygodniu.
Potrzebuję prostego makra Excela, które przeszuka - powiedzmy - kolumnę C i podświetli na czerwono komórki zawierające dzisiejszą datę (bieżącą datę) i podświetli na żółto dowolną inną komórkę w kolumnie, która jest 15 dni w przyszłości od dzisiejszej daty?
Użytkownicy programu Excel 97 lub Excel 2000 mogą skorzystać z nowej opcji formatowania warunkowego. Omówmy najpierw, jak to zrobić ręcznie bez makra.
- Przejdź do komórki C1.
- Z menu wybierz Format, Format warunkowy
- W lewej części okna dialogowego zmień listę na „Formuła to”
- W prawej części okna dialogowego wprowadź:
=INT(C1)=TODAY()

- Kliknij format, Kliknij Wzory, wybierz Czerwony. Kliknij OK
- Kliknij Dodaj…
- W lewej części okna dialogowego zmień listę na „Formuła to”
- W prawej części okna dialogowego wprowadź:
=AND(INT(C1)>TODAY(),(INT(C1)-TODAY())<16)
- Kliknij Format, kliknij Wzory, Wybierz żółty. Kliknij OK.
- Kliknij OK, aby zakończyć przypisywanie tego formatu warunkowego do komórki C1.

Jeśli format zostanie wprowadzony poprawnie, komórka C1 zmieni kolor na czerwony, jeśli zawiera dzisiejszą datę, i na żółty, jeśli data przypada na następne 15 tygodni. Funkcja DZIŚ () w formacie zapewni, że jeśli otworzymy skoroszyt innego dnia, podświetli on na czerwono komórki tego konkretnego dnia.
Możesz teraz skopiować komórkę C1, zaznaczyć wszystkie dane w kolumnie C i wykonać Edycja> Wklej specjalnie> Formaty> OK, aby zastosować ten format do każdej komórki w kolumnie C.
Poniższe makro zautomatyzuje przypisywanie formatu warunkowego:
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
W przypadku użytkowników programu Excel 95 nie masz formatowania warunkowego, ale możesz użyć takiego makra:
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
Funkcja formuły funkcji formatowania warunkowego ma bardzo duże możliwości i umożliwia wyróżnianie komórek spełniających różne kryteria.