



Chào bạn,Chào các anh chị!!!!
Em có file Excel tính tồn theo Hợp Đồng (HD) của thép tấm,mong các anh chị giúp đỡ.
Trong file sheet Ton_LIFO em có mô tả,mong anh chị giúp.
Em Cám Ơn!!!




Bạn tải lại file bài 3 nhé: chỉ cần cập nhật 2 sheet Nhập và Xuất rồi bấmCám ơn bạn Ngày mai trời lại sáng nha!!!!
Mình thử thấy OK rồi, sheet ChiTiet_LIFO là bảng phụ hả bạn,không làm gì trên sheet này phải không bạn. Cám ơn bạn nhiều.
Bài này dùng công thức chắc không được bạn nhỉ.
À, sao mấy số có dấu chấm đằng sau là sao bạn?
Bài đã được tự động gộp:
À bạn ơi,ở sheet Ton_LIFO mình copy tay từ sheet Nhap và Sheet Xuat qua rồi Sort tăng dần theo ngày đó, vậy code có thể làm luôn được không bạn Ngày mai trời lại sáng??




Đúng rồi bạn, ChiTiet_LIFO chỉ là bảng phụ để tra cứu, bạn không cầnCám ơn bạn nha!!! CHÚC BẠN NGHỈ LỄ VUI VẺ!!!!!
Bài đã được tự động gộp:
Tức là sheet "ChiTiet_LIFO" không đụng chạm gì hả bạn,hoặc Delete cũng không được phải không bạn Ngày mai trời lại sáng???
Cám ơn bạn nha !!!!
Có lẽ bạn nên tự thử thêm mặt hàng, thêm nhập, thêm xuất, ... trước khi hỏi. Động tay động chân, động não 1 chút.Có phát sinh thêm vật tư hay HD cũng không sao hả bạn Ngày mai trời lại sáng ???




Thoải mái bạn nhé. Thêm vật tư (Code Item) mới hay Hợp Đồng mới baoCó phát sinh thêm vật tư hay HD cũng không sao hả bạn Ngày mai trời lại sáng ???
maiThoải mái bạn nhé. Thêm vật tư (Code Item) mới hay Hợp Đồng mới bao
nhiêu cũng được, không giới hạn và không phải chỉnh gì trong macro.
Bạn cứ nhập bình thường vào 2 sheet Nhập/Xuất (nhớ điền Tên HĐ cho dòng
Nhập và Tồn Đầu) rồi bấm nút — macro tự nhận Code và HĐ mới, tự thêm
vào bảng kết quả.
Chỉ cần gõ tên Code Item và Tên HĐ cho nhất quán (viết giống nhau) để
nó gộp đúng vào một mối.
Xin lỗi thầy Phạm Thế Mỹ.!!!!Có lẽ bạn nên tự thử thêm mặt hàng, thêm nhập, thêm xuất, ... trước khi hỏi. Động tay động chân, động não 1 chút.
Phạm Thành Mỹ nhé bạn. Có gì mà xin lỗi, tôi chỉ gợi ý cho bạn tự thử, việc gì tự làm được thì nên làm, thay vì ỷ lại thôi.Xin lỗi thầy Phạm Thế Mỹ.!!!!




Về câu hỏi dùng công thức của bạn: được nha, Excel 2010 công thức thuầnCám ơn bạn Ngày mai trời lại sáng nha!!!!
Mình thử thấy OK rồi, sheet ChiTiet_LIFO là bảng phụ hả bạn,không làm gì trên sheet này phải không bạn. Cám ơn bạn nhiều.
Bài này dùng công thức chắc không được bạn nhỉ.
À, sao mấy số có dấu chấm đằng sau là sao bạn?
Bài đã được tự động gộp:
À bạn ơi,ở sheet Ton_LIFO mình copy tay từ sheet Nhap và Sheet Xuat qua rồi Sort tăng dần theo ngày đó, vậy code có thể làm luôn được không bạn Ngày mai trời lại sáng??
Với dữ liệu đẹp như sheet Ton_LiFo có thể dùng subChào các anh chị!!!!
Em có file Excel tính tồn theo Hợp Đồng (HD) của thép tấm,mong các anh chị giúp đỡ.
Trong file sheet Ton_LIFO em có mô tả,mong anh chị giúp.
Em Cám Ơn!!!
Sub TonLiFo()
Dim aTon(), arr(), res(), dic As Object, sh As Worksheet
Dim srTon&, sRow&, i&, r&, lR&, ik&, sl#, key$
Set dic = CreateObject("Scripting.Dictionary")
Set sh = Sheets("Ton_LIFO")
lR = sh.Range("G" & Rows.Count).End(xlUp).Row
If lR < 5 Then MsgBox ("Thieu du lieu ket qua!"): Exit Sub
sh.Range("I5:I" & lR).ClearContents 'Xoa ket qua cu
aTon = sh.Range("G5:H" & lR).Value
srTon = UBound(aTon)
ReDim res(1 To srTon, 1 To 1)
For i = 1 To srTon
dic(aTon(i, 1) & "_" & aTon(i, 2)) = i
Next i
lR = sh.Range("A" & Rows.Count).End(xlUp).Row
If lR < 5 Then MsgBox ("Khong co du lieu!"): Exit Sub
arr = sh.Range("A5:E" & lR).Value
sRow = UBound(arr)
For i = 1 To sRow
sl = arr(i, 4)
If arr(i, 2) Like "Xu?t" Then
For r = i - 1 To 1 Step -1
If Not (arr(r, 2) Like "Xu?t") Then
If arr(i, 3) = arr(r, 3) And arr(r, 4) > 0 Then
key = arr(r, 3) & "_" & arr(r, 5)
If dic.exists(key) Then
ik = dic(key) 'dong ket qua
If arr(r, 4) >= sl Then
res(ik, 1) = res(ik, 1) - sl
arr(r, 4) = arr(r, 4) - sl
sl = 0
Exit For
Else
res(ik, 1) = res(ik, 1) - arr(r, 4)
sl = sl - arr(r, 4)
arr(r, 4) = 0
End If
End If
End If
End If
Next r
If r = 0 And sl > 0 Then
MsgBox ("Item: " & arr(i, 3) & " Khong du hang ton kho de xuat!"): Exit Sub
End If
Else
key = arr(i, 3) & "_" & arr(i, 5)
If dic.exists(key) Then
ik = dic(key)
res(ik, 1) = res(ik, 1) + sl
End If
End If
Next i
sh.Range("I5").Resize(srTon) = res
End