Viết code VBA sử dụng Scripting.Dictionary để tổng hợp dữ liệu

Liên hệ QC

vanthinh3101

Thành viên tích cực
Tham gia
24/1/15
Bài viết
1,112
Được thích
1,435
Giới tính
Nam
Nghề nghiệp
Finance
Kính gửi mọi người,
Tôi đang tìm hiểu về Scripting.Dictionary.
Tôi có ví dụ theo file đính kèm cần tổng hợp dữ liệu.
Thông thường, tôi có thể sử dụng PivotTable để giải quyết bài này nhưng tôi muốn được mọi người chỉ cho các dùng Scripting.Dictionary.
Vướng mắc của tôi khi dùng Scripting.Dictionary trong trường hợp này là khi Dic.Add thì chỉ được 1 Item, trong khi có 5 sản phẩm.
Mong được mọi người giúp đỡ
 

File đính kèm

  • Dictionary.xlsx
    11.1 KB · Đọc: 17
Kính gửi mọi người,
Tôi đang tìm hiểu về Scripting.Dictionary.
Tôi có ví dụ theo file đính kèm cần tổng hợp dữ liệu.
Thông thường, tôi có thể sử dụng PivotTable để giải quyết bài này nhưng tôi muốn được mọi người chỉ cho các dùng Scripting.Dictionary.
Vướng mắc của tôi khi dùng Scripting.Dictionary trong trường hợp này là khi Dic.Add thì chỉ được 1 Item, trong khi có 5 sản phẩm.
Mong được mọi người giúp đỡ
Bạn cứ Add Item thoải mái chứ 5 sản phẩm thì ăn thua gì :D
 

File đính kèm

  • Dictionary.xls
    36.5 KB · Đọc: 43
Upvote 0
Kính gửi mọi người,
Tôi đang tìm hiểu về Scripting.Dictionary.
Tôi có ví dụ theo file đính kèm cần tổng hợp dữ liệu.
Thông thường, tôi có thể sử dụng PivotTable để giải quyết bài này nhưng tôi muốn được mọi người chỉ cho các dùng Scripting.Dictionary.
Vướng mắc của tôi khi dùng Scripting.Dictionary trong trường hợp này là khi Dic.Add thì chỉ được 1 Item, trong khi có 5 sản phẩm.
Mong được mọi người giúp đỡ
Dùng ADO trong trường hợp này thì quá đơn giản.
 
Upvote 0
Bạn cứ Add Item thoải mái chứ 5 sản phẩm thì ăn thua gì :D
cái này em cũng không biết nhiều, chắc múa rìu qua mắt thợ chút
theo em nghĩ chắc thớt muốn thêm số lượng item ấy, còn Key add vào là xong chứ gì
chỗ Array (1,2,3) có thể làm trước đó rồi Add vào Key
Mã:
Sub ViDu()
    Dim Dic As Scripting.Dictionary:        Set Dic = New Scripting.Dictionary
    'Dim Dic As Object:      Set Dic = CreateObject("Scripting.Dictionary")
        With Dic
        'Dic.Add KEY, ITEM
        .Add "Key1", Array(1, 2, 3)
        .Add "Key2", Array(4, 5, 6)
        .Add "Key3", Array(7, 8, 9)
        End With
        'Xem gia tri Item cua Key 1, mac dinh Item ban dau la 0
        MsgBox Dic.Item("Key1")(0)
        MsgBox Dic.Item("Key1")(1)
        MsgBox Dic.Item("Key1")(2)
        Set Dic = Nothing
End Sub
hi vọng phần nào giúp chủ thớt biết thêm cách lấy giá trị cần tham chiếu đến
 
Upvote 0
cái này em cũng không biết nhiều, chắc múa rìu qua mắt thợ chút
theo em nghĩ chắc thớt muốn thêm số lượng item ấy, còn Key add vào là xong chứ gì
chỗ Array (1,2,3) có thể làm trước đó rồi Add vào Key
Mã:
Sub ViDu()
    Dim Dic As Scripting.Dictionary:        Set Dic = New Scripting.Dictionary
    'Dim Dic As Object:      Set Dic = CreateObject("Scripting.Dictionary")
        With Dic
        'Dic.Add KEY, ITEM
        .Add "Key1", Array(1, 2, 3)
        .Add "Key2", Array(4, 5, 6)
        .Add "Key3", Array(7, 8, 9)
        End With
        'Xem gia tri Item cua Key 1, mac dinh Item ban dau la 0
        MsgBox Dic.Item("Key1")(0)
        MsgBox Dic.Item("Key1")(1)
        MsgBox Dic.Item("Key1")(2)
        Set Dic = Nothing
End Sub
hi vọng phần nào giúp chủ thớt biết thêm cách lấy giá trị cần tham chiếu đến
Hi Hi... "Cái này em cũng không biết nhiều". Thật là khiêm tốn quá đi :p
 
Upvote 0
chỗ Array (1,2,3) có thể làm trước đó rồi Add vào Key

Chỉ hiệu quả khi số phần tử của array không xác định; số sản phẩm không xác định. Thường là sử dụng cho CSDL đã chuẩn bậc 1
Ở đây là bài toán tính tổng hợp dữ liệu đã crosstab. Dùng thẳng mảng trong bộ nhớ để tính tổng hợp nhanh hơn lấy ra từ dic.
 
Upvote 0
Chỉ hiệu quả khi số phần tử của array không xác định; số sản phẩm không xác định. Thường là sử dụng cho CSDL đã chuẩn bậc 1
Ở đây là bài toán tính tổng hợp dữ liệu đã crosstab. Dùng thẳng mảng trong bộ nhớ để tính tổng hợp nhanh hơn lấy ra từ dic.
Thầy ơi. Thầy hướng dẫn cho em cách này với ạ.
 
Upvote 0
Web KT
Back
Top Bottom