[QUOTE=QuocDung2510;654504]

Gửi bởi
Let'GâuGâu
thấy cũng hấp dẫn, mà đọc hoài mà ko hiểu???
giá trị min thì ok
số lượng tối đa là cái gì???
=======================
post bài lên rồi ko quay lại thăm bẩy hả? hỏi lâu quá mà ko thấy trả lời. thôi cái gì khó quá bỏ qua (bỏ qua cái dzụ số lượng tối đa đi nha)
-------
Bác thông cảm! Em ko online thường xuyên được;
Cái vụ số lượng tối đa (Chắc do khả năng diễn đạt của em yếu) là Ứng với từng loại A; B; C; D thì chỉ cần có tần dó True thôi (Lấy Giá trị cao hơn và cùng ưu tiên)
Mong Bác giúp đỡ!
ví dụ lạo "A"
tôi chỉ mới lọc được 25 giá trị A thỏa mãn true
bây giờ phải lọc ra 10 chú có giá trị giảm dần
bạn xem code như vậy đã gần đúng với yêu cầu của bạn chưa (nếu đúng hướng tôi suy nghĩ tiếp)
Mã:
Sub lamgido()
Dim v, arr, bd, tam As Variant, i, Gtri As Long, d As Object, utien, ma, itm As String
[f2:f384].ClearContents
arr = [a2:f384]
bd = [l3:n6]
Set d = CreateObject("Scripting.Dictionary")
ma = arr(1, 2): Gtri = arr(1, 5)
For i = 1 To UBound(arr)
If arr(i, 5) > bd(Asc(arr(i, 4)) - 64, 2) Then
If arr(i, 2) = ma Then
If arr(i, 5) > Gtri Then k = i: utien = arr(i, 3): Gtri = arr(i, 5)
If arr(i, 5) = Gtri And arr(i, 3) > utien Then k = i: utien = arr(i, 3): Gtri = arr(i, 5)
Else
itm = arr(k, 1) & "#" & arr(k, 5)
If Not d.exists(arr(k, 4)) Then
d.Add arr(k, 4), itm
Else
d.Item(arr(k, 4)) = d.Item(arr(k, 4)) & "#" & itm
End If
k = i: utien = arr(i, 3): Gtri = arr(i, 5): ma = arr(i, 2)
End If
End If
Next
For Each v In d.Keys
tam = Split(d.Item(v), "#")
For J = 0 To UBound(tam) Step 2
' If J > bd(Asc(v) - 64, 3) Then Exit For
arr(tam(J), 6) = "true"
Next
Next
[a2:f384].ClearContents
[a2:f384] = arr
Set d = Nothing
End Sub