Có ai giải thích giúp mình đoạn code này được không ạ.

Liên hệ QC

langkhachquaduong

Thành viên chính thức
Tham gia
23/7/19
Bài viết
50
Được thích
8
1. Đây đoạn code mình muốn hỏi: kq(dic.item(arr(i, 2)), dic.item(arr(i, 1))) = kq(dic.item(arr(i, 2)), dic.item(arr(i, 1))) + 1
2.Code tổng quát như sau:
Sub test()
Dim dic As Object, i As Long, arr As Variant, kq As Variant, j As Long, j1 As Long
Set dic = CreateObject("scripting.dictionary")
arr = Range("a1:b6").Value2
ReDim kq(1 To UBound(arr), 1 To 5)
j = 1
j1 = 1
For i = 1 To UBound(arr)
If Not dic.exists(arr(i, 1)) Then
j = j + 1
dic.Add arr(i, 1), j
kq(1, j) = arr(i, 1)
End If
If Not dic.exists(arr(i, 2)) Then
j1 = j1 + 1
dic.Add arr(i, 2), j1
kq(j1, 1) = arr(i, 2)
End If
kq(dic.item(arr(i, 2)), dic.item(arr(i, 1))) = kq(dic.item(arr(i, 2)), dic.item(arr(i, 1))) + 1
Next i
Range("e1").Resize(j1, j) = kq
End Sub
 

File đính kèm

  • đếm duy nhất.xlsm
    14.3 KB · Đọc: 8
Mã:
 kq(dic.item(arr(i, 2)), dic.item(arr(i, 1))) = kq(dic.item(arr(i, 2)), dic.item(arr(i, 1))) + 1
Xét trường hợp cột A="b", cột B="4" cho dễ
Với i=3:
"b" chưa có trong dic-->nạp b vào dic, j=3
"4" chưa có trong dic-->nạp 4 vào dic, j1=4
-->kq( 4,3) = kq( 4,3) + 1 = 1

Với i=5:
"b" đã có trong dic-->dic.item(arr(i, 1)) = 3
"4" đã có trong dic-->dic.item(arr(i, 2)) = 4
-->kq( 4,3) = kq( 4,3) + 1 = 2
 
Upvote 0
Mã:
 kq(dic.item(arr(i, 2)), dic.item(arr(i, 1))) = kq(dic.item(arr(i, 2)), dic.item(arr(i, 1))) + 1
Xét trường hợp cột A="b", cột B="4" cho dễ
Với i=3:
"b" chưa có trong dic-->nạp b vào dic, j=3
"4" chưa có trong dic-->nạp 4 vào dic, j1=4
-->kq( 4,3) = kq( 4,3) + 1 = 1

Với i=5:
"b" đã có trong dic-->dic.item(arr(i, 1)) = 3
"4" đã có trong dic-->dic.item(arr(i, 2)) = 4
-->kq( 4,3) = kq( 4,3) + 1 = 2
TH này kq( 4,3) bằng 0 thi 0 + 1 =1
TH này kq( 4,3) bằng 1 thi 1 + 1 =2
Phải vậy ko ạ
 
Upvote 0
Chắc chắn code khó hiểu, "khó nhìn". Đọc lướt qua bạn khó có thể hiểu ngay. Ngoài ra đó là đếm duy nhất 2 cột. Bây giờ giả sử bạn có 3, 4 hoặc 5 cột và bạn muốn đếm duy nhất 3, 4 hoặc 5 cột theo cách trên. Bạn thử làm xem.

Cũng là đếm duy nhất nhưng bạn có thể làm khác đi
 
Upvote 0
Chắc chắn code khó hiểu, "khó nhìn". Đọc lướt qua bạn khó có thể hiểu ngay. Ngoài ra đó là đếm duy nhất 2 cột. Bây giờ giả sử bạn có 3, 4 hoặc 5 cột và bạn muốn đếm duy nhất 3, 4 hoặc 5 cột theo cách trên. Bạn thử làm xem.

Cũng là đếm duy nhất nhưng bạn có thể làm khác đi
Để mình làm thử rồi post lên cho mọi người cùng xem
 
Upvote 0
Web KT

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

Back
Top Bottom