- Tham gia
- 8/9/11
- Bài viết
- 58
- Được thích
- 12
E có ghi rõ trong file đính kèm . Đại khái là có 2 cột có trùng dữ liệu với nhau thì lọc ra lấy 1 thôi và tính tổng số tiền những cái trùng đó (cột số tiền khác hai cột này)![]()
Option Explicit
Sub test()
Dim arr(), kq(), i, j, sp, dic As Object
S2.Range("F7:H16").ClearContents
S2.Range("F7:H16").EntireRow.Hidden = False
arr = S1.Range("A3:O" & S1.Range("A65000").End(3).Row).Value
Set dic = CreateObject("Scripting.Dictionary")
ReDim kq(1 To 10, 1 To 3)
sp = S2.Range("G6").Value
For i = 1 To UBound(arr)
If arr(i, 2) = sp Then
If Not dic.exists(arr(i, 8)) Then
j = j + 1
dic.Add arr(i, 8), j
kq(j, 1) = "N" & arr(i, 8)
kq(j, 2) = "C" & arr(i, 10)
kq(j, 3) = arr(i, 15)
Else
kq(dic.Item(arr(i, 8)), 3) = kq(dic.Item(arr(i, 8)), 3) + arr(i, 15)
End If
End If
Next i
If j Then S2.Range("F7").Resize(j, 3) = kq
Erase kq(), arr()
Set dic = Nothing
End Sub



(ví dụ cột J lòi ra một vài cái 1112 ). Ở bài này dữ liệu một cột J của e là trùng hết từ trên xuống dưới , nếu dữ liệu không thế thì phải làm sao ạ(ví dụ cột J lòi ra một vài cái 1112 ).
Ngoài lề : dùng advance filter có tính tổng đc dữ liệu trùng ko ạ ?




E đính kèm ví dụ rồi ạ
Đại loại là hai cột đồng thời trùng
A B
A B
C D
E F
E F
A D
A D
A D
A D
thì lọc ra :
A B
C D
E F
A D
Sub loc()
Dim data(), Res(1 To 10, 1 To 3)
Dim dk$, i&, n&, k&, tem$
dk = S2.[G6].Value
data = S1.Range("B3", S1.[O65536].End(3)).Value
With CreateObject("scripting.dictionary")
For i = 1 To UBound(data)
If data(i, 1) = dk Then
tem = data(i, 7) & data(i, 9)
If Not .exists(tem) Then
k = k + 1
.Add tem, k
Res(k, 1) = "N" & data(i, 7)
Res(k, 2) = "C" & data(i, 9)
Res(k, 3) = data(i, 14)
Else
n = .Item(tem)
Res(n, 3) = Res(n, 3) + data(i, 14)
End If
End If
Next
End With
S2.Range("F7").Resize(10, 3) = Res
End Sub