Excel_vba2810
Thành viên mới
- Tham gia
- 25/12/20
- Bài viết
- 19
- Được thích
- 2
Code bài này không khó, nhưng vì do bạn viết in tiêu đề bài và nội dung gồm cả tiếng anh và tiếng việt lẫn lộn nên không ai giúp bạn đâu. Bạn sửa lại đi nhé.Dear Anh/ Chị
Nhờ anh chị giúp đỡ em. Thank you.
Cảm ơn bạn nhiều nha. để mình sửa lại tiêu đềCode bài này không khó, nhưng vì do bạn viết in tiêu đề bài và nội dung gồm cả tiếng anh và tiếng việt lẫn lộn nên không ai giúp bạn đâu. Bạn sửa lại đi nhé.
Trong ví dụ mẫu của bạn tại sao dữ liệu lấy ở bảng Stock là DM-058-3/2 mà không phải là DM-058-3/1
Thử code.
Sub abc()
Dim i As Long, j As Long, arr, dic As Object, dk As String, kq, lr As Long, t
Set dic = CreateObject("scripting.dictionary")
With Sheets("GPE")
kq = .Range("J3:O16").Value
For i = 1 To UBound(kq)
kq(i, 6) = Empty
dk = kq(i, 1) & "#" & kq(i, 5) '& "#" & CLng(kq(i, 4))
If Not dic.exists(dk) Then
dic.Add dk, i
Else
dic.Item(dk) = dic.Item(dk) & "#" & i
End If
Next
lr = .Range("A" & Rows.Count).End(xlUp).Row
arr = .Range("A3:G" & lr).Value
For i = 1 To UBound(arr)
dk = arr(i, 3) & "#" & arr(i, 1) '& "#" & CLng(arr(i, 6))
If dic.exists(dk) Then
For Each t In Split(dic.Item(dk), "#")
kq(t, 6) = arr(i, 2)
Next
End If
Next i
.Range("J3:O16").Value = kq
End With
Set dic = Nothing
End Sub
Bài #5 chứng tỏ bạn sai rồi nhé.Code bài này không khó, nhưng vì do bạn viết in tiêu đề bài và nội dung gồm cả tiếng anh và tiếng việt lẫn lộn nên không ai giúp bạn đâu. Bạn sửa lại đi nhé.
Dạ, em chỉ nhắc nhở cho bạn đó chú ý cho những lần sauBài #5 chứng tỏ bạn sai rồi nhé.
Dạ, tại vị trí DM-058-3/1 đã có sẵn (dữ liệu có trước) nên phải lấy DM-058-3/2. Thanks Anh.Trong ví dụ mẫu của bạn tại sao dữ liệu lấy ở bảng Stock là DM-058-3/2 mà không phải là DM-058-3/1
Đầu tiên em xin chân thành cảm ơn anh vì đã viết code giúp em.Thử code.
Mã:Sub abc() Dim i As Long, j As Long, arr, dic As Object, dk As String, kq, lr As Long, t Set dic = CreateObject("scripting.dictionary") With Sheets("GPE") kq = .Range("J3:O16").Value For i = 1 To UBound(kq) kq(i, 6) = Empty dk = kq(i, 1) & "#" & kq(i, 5) '& "#" & CLng(kq(i, 4)) If Not dic.exists(dk) Then dic.Add dk, i Else dic.Item(dk) = dic.Item(dk) & "#" & i End If Next lr = .Range("A" & Rows.Count).End(xlUp).Row arr = .Range("A3:G" & lr).Value For i = 1 To UBound(arr) dk = arr(i, 3) & "#" & arr(i, 1) '& "#" & CLng(arr(i, 6)) If dic.exists(dk) Then For Each t In Split(dic.Item(dk), "#") kq(t, 6) = arr(i, 2) Next End If Next i .Range("J3:O16").Value = kq End With Set dic = Nothing End Sub
Ý bạn là lấy giá trị cuối cùng của StorageBin trong bảng Stock tương ứng với Type và Item hay là vì trong cột StorageBin của bảng đơn hàng đã có DM-058-3/1 rồi nên các giá trị tiếp theo phải lấy là DM-058-3/2Dạ, tại vị trí DM-058-3/1 đã có sẵn (dữ liệu có trước) nên phải lấy DM-058-3/2. Thanks Anh.
DM-058-3/1 có rồi nên các giá trị tiếp theo phải lấy là DM-058-3/2 nha bạn. thank you.Ý bạn là lấy giá trị cuối cùng của StorageBin trong bảng Stock tương ứng với Type và Item hay là vì trong cột StorageBin của bảng đơn hàng đã có DM-058-3/1 rồi nên các giá trị tiếp theo phải lấy là DM-058-3/2