anhlove990
Thành viên mới
- Tham gia
- 21/7/12
- Bài viết
- 29
- Được thích
- 0
Cộng dồn ở đây được hiểu theo nghĩa nào nhỉ?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 đỡ
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 đỡ
I3=IF(ISNA(VLOOKUP(H3;$A$4:$B$8;2;0));0;VLOOKUP(H3;$A$4:$B$8;2;0))
Công thức tại dòng tổng cộng I10 :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 đỡ
=SUM(IF(ISNA($I$3:$I$7),0,$I$3:$I$7))
Công thức tại dòng tổng cộng I10 :
Kết thúc bằng tổ hợp phím Ctrl+Shift+EnterPHP:=SUM(IF(ISNA($I$3:$I$7),0,$I$3:$I$7))
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:Công thức tại dòng tổng cộng I10 :
Kết thúc bằng tổ hợp phím Ctrl+Shift+EnterPHP:=SUM(IF(ISNA($I$3:$I$7),0,$I$3:$I$7))
I3=SUMIF($A$4:$A$8,H3,$B$4:$B$8)
Xem trong file đính kèm nhé, nhớ kết thúc công thức bằng 3 phím Ctrl+Shift+Entervẫn không được bạn , nó báo lỗi
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)
Xem trong file đính kèm nhé, nhớ kết thúc công thức bằng 3 phím Ctrl+Shift+Enter
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????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ê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:Xem trong file đính kèm nhé, nhớ kết thúc công thức bằng 3 phím Ctrl+Shift+Enter
I3=SUMIF(A:A,H3,B:B)
I10=SUM(I3:I7)
I3=SUMIF($A$4:$A$100,H3,$B$4:$B$100)
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
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
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
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 :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 !
=IF(ISNA(VLOOKUP(H3,$A$4:$B$8,2,0)),0,VLOOKUP(H3,$A$4:$B$8,2,0))
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?!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 :
Copy xuốngPHP:=IF(ISNA(VLOOKUP(H3,$A$4:$B$8,2,0)),0,VLOOKUP(H3,$A$4:$B$8,2,0))
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.