nmhung49
Thành viên tích cực


- Tham gia
- 20/8/09
- Bài viết
- 1,186
- Được thích
- 1,337
Sáng làm gấp quá không để ý 1 vòng lặp là được rồi, vì em thấy dữ liệu đơn giản nên làm cho đơn giản nên không có phân ra. Nếu dùng 1 vòng lặp em làm cách này không biết có cách nào hay hơn vì dữ liệu nằm ở các sheet không dùng cột- Thứ nhất: Chỉ 1 vòng lập là được rồi
- Thứ hai: Nguyên tắc xử lý dữ liệu là nên cố gắng thu gom cùng 1 loại dữ liệu, tức chỉ nên Add ngày tháng vào Dictionary, đừng nên lẫn lộn chuổi (tiêu đề) ---> Sẽ khiến cho ta khó khăn trong việc xử lý ---> Tiêu đề có thể đặt ở phần cuối code cũng đâu có vấn đề gì
[GPECODE=vb]
Sub DicOnly1()
Dim Dic As Object, shArr, sh, srange, i As Long
Set Dic = CreateObject("Scripting.Dictionary")
shArr = Array("Sheet1", "Sheet2")
For Each sh In shArr
If sh = "Sheet1" Then
srange = Sheets(sh).Range("A4:A" & Sheets(sh).Range("A14").End(xlDown).Row).Value
Else
srange = Sheets(sh).Range("C9:C" & Sheets(sh).Range("C9").End(xlDown).Row).Value
End If
For i = 1 To UBound(srange)
If Not Dic.Exists(srange(i, 1)) Then
Dic.Add srange(i, 1), ""
End If
Next i
Next
If Dic.Count Then Sheets("sheet4").Range("A1").Resize(Dic.Count, 1).Value = Application.Transpose(Dic.Keys)
End Sub
[/GPECODE]
Nếu dữ liệu ở nhiều sheet mà nằm rời rạc vậy mình có cách nào gom vào mảng nguồn để xử lý trong Dic không anh