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

