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.
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))






Những vị trí có trong côt A mà k có trong cột B là vị trí trốngBạ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
Anh xem lại công thức tìm vị trí trống chưa đú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))
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,"")
=INDEX($A$2:$A$594,SMALL(Dong,ROW(A1)))
Nếu chịu xài VBA thì xem thử bài nàyNhững vị trí có trong côt A mà k có trong cột B là vị trí trống
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.
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
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

Tìm từ khoá "Enable Macros" trên GPE này hoặc Google.Mình không biết dùng vba. Các cao thủ excel giúp mình với
