Cộng dồn các dữ liệu được tìm thấy

Liên hệ QC

anhlove990

Thành viên mới
Tham gia
21/7/12
Bài viết
29
Được thích
0
Mình có 1 bài tập là cộng dồn các dữ liệu được tìm thấy như trong file đính kèm , mong các bạn giúp đỡ
 

File đính kèm

Mình có 1 bài tập là cộng dồn các dữ liệu được tìm thấy như trong file đính kèm , mong các bạn giúp đỡ
Cộng dồn ở đây được hiểu theo nghĩa nào nhỉ?
- Nhập thêm số mới vào danh sách trên 2 cột A:B thì kết quả thống kê trên cột I thay đổi theo? ---> Nếu đúng thì dùng hàm SUMIF
- Sửa số tại cột B (khác với nhập thêm vào danh sách đó nha) thì kết quả trên cột I thay đổi theo? ---> Nếu đúng thì phải dùng đến VBA can thiệp mới làm được.
 
Công thức tại dòng tổng cộng I10 :
PHP:
=SUM(IF(ISNA($I$3:$I$7),0,$I$3:$I$7))
Kết thúc bằng tổ hợp phím Ctrl+Shift+Enter
Nếu cách hiểu thứ nhất ở trên của mình đúng thì chẳng cần đến công thức mảng, chỉ cần SUMIF là được rồi:
Mã:
I3=SUMIF($A$4:$A$8,H3,$B$4:$B$8)
 
Nếu cách hiểu thứ nhất ở trên của mình đúng thì chẳng cần đến công thức mảng, chỉ cần SUMIF là được rồi:
Mã:
I3=SUMIF($A$4:$A$8,H3,$B$4:$B$8)

nếu dùng ct này thì nó cộng dồn vào của bảng chi tiết vào thống kê thôi , ở đây mình muốn nó cộng dồn của bảng thống kê , tìm dc bao nhieu thì + bấy nhiêu , mấy cái ko tìm thấy coi như là ko !
 
Nếu cách hiểu thứ nhất ở trên của mình đúng thì chẳng cần đến công thức mảng, chỉ cần SUMIF là được rồi:
Mã:
I3=SUMIF($A$4:$A$8,H3,$B$4:$B$8)
Theo tôi bạn ấy đang muốn tính tổng dồn tại dòng I10 sau khi tìm được giá trị tại các dòng từ I3 đến I7????
 
Lần chỉnh sửa cuối:
Xem trong file đính kèm nhé, nhớ kết thúc công thức bằng 3 phím Ctrl+Shift+Enter
Nên hạn chế dùng công thức mảng. Thử cách dùng SUMIF và SUM bình thường xem sao:
Mã:
I3=SUMIF(A:A,H3,B:B)
Mã:
I10=SUM(I3:I7)
Ở trên nếu quy định vùng nhập dữ liệu trên cột A, B cụ thể hơn thì cũng không nên đưa toàn bộ cột A và toàn bộ cột B vào công thức, chẳng hạn có thể sửa thành:
Mã:
I3=SUMIF($A$4:$A$100,H3,$B$4:$B$100)
 
Lần chỉnh sửa cuối:
cám ơn bạn nhiều , mới tập học EXcel nên phải học hỏi them nhiều

Theo mình thì nếu cộng dồn có nghĩa là dữ liệu cũ không mất đi, vậy thì nên dùng VBA mới đặng.
Xem thử file đính kèm, code cũng đơn giản nhưng hiệu quả
PHP:
Sub congdon()
Dim dl1, dl2, i, ii
dl1 = Range([a4], [a4].End(4)).Resize(, 2).Value
dl2 = Range([h4], [h4].End(4)).Resize(, 2).Value
For i = 1 To UBound(dl1)
    For ii = 1 To UBound(dl2)
        If dl2(ii, 1) = dl1(i, 1) Then
            dl2(ii, 2) = dl2(ii, 2) + dl1(i, 2)
            Exit For
        End If
    Next
Next
[h4].Resize(ii - 1, 2) = dl2
'Range([a4], [a4].End(4)).Offset(, 1).ClearContents
End Sub

Nếu dữ liệu lớn thì sử dụng cách bên dưới sẽ cho tốc độ nhanh nhất

PHP:
Sub congdon2()
Dim dl1, dl2, i, ii, t
Dim dic As Object
t = Timer
Set dic = CreateObject("scripting.dictionary")
dl1 = Range([a4], [a4].End(4)).Resize(, 2).Value
dl2 = Range([h4], [h4].End(4)).Resize(, 2).Value
With dic
    For i = 1 To UBound(dl2)
        If Not .exists(dl2(i, 1)) Then .Add dl2(i, 1), dl2(i, 2)
    Next
    For ii = 1 To UBound(dl1)
        If .exists(dl1(ii, 1)) Then .Item(dl1(ii, 1)) = dl1(ii, 2) + .Item(dl1(ii, 1))
    Next
    [h4].Resize(.Count, 1) = Application.Transpose(.keys)
    [I4].Resize(.Count, 1) = Application.Transpose(.items)
End With
MsgBox Timer - t
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
nếu dùng ct này thì nó cộng dồn vào của bảng chi tiết vào thống kê thôi , ở đây mình muốn nó cộng dồn của bảng thống kê , tìm dc bao nhieu thì + bấy nhiêu , mấy cái ko tìm thấy coi như là ko !
Theo mình thì bạn chỉ cần thêm hàm ISNA() kẹp vào Vlookup tại I3 kiểu thế này :
PHP:
=IF(ISNA(VLOOKUP(H3,$A$4:$B$8,2,0)),0,VLOOKUP(H3,$A$4:$B$8,2,0))
Copy xuống
Sau đó bạn dùng hàm Sum() bình thường thì sẽ hay hơn đó, k cần công thức mảng làm chi cho mệt.
 
Theo mình thì bạn chỉ cần thêm hàm ISNA() kẹp vào Vlookup tại I3 kiểu thế này :
PHP:
=IF(ISNA(VLOOKUP(H3,$A$4:$B$8,2,0)),0,VLOOKUP(H3,$A$4:$B$8,2,0))
Copy xuống
Sau đó bạn dùng hàm Sum() bình thường thì sẽ hay hơn đó, k cần công thức mảng làm chi cho mệt.
Nếu trong thực tế có nhiều hàng cùng nhập dữ liệu cho một mã (tạm hiểu là vậy) ở cột A thì sao nhỉ? Chẳng hạn lúc trước nhập mã A, số lượng 20, sau đó lại nhập thêm (ở hàng khác) mã A, số lượng 40 thì sao?!
 
Web KT

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

Back
Top Bottom