Quang_Hải
Thành viên gạo cội




- Tham gia
- 21/2/09
- Bài viết
- 6,073
- Được thích
- 8,000
- Nghề nghiệp
- Làm đủ thứ
Bài này mình khai báo arr( 1 to 100, 1 to 3) vì không biết kích cỡ của mãng. Mình muốn tiếp cận với redim preserve qua bài này nhưng không biết làm cách nào. Dự định sẽ redim arr trong vòng lập khi add dữ liệu vào dic thì sử dụng j=j+1 để redim arr lại, nhưng loay hoay mãi không làm nổi.
PHP:
Sub test_redim_preserve()
Dim dic As Object
Dim dl As Variant, i As Long, j As Integer, k As Byte
Dim arr(1 To 100, 1 To 3)
Set dic = CreateObject("scripting.dictionary")
dl = Range([a1], [d65536].End(3)).Value
With dic
For i = 1 To UBound(dl, 1)
dk = dl(i, 1) & "," & dl(i, 2) & "," & dl(i, 3)
If Not .exists(dk) Then
j = j + 1
.Add dk, dl(i, 4)
For k = 1 To 3
arr(j, k) = dl(i, k)
Next
Else
.Item(dk) = .Item(dk) + dl(i, 4)
End If
Next
[e1].Resize(j, 3) = arr
[h1].Resize(.Count, 1) = Application.Transpose(.items)
End With
End Sub
File đính kèm
Lần chỉnh sửa cuối: