Tin tức mới

    Đăng ký nhận báo giá 2026

    Cách chọn phạm vi dựa trên giá trị ô bằng Excel VBA

    1. Tư duy logic

    Trong VBA, để chọn một vùng dựa trên giá trị, chúng ta thường đi qua 3 bước:

    Duyệt (Loop): Kiểm tra từng ô trong một cột hoặc vùng.

    So sánh (Condition): Dùng câu lệnh If…Then để xem giá trị ô đó có khớp với điều kiện không.

    Hợp nhất & Chọn (Union & Select): Lưu lại các ô thỏa mãn và chọn tất cả chúng cùng một lúc.

    2. Các ví dụ điển hình

    Ví dụ 1: Chọn tất cả các ô có giá trị cụ thể (Ví dụ: “Passed”)

    
    Sub SelectRowsBasedOnValue()
        Dim cell As Range
        Dim targetRange As Range
        Dim MyVal As String
        
        MyVal = "Passed" ' Giá trị cần tìm
        
        ' Duyệt qua vùng C2:C11
        For Each cell In Range("C2:C11")
            If cell.Value = MyVal Then
                ' Nếu là ô thỏa mãn đầu tiên, gán vào targetRange
                If targetRange Is Nothing Then
                    Set targetRange = cell
                Else
                    ' Nếu đã có ô trước đó, dùng Union để gộp thêm ô mới vào
                    Set targetRange = Union(targetRange, cell)
                End If
            End If
        Next cell
        
        ' Sau khi tìm xong, nếu có kết quả thì Select
        If Not targetRange Is Nothing Then
            targetRange.Select
        Else
            MsgBox "Không tìm thấy giá trị thỏa mãn!"
        End If
    End Sub
    
    Chọn cell dựa trên giá trị của ô trong vba excel
    Chọn cell dựa trên giá trị của ô trong vba excel

    Ví dụ 2: Chọn vùng dựa trên giá trị số (Ví dụ: Điểm> 5)

    
    Sub ChonDiemCao()
        Dim r As Range
        Dim FinalRange As Range
        
        For Each r In Sheet1.UsedRange.Rows
          
            If IsNumeric(r.Cells(1, 2).Value) And r.Cells(1, 2).Value > 5 Then
                If FinalRange Is Nothing Then
                    Set FinalRange = r
                Else
                    Set FinalRange = Union(FinalRange, r)
                End If
            End If
        Next r
        
        If Not FinalRange Is Nothing Then FinalRange.Select
    End Sub
    
    
    Chọn vùng dựa trên giá trị số của ô trong VBA Excel
    Chọn vùng dựa trên giá trị số của ô trong VBA Excel

    Giải thích các lệnh quan trọng

    • Union(Range1, Range2): Đây là hàm cực kỳ quan trọng. Nó giúp bạn “gom” các ô rời rạc lại thành một khối duy nhất để thực hiện lệnh Select một lần duy nhất ở cuối vòng lặp. Điều này giúp code chạy nhanh hơn và tránh màn hình bị giật.
    • Nothing: Khi mới bắt đầu, biến targetRange chưa có gì cả (rỗng). Chúng ta cần kiểm tra Is Nothing để biết khi nào cần khởi tạo vùng chọn đầu tiên.
    • IsNumeric: Kiểm tra xem ô đó có phải là số không trước khi so sánh lớn hơn/nhỏ hơn để tránh lỗi nếu ô đó chứa chữ.

    3.Mẹo nhỏ để nâng tầm Code

    Trong thực tế, người ta rất ít khi dùng lệnh .Select vì nó làm chậm chương trình. Thay vì chọn, bạn có thể thực hiện hành động trực tiếp như:

    • targetRange.Interior.Color = vbYellow (Tô màu)
    • targetRange.Font.Bold = True (In đậm)
    Yêu cầu tư vấn

      Tư vấn sản phẩm phù hợp

      Yêu cầu báo giá

      Yêu cầu tư vấn kỹ thuật

      Leave a Reply

      Your email address will not be published. Required fields are marked *

      Gọi ngay 24/7 Zalo Messenger Support
      Gọi ĐT tư vấn ngay Chat ngay qua Messenger Chat ngay qua Zalo
      Yêu cầu tư vấn

        Tư vấn sản phẩm phù hợp

        Yêu cầu báo giá

        Yêu cầu tư vấn kỹ thuật