Chào mọi người,
Dạo này mình đang làm việc với một file Excel có rất nhiều dữ liệu và cần định dạng các ô theo một số điều kiện nhất định. Việc định dạng thủ công bằng Conditional Formatting đôi khi khá bất tiện, đặc biệt là khi cần áp dụng các định dạng phức tạp hoặc muốn kiểm soát chặt chẽ hơn.
Mình đã thử tìm hiểu và phát hiện ra cách dùng VBA để tự động hóa việc này. Ví dụ, mình muốn tô màu đỏ cho các ô có giá trị âm, hoặc bôi đậm các ô có giá trị vượt ngưỡng nào đó. Cách làm này khá linh hoạt và có thể tùy chỉnh theo nhiều yêu cầu khác nhau.
Dưới đây là một đoạn code VBA đơn giản mình đã viết để minh họa, các bạn có thể tham khảo và tùy biến:
Sub FormatCellsBasedOnCondition()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Set ws = ThisWorkbook.Sheets("Sheet1") ' Thay "Sheet1" bằng tên sheet của bạn
Set rng = ws.Range("A1:Z100") ' Thay "A1:Z100" bằng vùng dữ liệu bạn muốn định dạng
For Each cell In rng
If IsNumeric(cell.Value) Then ' Kiểm tra xem ô có phải là số không
If cell.Value < 0 Then
cell.Interior.Color = RGB(255, 0, 0) ' Tô màu đỏ cho số âm
ElseIf cell.Value > 1000 Then
cell.Font.Bold = True ' Bôi đậm nếu lớn hơn 1000
Else
cell.Interior.Pattern = xlNone ' Xóa màu nền nếu không thỏa mãn điều kiện
cell.Font.Bold = False ' Bỏ bôi đậm
End If
End If
Next cell
End SubCác bạn có thể thay đổi các điều kiện cell.Value < 0 hay cell.Value > 1000 và các thuộc tính định dạng như cell.Interior.Color, cell.Font.Bold... cho phù hợp với nhu cầu của mình.
Có bạn nào có kinh nghiệm hay cách làm khác hiệu quả hơn không? Chia sẻ cùng mọi người nhé!