Ed đã hỏi câu hỏi về Excel của tuần này.
Tôi cần một macro Excel đơn giản sẽ tìm kiếm - giả sử - Cột C và đánh dấu màu đỏ các ô chứa ngày hôm nay (ngày hiện tại) và đánh dấu màu vàng bất kỳ ô nào khác trong cột là 15 ngày trong tương lai kể từ ngày?
Người dùng Excel 97 hoặc Excel 2000 có thể tận dụng tùy chọn Định dạng có Điều kiện mới. Trước tiên, hãy trình bày cách thực hiện việc này theo cách thủ công mà không cần macro.
- Di chuyển đến ô C1.
- Từ menu, chọn Định dạng, Định dạng có Điều kiện
- Ở phía bên trái của hộp thoại, thay đổi menu thả xuống để đọc "Công thức là"
- Ở bên phải của hộp thoại, nhập:
=INT(C1)=TODAY()

- Định dạng nhấp chuột, Mẫu nhấp chuột, chọn Màu đỏ. Bấm OK
- Nhấp vào Thêm…
- Ở phía bên trái của hộp thoại, thay đổi menu thả xuống để đọc "Công thức là"
- Ở bên phải của hộp thoại, nhập:
=AND(INT(C1)>TODAY(),(INT(C1)-TODAY())<16)
- Nhấp vào Định dạng, Nhấp vào Mẫu, Chọn Màu vàng. Bấm OK.
- Bấm OK để hoàn tất việc gán định dạng có điều kiện này cho ô C1.

Nếu định dạng được nhập chính xác, ô C1 sẽ chuyển thành màu đỏ nếu nó chứa ngày hôm nay và sang màu vàng nếu ngày trong 15 tuần tới. Hàm TODAY () trong định dạng sẽ đảm bảo rằng nếu chúng ta mở sổ làm việc vào một ngày khác, nó sẽ tô sáng bằng màu đỏ các ô cho ngày cụ thể đó.
Bây giờ bạn có thể sao chép ô C1, đánh dấu tất cả dữ liệu trong cột C và thực hiện Chỉnh sửa> Dán Đặc biệt> Định dạng> OK để áp dụng định dạng đó cho từng ô trong cột C.
Macro sau sẽ tự động gán định dạng có điều kiện:
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
Đối với người dùng Excel 95, bạn không có định dạng có điều kiện, nhưng có thể sử dụng macro như sau:
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
Tính năng công thức của hàm định dạng có điều kiện rất mạnh mẽ và sẽ cho phép bạn đánh dấu các ô phù hợp với các tiêu chí khác nhau.