Hỏi về 2 điều kiện trong Dictionary.

  • Thread starter Thread starter hml89
  • Ngày gửi Ngày gửi
Liên hệ QC

hml89

Thành viên tiêu biểu
Tham gia
14/9/12
Bài viết
526
Được thích
392
Giới tính
Nam
Xin chào anh/chị và các bạn trong diễn đàn.

Mình đang luyện tập sử dụng Dictionary, nhưng hiện tại đang gặp vướng mắc ở chỗ. Ví dụ cùng một số lượng, mà yêu cầu tính tổng số lượng,tìm số lớn nhất và số nhỏ nhất thì phải làm như thế nào ạ?
Hiện tại mình đang việt 1 sub, nhưng chỉ biết lọc trùng và tính số lượng hoặc lọc trùng và tính số lớn nhất hoặc số nhỏ nhất, không biết làm gộp như thế nào.

Mong mọi người giúp đỡ.
Xin cám ơn!
 

File đính kèm

Xin chào anh/chị và các bạn trong diễn đàn.

Mình đang luyện tập sử dụng Dictionary, nhưng hiện tại đang gặp vướng mắc ở chỗ. Ví dụ cùng một số lượng, mà yêu cầu tính tổng số lượng,tìm số lớn nhất và số nhỏ nhất thì phải làm như thế nào ạ?
Hiện tại mình đang việt 1 sub, nhưng chỉ biết lọc trùng và tính số lượng hoặc lọc trùng và tính số lớn nhất hoặc số nhỏ nhất, không biết làm gộp như thế nào.

Mong mọi người giúp đỡ.
Xin cám ơn!
Chưa hiểu, bạn muốn gộp gì, gộp cái gì với cái gì

Thấy cái này
[B]#Học dốt#[/B]
Không ai học giỏi, cũng chẳng ai học dốt: chỉ là biết và chưa biết. Thường khi cái biết nhiều thì cái chưa biết lại cấp số nhân lên nhiều hơn

-----------------
Xem qua code, thì bạn nên
- tìm hiểu lại căn bản VBA: Array, lệnh IF Then Else, So sánh ........
- sau đó mới Dictionary: Item của dict có thể là 1 số (number), 1 String, hay 1 Array (cái này là cái cần cho bạn để kết hợp) ........

Không có thì giờ giải thích bài này cũng phần ngọn thôi
 
Lần chỉnh sửa cuối:
Xin chào anh/chị và các bạn trong diễn đàn.

Mình đang luyện tập sử dụng Dictionary, nhưng hiện tại đang gặp vướng mắc ở chỗ. Ví dụ cùng một số lượng, mà yêu cầu tính tổng số lượng,tìm số lớn nhất và số nhỏ nhất thì phải làm như thế nào ạ?
Hiện tại mình đang việt 1 sub, nhưng chỉ biết lọc trùng và tính số lượng hoặc lọc trùng và tính số lớn nhất hoặc số nhỏ nhất, không biết làm gộp như thế nào.

Mong mọi người giúp đỡ.
Xin cám ơn!
Bạn thử nhé.
Mã:
Sub vidu()
    Dim arr, kq, dic As Object, i As Long, dk As String, a As Long, lr As Long, b As Long
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet3")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         arr = .Range("B2:C" & lr).Value
         ReDim kq(1 To UBound(arr), 1 To 4)
         For i = 1 To UBound(arr)
             dk = arr(i, 1)
             If Not dic.Exists(dk) Then
                a = a + 1
                kq(a, 1) = dk
                kq(a, 2) = arr(i, 2)
                kq(a, 3) = arr(i, 2)
                kq(a, 4) = arr(i, 2)
                dic.Add dk, a
             Else
                b = dic.Item(dk)
                kq(b, 2) = kq(b, 2) + arr(i, 2)
                If kq(b, 3) < arr(i, 2) Then kq(b, 3) = arr(i, 2)
                If kq(b, 4) > arr(i, 2) Then kq(b, 4) = arr(i, 2)
             End If
        Next i
        .Range("E3:H1000").ClearContents
        If a Then .Range("E3:H3").Resize(a).Value = kq
   End With
End Sub
 
Bạn thử nhé.
Mã:
Sub vidu()
    Dim arr, kq, dic As Object, i As Long, dk As String, a As Long, lr As Long, b As Long
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet3")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         arr = .Range("B2:C" & lr).Value
         ReDim kq(1 To UBound(arr), 1 To 4)
         For i = 1 To UBound(arr)
             dk = arr(i, 1)
             If Not dic.Exists(dk) Then
                a = a + 1
                kq(a, 1) = dk
                kq(a, 2) = arr(i, 2)
                kq(a, 3) = arr(i, 2)
                kq(a, 4) = arr(i, 2)
                dic.Add dk, a
             Else
                b = dic.Item(dk)
                kq(b, 2) = kq(b, 2) + arr(i, 2)
                If kq(b, 3) < arr(i, 2) Then kq(b, 3) = arr(i, 2)
                If kq(b, 4) > arr(i, 2) Then kq(b, 4) = arr(i, 2)
             End If
        Next i
        .Range("E3:H1000").ClearContents
        If a Then .Range("E3:H3").Resize(a).Value = kq
   End With
End Sub
Cám ơn @snow25 . Năm mới chúc bạn và gia đình sức khỏe nhé!
Bài đã được tự động gộp:

Chưa hiểu, bạn muốn gộp gì, gộp cái gì với cái gì

Thấy cái này
[/QUOTE] Cám ơn bạn đã góp ý. Học tạp nham nên nó vậy đấy.
 
Xin chào anh/chị và các bạn trong diễn đàn.

Mình đang luyện tập sử dụng Dictionary, nhưng hiện tại đang gặp vướng mắc ở chỗ. Ví dụ cùng một số lượng, mà yêu cầu tính tổng số lượng,tìm số lớn nhất và số nhỏ nhất thì phải làm như thế nào ạ?
Hiện tại mình đang việt 1 sub, nhưng chỉ biết lọc trùng và tính số lượng hoặc lọc trùng và tính số lớn nhất hoặc số nhỏ nhất, không biết làm gộp như thế nào.

Mong mọi người giúp đỡ.
Xin cám ơn!

Bạn tham khảo file đính kèm nhé. :)
 

File đính kèm

Web KT

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

Back
Top Bottom