Xin được giúp đỡ về hàm tìm kiếm, hàm lặp để tìm vị trí trống đặt hàng trong kho (1 người xem)

Người dùng đang xem chủ đề này

nguyenthuht

Thành viên mới
Tham gia
26/8/08
Bài viết
9
Được thích
0
Mình có 1 số vướng mắc như chủ đề đã nêu, mong mọi người down file đính kèm và giúp mình.
 

File đính kèm

Mình có 1 số vướng mắc như chủ đề đã nêu, mong mọi người down file đính kèm và giúp mình.

thấy cũng thú vị đó chứ, nhưng ko hiểu làm sao?
ở sheet "timvitritrong", tìm ở đâu, quy luật ra sao, bạn cho một vài kết quả xem
===============
ok, tôi đã hiểu yêu cầu thứ 1, sheet "tim vtri trong"
Mã:
C2=INDEX($A$2:$A$594,MATCH(0,COUNTIF($B$2:$B$5,$A$2:$A$594)+COUNTIF($C$1:C1,$A$2:$A$594),0))

cthức mảng nên bạn phải nhấn Ctrl shift enter
tuy nhiên cthức mảng nên nó chạy khá là chậm
vì vậy bạn có thể dùng advancer filter để lọc ra
1-copy B1 sang E1
2-E2=COUNTIF(A2,$B$2:$B$424)=0
3-chọn advancer filter
*list range: $A$1:$A$594
*Criteria range: $E$1:$E$2
*copy to: F1
xong ok, bạn được một cái list có trong cột A mà ko có trong cột B
----------------------------
ở sheet phân bố
bạn nói rằng mỗi vị trí ko được quá 20 thùng
nhưng bạn lại cho ví dụ 50 thùng (có 3 vị trí 24+24+2), là sao? tôi chưa hiểu chổ này?
 
Lần chỉnh sửa cuối:
Thanks ban. Xin lỗi mình ghi nhầm : mỗi vtri để max là 24 thùng.
Vd: vtri trông là A0101,A0201,A0301. MÃ hàng 9603103 có 50 thùng sẽ chiếm 3 vtri
vị trí. Mã hang số lượng
A0101 9603103. 24
A0201. 9603103. 24
A0301. 9603103. 2
.......... ........ ...
Hêt mã hàng này, thì tới mã hàng khác.
 
Bạn có thể cho mình biết quy luật tìm ra vị trí trống hay không? Mình chưa hiểu chỗ này lắm.
 
Những vị trí có trong côt A mà k có trong cột B là vị trí trống
ok, tôi đã hiểu yêu cầu thứ 1, sheet "tim vtri trong"
Mã:
C2=INDEX($A$2:$A$594,MATCH(0,COUNTIF($B$2:$B$5,$A$2:$A$594)+COUNTIF($C$1:C1,$A$2:$A$594),0))
Anh xem lại công thức tìm vị trí trống chưa đúng.
Đặt Name:
Mã:
Dong =IF(COUNTIF('tim vtri trong'!$B$2:$B$424,'tim vtri trong'!$A$2:$A$594)=0,ROW('tim vtri trong'!$A$2:$A$594)-1,"")
Công thức tại C2:
Mã:
=INDEX($A$2:$A$594,SMALL(Dong,ROW(A1)))
Còn bài toán phân bổ hàng thuộc dạng bài toán tối ưu, mất nhiều nơ-ron thần kinh lắm, bạn cố gắng chờ cao thủ.
 

File đính kèm

Thanks ban. Xin lỗi mình ghi nhầm : mỗi vtri để max là 24 thùng.
Vd: vtri trông là A0101,A0201,A0301. MÃ hàng 9603103 có 50 thùng sẽ chiếm 3 vtri
vị trí. Mã hang số lượng
A0101 9603103. 24
A0201. 9603103. 24
A0301. 9603103. 2
.......... ........ ...
Hêt mã hàng này, thì tới mã hàng khác.

khó hỉ?
góp thêm một bài vba
tìm kho trống
Mã:
Sub VTriTrong()
Dim Aarr, Barr As Variant, VTriTrong(), i, j, k As Long, dic As Object
Barr = [B2].Resize([b20000].End(3).Row).Value
Aarr = [A2].Resize([a20000].End(3).Row).Value
ReDim VTriTrong(1 To UBound(Aarr), 1 To 1)
Set dic = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(Barr)
   If Not dic.Exists(Barr(i, 1)) Then dic.Add Barr(i, 1), ""
Next

For j = 1 To UBound(Aarr)
    If Not dic.Exists(Aarr(j, 1)) Then
        k = k + 1
        VTriTrong(k, 1) = Aarr(j, 1)
    End If
Next
[c2:c20000].ClearContents
[c2].Resize(k).Value = VTriTrong
Set dic = Nothing
Erase Aarr, Barr

End Sub
2- phân bố hàng vào các kho, sau khi phân bố thì loại các vi trí ra khỏi danh sách trống
Mã:
Sub phanphoi()
Dim KTrong, Sl As Variant, kq(), tam(), result(), i, j, k, k1, r, st, Mcol As Long, dic As Object
KTrong = Sheet1.[c2].Resize(Sheet1.[c20000].End(3).Row).Value
Sl = [b3].Resize([b20000].End(3).Row - 2).Value
Set dic = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(Sl)
k = k + 1
If Sl(i, 1) Mod 24 Then plus = 1
    For j = 1 To Int(Sl(i, 1) / 24) + plus
       r = r + 1
       st = Int(Sl(i, 1) / 24)
       If st >= Mcol Then Mcol = st + 1
       ReDim Preserve kq(1 To UBound(Sl), 1 To Mcol)
       kq(k, j) = KTrong(r, 1)
       If Not dic.Exists(KTrong(r, 1)) Then dic.Add KTrong(r, 1), ""
    Next j
Next i
[c3:IV3].ClearContents
 [c3].Resize(k, Mcol).Value = kq
    
ReDim result(1 To UBound(KTrong), 1 To 1)
For j = 1 To UBound(KTrong)
    If Not dic.Exists(KTrong(j, 1)) Then
        k1 = k1 + 1
        result(k1, 1) = KTrong(j, 1)
    End If
Next

Sheet1.[c2:c2000].ClearContents
Sheet1.[c2].Resize(k1).Value = result
Set dic = Nothing
Erase KTrong, Sl

End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Mình không biết dùng vba. Các cao thủ excel giúp mình với
 

Bài viết mới nhất

Back
Top Bottom