Tự đồng chèn OrderID xuống các dòng không có dữ liệu

Trong quá trình vận hành đôi khi bạn sẽ gặp phải trường hợp phòng mua bán và phòng kinh doanh lưu trữ thông tin đặt hàng và mua bán khác nhau.

Ví dụ như ảnh dưới –  phòng mua hàng đã không lưu đủ số OrderID để khi cần có thể match các sản phẩm với nhau.

Để giải quyết việc này, có thể viết 1 macro với mục tiêu: Tự động điền Order ID vào những dòng không có giá trị ở cột H nhưng có giá trị ở cột I.

Đoạn mã này sẽ kiểm tra từng dòng, nếu cột H trống nhưng cột I không trống, nó sẽ điền OrderID từ dòng trước đó.

Sub FillOrderIDs()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")  ' Sửa lại tên sheet
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "H").End(xlUp).Row ' Thay cột H bằng cột bạn muốn
    
    Dim i As Long
    Dim lastOrderID As String
    
    For i = 3 To lastRow  ' Giả sử dữ liệu từ dòng số 3
        If ws.Cells(i, 8).Value <> "" Then  'Vị trí cột H - 8
            lastOrderID = ws.Cells(i, 8).Value
        ElseIf ws.Cells(i, 8).Value = "" And ws.Cells(i, 9).Value <> "" Then  ' Giả sử cột I (9) la cot can kiem tra xem co du lieu khong
            ws.Cells(i, 8).Value = lastOrderID
        End If
    Next i
End Sub

Nếu bạn có 1 sheet riêng như ảnh thì có thể sử dụng đoạn code sau:

Sub FillOrderIDs()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")  ' Thay "Sheet1" bằng tên sheet của mình
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Cột A là cột muốn
    
    Dim i As Long
    Dim lastOrderID As String
    
    For i = 2 To lastRow  ' Giả sử dữ liệu bắt đầu từ dòng 2
        If ws.Cells(i, 1).Value <> "" Then
            lastOrderID = ws.Cells(i, 1).Value
        ElseIf ws.Cells(i, 1).Value = "" And ws.Cells(i, 2).Value <> "" Then
            ws.Cells(i, 1).Value = lastOrderID
        End If
    Next i
End Sub

 

Hello, các bài viết ở đây là những gì mình đang làm và gặp phải. Không chia sẻ thì sợ quên. Nên mình note ra đây thui ^^

Leave a reply:

Your email address will not be published.

Site Footer