shnhatha221108
Thành viên chính thức


- Tham gia
- 2/10/18
- Bài viết
- 73
- Được thích
- 13
Nhờ anh @HieuCD và anh chị em xem giúp.
Em có xem code của anh @HieuCD về tổng hợp dữ liệu thay hàm sumif.Khi áp dung cho một mảng dữ liệu thì dòng cuối không cho kết quả
Vậy em muốn nhờ anh @HieuCD và anh chị em diễn đàn chỉ bảo giúp sai ở đậu ạ?

Em có xem code của anh @HieuCD về tổng hợp dữ liệu thay hàm sumif.Khi áp dung cho một mảng dữ liệu thì dòng cuối không cho kết quả
Vậy em muốn nhờ anh @HieuCD và anh chị em diễn đàn chỉ bảo giúp sai ở đậu ạ?

Mã:
Option Explicit
Option Compare Text
Sub XYZ()
Dim arr(), aNgay(), aHang(), res(), Dic As Object, key$, str$
Dim i&, r&, j&, sRow&, sCol&, fR&
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("DATA")
arr = .Range("I3", .Range("AD" & Rows.Count).End(xlUp)).Value
End With
sRow = UBound(arr)
For i = 1 To sRow
If arr(i, 1) <> Empty Then
key = arr(i, 1) & "|" & arr(i, 15)
Dic.Item(key) = Dic.Item(key) + arr(i, 22)
End If
Next i
str = "T? l? ho?t ??ng" 'Ty le hoat dong
With Sheets("THUC TE")
aNgay = .Range("E3", .Range("AAA3").End(xlToLeft)).Value
sRow = .Range("A" & Rows.Count).End(xlUp).Row
aHang = .Range("A1:A" & sRow + 1).Value
sCol = UBound(aNgay, 2)
aHang(4, 1) = str
For i = 4 To sRow
If aHang(i, 1) Like str Then
fR = i + 1
ReDim res(fR To sRow, 1 To sCol)
ElseIf fR > 0 Then
If aHang(i + 1, 1) = Empty Then
.Range("E" & fR).Resize(i - fR + 1, sCol) = res
fR = -9999
Else
For j = 1 To sCol
res(i, j) = Dic(aHang(i, 1) & "|" & aNgay(1, j))
Next j
End If
End If
Next i
End With
Set Dic = Nothing
End Sub