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

vanthinh3101

Thành viên tiêu biểu
Tham gia ngày
24 Tháng một 2015
Bài viết
589
Thích
552
Điểm
360
Tuổi
30
#1
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

PacificPR

Thành viên tích cực
Tham gia ngày
12 Tháng tư 2017
Bài viết
1,114
Thích
1,697
Điểm
360
#2
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

xì tin

Thành viên chính thức
Tham gia ngày
6 Tháng ba 2013
Bài viết
72
Thích
74
Điểm
0
#3
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.
 

xì tin

Thành viên chính thức
Tham gia ngày
6 Tháng ba 2013
Bài viết
72
Thích
74
Điểm
0
#6

Mutants Men

Thành viên thường trực
Tham gia ngày
30 Tháng mười hai 2015
Bài viết
254
Thích
135
Điểm
195
#8
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
 

PacificPR

Thành viên tích cực
Tham gia ngày
12 Tháng tư 2017
Bài viết
1,114
Thích
1,697
Điểm
360
#9
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
 

VetMini

Thành viên gạo cội
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
5,168
Thích
5,711
Điểm
560
#10
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.
 

PacificPR

Thành viên tích cực
Tham gia ngày
12 Tháng tư 2017
Bài viết
1,114
Thích
1,697
Điểm
360
#11
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 ạ.
 

vanthinh3101

Thành viên tiêu biểu
Tham gia ngày
24 Tháng một 2015
Bài viết
589
Thích
552
Điểm
360
Tuổi
30
#13
Top