1. Dictionary là gì?
2. Cách sử dụng Dictionary
2.1 Tạo từ điển, giá trị khởi tạo ban đầu, thêm, phương pháp tham chiếu
2.2 Phương phương tham chiếu bằng cách dùng For Each
2.3 Phương pháp xóa bằng Remove
2.4 Phương pháp xác nhận tính tồn tại Exists
3. Phương pháp sắp xếp key trong Dictionary
4. Phương pháp thiết định Object Dictionary
5. Tổng kết
1. Dictionary là gì?
Đối tượng Dictionary là đối tượng lưu trữ data và key. Hiểu ngắn gọn nó như một cuốn từ điển chứa dữ liệu và tra cứu bằng key.
Key là tồn tại duy nhất, không thể có hai key trùng nhau. Tra cứu key để tìm ra data (Item).
2. Cách sử dụng Dictionary
Phương thức:
2.1 Tạo từ điển, giá trị khởi tạo ban đầu, thêm, phương pháp tham chiếu
Để tạo Dictionary ta sử dụng hàm CreateObject:
Ví dụ như sau:
Kết quả:
2.2 Phương phương tham chiếu bằng cách dùng For Each
Kết quả:
2.3 Phương pháp xóa bằng Remove
Kết quả:
Chú ý rằng, phương thức xóa key này chỉ đúng khi key có tồn tại trong từ điển. Nếu key không tồn tại mà thực hiện lệnh xóa thì chương trình sẽ báo lỗi.
Giả sử chương trình trên ta sửa lại là:
kết quả là:
2.4 Phương pháp xác nhận tính tồn tại Exists
Đây là một tính năng chính của Dictionary dùng để kiểm tra key đã tồn tại trong từ điển hay chưa.
Do đặc tính tồn tại duy nhất của key, đặc tính này được vận dụng triệt để trong việc so sánh hai data.
Kết quả:
3. Phương pháp sắp xếp key trong Dictionary
Dictionary không cung cấp phương thức để sắp xếp lại thứ tự các phần tử trong từ điển.
Tuy nhiên ta có thể tự sắp xếp lại từ điển. Trong đó ta sử dụng phương thức Sort đối với Range.
Kết quả:
4. Phương pháp thiết định Object Dictionary
Vào Tools -> References và lựa chọn Microsoft Scripting Runtime từ trên danh sách để cài đặt -> nhấn OK.
Khi đó code sẽ giản lược hơn trong việc tạo Dictionary
Kết quả:
5. Tổng kết:
- Có thể thêm vào số lượng item tùy ý với những kiểu dữ liệu khác nhau.
- Các item và key của Dictionary rất dễ truy xuất, sửa chữa và bổ sung.
- Dictionary cho phép bạn xóa tất cả các item tồn tại trong Dic mà không cần phải phá hủy chính nó.
- Và cuối cùng, các item chỉ có thể được gọi duy nhất bằng cách là thông qua một key mà key đó là bắt buộc và là duy nhất (không thể có 2 key trùng nhau). Điều này tạo thuận lợi cho các bài toán trích lọc danh sách duy nhất hoặc trong bài toán so sánh hai data, và đây cũng chính là ưu điểm lớn nhất của Dictionary.
Nguồn:
2. Cách sử dụng Dictionary
2.1 Tạo từ điển, giá trị khởi tạo ban đầu, thêm, phương pháp tham chiếu
2.2 Phương phương tham chiếu bằng cách dùng For Each
2.3 Phương pháp xóa bằng Remove
2.4 Phương pháp xác nhận tính tồn tại Exists
3. Phương pháp sắp xếp key trong Dictionary
4. Phương pháp thiết định Object Dictionary
5. Tổng kết
1. Dictionary là gì?
Đối tượng Dictionary là đối tượng lưu trữ data và key. Hiểu ngắn gọn nó như một cuốn từ điển chứa dữ liệu và tra cứu bằng key.
Key là tồn tại duy nhất, không thể có hai key trùng nhau. Tra cứu key để tìm ra data (Item).
2. Cách sử dụng Dictionary
Property | Nội dung |
Count | Thuộc tính Count sẽ trả về giá trị số lượng item có trong Dictionary. Nếu không có item trong Dic, thuộc tính này sẽ trả về giá trị 0. |
Item(key) | Thuộc tính Item giúp truy xuất giá trị Item ứng với key đó |
Key(i) | Truy xuất giá trị của Key ứng với số thứ tự. |
CompareMode | Cách phân biệt sự khác nhau giữa các key: Phân biệt chữ in hoa hoặc không quan tâm in hoa hay in thường vbBinaryCompare(0): Phân biệt in hoa và in thường vbBinaryCompare(1): Không phân biệt in hoa hay in thường |
Method | Nội dung |
Add key, item | Phương thức Add dùng để thêm key, item vào Dictionary. |
Exists(key) | Phương thức Exists sẽ kiểm tra xem Key đã tồn tại trong từ điển chưa? Nếu Key tồn tại, kết quả sẽ là True và chưa tồn tại thì kết quả sẽ là False. |
Items | Trả về kết quả là mảng một chiều. Chỉ mục bắt đầu từ 0. Chú ý thuộc tính không có "s", phương thức thì có "s". |
Keys | Trả về kết quả là mảng một chiều. Chỉ mục bắt đầu từ 0. Chú ý thuộc tính không có "s", phương thức thì có "s". |
Remove key | xóa key và dữ liệu liên quan tới key khỏi từ điển |
RemoveAll | Xóa toàn bộ key và dữ liệu trong Dictionary nhưng không xóa chính nó. |
Để tạo Dictionary ta sử dụng hàm CreateObject:
Mã:
Dim Dic as Object
Set Dic = CreateObject("Scripting.Dictionary")
Mã:
Sub tuhocvba()
'Khai báo và tạo Dictionary
Dim myDic As Object
Set myDic = CreateObject("Scripting.Dictionary")
'Thêm dữ liệu và key cho Dictionary, tạo giá trị khởi tạo
'Dùng phương thức Add key, item
myDic.Add "orange", 100
myDic.Add "apple", 200
myDic.Add "melon", 300
'Tham chiếu Dictionary
Dim str As String, i As Integer
Dim Keys() As Variant
Keys = myDic.Keys
For i = 0 To 2
str = str & Keys(i) & " : " & myDic.Item(Keys(i)) & vbCrLf
Next i
MsgBox str, vbInformation
End Sub
Bạn cần đăng nhập để thấy hình ảnh
Bạn cần đăng nhập để thấy hình ảnh
2.2 Phương phương tham chiếu bằng cách dùng For Each
Mã:
Sub macro2()
'Tạo Dictionary
Dim myDic As Object
Set myDic = CreateObject("Scripting.Dictionary")
'Khởi tạo giá trị ban đầu choDictionary, thêm dữ liệu cho từ điển
myDic.Add "orange", 100
myDic.Add "apple", 200
myDic.Add "melon", 300
'Tham chiếu tới Dictionary
Dim str As String
For Each Var In myDic
str = str & Var & " : " & myDic.Item(Var) & vbCrLf
Next Var
MsgBox str, vbInformation
End Sub
Bạn cần đăng nhập để thấy hình ảnh
Bạn cần đăng nhập để thấy hình ảnh
2.3 Phương pháp xóa bằng Remove
Mã:
Sub macro3()
'Tạo Dictionary
Dim myDic As Object
Set myDic = CreateObject("Scripting.Dictionary")
'Khởi tạo giá trị và thêm phần tử choDictionary
myDic.Add "orange", 100
myDic.Add "apple", 200
myDic.Add "melon", 300
'Xóa key trong Dictonary
myDic.Remove "orange"
'Tham chiếu tới Dictionary
Dim str As String
For Each Var In myDic
str = str & Var & " : " & myDic.Item(Var) & vbCrLf
Next Var
MsgBox str, vbInformation
End Sub
Bạn cần đăng nhập để thấy hình ảnh
Bạn cần đăng nhập để thấy hình ảnh
Chú ý rằng, phương thức xóa key này chỉ đúng khi key có tồn tại trong từ điển. Nếu key không tồn tại mà thực hiện lệnh xóa thì chương trình sẽ báo lỗi.
Giả sử chương trình trên ta sửa lại là:
Mã:
myDic.Remove "orange2"
Bạn cần đăng nhập để thấy hình ảnh
2.4 Phương pháp xác nhận tính tồn tại Exists
Đây là một tính năng chính của Dictionary dùng để kiểm tra key đã tồn tại trong từ điển hay chưa.
Do đặc tính tồn tại duy nhất của key, đặc tính này được vận dụng triệt để trong việc so sánh hai data.
Mã:
Sub macro4()
'Tạo Dictionary
Dim myDic As Object
Set myDic = CreateObject("Scripting.Dictionary")
'Thêm phần tử và nạp giá trị cho Dictionary
myDic.Add "orange", 100
myDic.Add "apple", 200
myDic.Add "melon", 300
'Xóa key trong Dictonary
Dim key As String
key = "orange"
If myDic.Exists(key) Then 'Xác nhận tồn tại hay chưa, nếu tồn tại thì xóa
myDic.Remove key
Else
MsgBox key & "Can not delete", vbInformation
End If
'Tham chiếu tới Dictionary
Dim str As String
For Each Var In myDic
str = str & Var & " : " & myDic.Item(Var) & vbCrLf
Next Var
MsgBox str, vbInformation
End Sub
Bạn cần đăng nhập để thấy hình ảnh
3. Phương pháp sắp xếp key trong Dictionary
Dictionary không cung cấp phương thức để sắp xếp lại thứ tự các phần tử trong từ điển.
Tuy nhiên ta có thể tự sắp xếp lại từ điển. Trong đó ta sử dụng phương thức Sort đối với Range.
Mã:
Sub macro5()
'Tạo Dictionary
Dim myDic As Object
Set myDic = CreateObject("Scripting.Dictionary")
'Nạp key và dữ liệu cho Dictionary
myDic.Add "orange", 100
myDic.Add "apple", 200
myDic.Add "melon", 300
'Ghi dữ liệu Dictionary vào cells
Dim i As Integer
i = 1
For Each Var In myDic
Cells(i, 1).Value = Var
Cells(i, 2).Value = myDic.Item(Var)
i = i + 1
Next Var
'Sort trên Range
Dim myrange As range
Set myrange = range("A1:B" & myDic.Count)
myrange.Sort key1:=range("A1")
'Từ kết quả Sort ta đặt lại từ điển
Dim str As String
Dim Keys() As Variant, Items() As Variant
Keys = myDic.Keys
Items = myDic.Items
For i = 1 To myDic.Count
Keys(i - 1) = Cells(i, 1).Value 'Đặt lại gia trị key
Items(i - 1) = Cells(i, 2).Value 'Đặt lại giá trị Item
str = str & Keys(i - 1) & " : " & Items(i - 1) & vbCrLf
Next i
MsgBox str, vbInformation
End Sub
Bạn cần đăng nhập để thấy hình ảnh
Bạn cần đăng nhập để thấy hình ảnh
4. Phương pháp thiết định Object Dictionary
Vào Tools -> References và lựa chọn Microsoft Scripting Runtime từ trên danh sách để cài đặt -> nhấn OK.
Bạn cần đăng nhập để thấy hình ảnh
Khi đó code sẽ giản lược hơn trong việc tạo Dictionary
Mã:
Sub macro6()
'Tạo Dictionary-rất ngắn gọn
Dim myDic As New Scripting.Dictionary
'Khởi tạo giá trị-thêm phần tử cho Dictionary
myDic.Add "orange", 100
myDic.Add "apple", 200
myDic.Add "melon", 300
'Tham chiếu tới Dictionary
Dim str As String
For Each Var In myDic
str = str & Var & " : " & myDic.Item(Var) & vbCrLf
Next Var
MsgBox str, vbInformation
End Sub
Bạn cần đăng nhập để thấy hình ảnh
5. Tổng kết:
- Có thể thêm vào số lượng item tùy ý với những kiểu dữ liệu khác nhau.
- Các item và key của Dictionary rất dễ truy xuất, sửa chữa và bổ sung.
- Dictionary cho phép bạn xóa tất cả các item tồn tại trong Dic mà không cần phải phá hủy chính nó.
- Và cuối cùng, các item chỉ có thể được gọi duy nhất bằng cách là thông qua một key mà key đó là bắt buộc và là duy nhất (không thể có 2 key trùng nhau). Điều này tạo thuận lợi cho các bài toán trích lọc danh sách duy nhất hoặc trong bài toán so sánh hai data, và đây cũng chính là ưu điểm lớn nhất của Dictionary.
Nguồn:
Mã:
https://www.sejuku.net/blog/29736