Tin tức mới

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

    VBA Excel duyệt từng hàng trong vùng chọn

    1. Khái niệm cơ bản

    Duyệt từng hàng trong vùng chọn được hiểu đơn giản là: Bạn có một tập hợp các hàng dữ liệu, và bạn yêu cầu máy tính đi đến từng hàng một, thực hiện một loạt hành động, sau đó mới chuyển sang hàng tiếp theo.

    Range (Vùng): Là tập hợp các ô (ví dụ: B2:C11).

    Row (Hàng): Là đối tượng đại diện cho dữ liệu của một dòng duy nhất trong vùng đó.

    2 Cấu trúc

    
     For Each row In Range(Vùng).Rows
    'Code thực thi
    Next row
    

    3. Phân tích cấu trúc câu lệnh

    Mỗi thành phần trong câu lệnh đều có vai trò cụ thể:

    For Each row: Khai báo rằng chúng ta sẽ lấy ra từng “đối tượng” một. Ở đây row là một biến đại diện (bạn có thể đặt tên là dong, r, v.v.).

    In Range(Vùng).Rows: Xác định “tập hợp” mà chúng ta sẽ quét qua. Việc thêm đuôi .Rows cực kỳ quan trọng vì nó báo cho máy tính biết bạn muốn duyệt theo từng hàng, chứ không phải từng ô đơn lẻ.

    Next row: Sau khi chạy hết các lệnh bên trong, lệnh này sẽ đẩy vòng lặp sang hàng kế tiếp bên dưới.

    4. Cấu trúc logic (Pseudocode)

    Hãy tưởng tượng bạn đang kiểm tra danh sách học sinh để tìm người thi đỗ:

    
    CHO MỖI (Hàng) TRONG (Danh sách điểm)
    
    Đọc cột "Điểm" của hàng hiện tại.
    
    NẾU Điểm >= 5:
    
    Ghi vào cột "Kết quả": "Passed"
    
    NẾU KHÔNG:
    
    Ghi vào cột "Kết quả": "Failed"
    KẾT THÚC VÒNG LẶP
    

    5. Ví dụ thực tế kiểm tra điểm sinh viên

    
    Sub KiemTraDiem()
        Dim ws As Worksheet
        Dim rgn As Range
        Dim rw As Range
        
        Set ws = ThisWorkbook.Sheets("Sheet1")
        Set rgn = ws.Range("B2:C11")
        
        For Each rw In rgn.Rows
            If rw.Cells(1, 1).Value >= 5 Then
                rw.Cells(1, 2).Value = "Passed"
            Else
                rw.Cells(1, 2).Value = "Failed"
            End If
        Next rw
    End Sub
    
    
    Duyệt từng dòng trong VBA Excel
    Duyệt từng dòng trong VBA Excel

    6. Tại sao nên dùng .Rows thay vì duyệt từng ô?

    Khi bạn làm việc với một “Hàng” (Row), bạn có những lợi thế sau:

    • Định dạng đồng nhất: Bạn có thể tác động lên toàn bộ hàng cùng lúc (ví dụ: row.Delete để xóa hàng hoặc row.Font.Bold = True để in đậm).
    • Truy xuất theo cột dễ dàng: Trong một hàng r, bạn có thể truy cập cột thứ 2 bằng lệnh r.Cells(1, 2). Số 1 ở đây nghĩa là “hàng đầu tiên của chính cái vùng đang xét” (tức là chính nó).
    • Tính đọc hiểu cao: Code của bạn sẽ giống như ngôn ngữ tự nhiên: “Với mỗi hàng trong vùng này, hãy làm việc A, việc B”.

    7. Các lỗi thường gặp

    Quên khai báo biến: Bạn nên dùng Dim row As Range ở đầu chương trình để tối ưu bộ nhớ.

    Nhầm lẫn giữa Rows và Cells:

    • Range(“A1:B10”) -> Duyệt qua 20 ô (từng ô một).
    • Range(“A1:B10”).Rows -> Duyệt qua 10 hàng (mỗi lần xử lý một cụm 2 ô).

    Thay đổi vùng dữ liệu khi đang lặp: Hạn chế việc thêm hoặc xóa hàng ngay trong vòng lặp For Each vì nó có thể làm máy tính bị “loạn” chỉ số hàng tiếp theo.

    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