Chào bạn, Yêu cầu bài toán bạn đưa ra đọc hơi khó hiểu nên tôi tóm tắn lại bài toán của bạn như sau, nếu đúng thì bạn cứ theo đó mà làm:
Bạn có 1 file Excel bao gồm 2 sheet lần lượt có tên là "Ghi chu "(Sheet 1), "Data" (Sheet 2).
Dữ liệu hiện tại trên cột A có thể đang bị trùng lắp, bây giờ xây dựng Code để cập nhật dữ liệu cho cột B của Sheet Data biết rằng dữ liệu lấy về:
- Nguồn là cột A của Sheet Ghi Chu (Sheet 1)
- Đảm bảo không trùng.
- Gán giá trị cột D của Sheet 1 = Giá trị cột D Sheet 2
------------------Hướng Giải quyết--------------
Tôi sẽ xây dựng 1 Macro viết bằng VBA code để xử lý yêu cầu của bạn. Công việc của Macro sẽ là:
- Xóa các giá trị trùng lặp trong cột A của Sheet "Ghi chu".
- Update data duy nhất từ cột A của Sheet "Ghi chu" vào cột B của Sheet "Data".
- Gán giá trị cột B của Sheet "Ghi chu" bằng giá trị tương ứng từ cột D của Sheet "Data".
Sub UpdateColumnBInGhiChu()
Dim wsGhiChu As Worksheet, wsData As Worksheet
Dim lastRowGhiChu As Long, lastRowData As Long
Dim matchRow As Variant
Dim cell As Range
' Gán sheet
Set wsGhiChu = ThisWorkbook.Sheets("Ghi chu ")
Set wsData = ThisWorkbook.Sheets("Data")
' Xác định dòng cuối của cả hai sheet
lastRowGhiChu = wsGhiChu.Cells(wsGhiChu.Rows.Count, "A").End(xlUp).Row
lastRowData = wsData.Cells(wsData.Rows.Count, "B").End(xlUp).Row
' Duyệt qua từng ô trong cột A của Sheet "Ghi chu"
For Each cell In wsGhiChu.Range("A2:A" & lastRowGhiChu)
If Not IsEmpty(cell.Value) Then
' Tìm hàng khớp trong cột B của Sheet "Data"
matchRow = Application.Match(cell.Value, wsData.Columns("B"), 0)
If Not IsError(matchRow) Then
' Gán giá trị cột D từ Sheet "Data" vào cột B của Sheet "Ghi chu"
wsGhiChu.Cells(cell.Row, "B").Value = wsData.Cells(matchRow, "D").Value
Else
' Nếu không tìm thấy, gán giá trị rỗng
wsGhiChu.Cells(cell.Row, "B").Value = ""
End If
End If
Next cell
MsgBox "Cập nhật cột B của Sheet 'Ghi chu' thành công!", vbInformation
End Sub