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