Menu

Tự động hóa việc sao chép định dạng ô theo điều kiện bằng VBA

Vàng Trúc Ni 10/06/2026 05:02 442 lượt xem 3 trả lời

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 Sub

Cá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é!

5

Hay quá bạn ơi! Mình cũng đang đau đầu với việc định dạng file Excel dày đặc đây. Bạn có thể chia sẻ cụ thể hơn về đoạn code VBA bạn dùng để tô màu đỏ cho ô giá trị âm được không? Mình đang muốn áp dụng tương tự cho báo cáo bán hàng để dễ dàng theo dõi. Cảm ơn bạn nhiều nhé!

2
Hay quá bạn ơi! Mình cũng đang đau đầu với việc định dạng file Excel dày đặc đây. Bạn có thể chia sẻ cụ thể hơn về đoạn code VBA bạn dùng để tô màu đỏ cho ô giá trị âm được không? Mình đang muốn áp dụng tương tự cho báo cáo bán hàng để dễ dàng theo dõi. Cảm ơn bạn nhiều nhé!
3

Chào bạn,

Rất vui khi bài viết của bạn đã khơi gợi được sự quan tâm. Việc dùng VBA để tự động hóa định dạng đúng là một giải pháp rất hiệu quả, đặc biệt với các file dữ liệu lớn.

Về yêu cầu của bạn ở reply trước, mình xin chia sẻ một đoạn code đơn giản để tô màu đỏ cho các ô có giá trị âm. Bạn có thể thử áp dụng nhé:

``vba Sub ToMauGiaTriAm() Dim rng As Range Dim cell As Range

' Chọn vùng dữ liệu bạn muốn áp dụng (ví dụ: Sheet1!A1:C10) Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:C10")

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 đỏ Else cell.Interior.Pattern = xlNone ' Xóa màu nếu không phải giá trị âm End If End If Next cell End Sub `

Bạn có thể thay đổi ThisWorkbook.Sheets("Sheet1").Range("A1:C10")` thành vùng dữ liệu thực tế của bạn. Hy vọng đoạn code này giúp ích cho bạn!

2

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký