Xin chỉ giúp sum tịnh tiến theo mã (1 người xem)

Người dùng đang xem chủ đề này

huyhoang_mmyeht

Thành viên hoạt động
Tham gia
5/5/09
Bài viết
142
Được thích
12
Chào các bạn!
Mình có 1 file muốn sum tịch tiến theo mã nhưng loay hoay mãi chưa làm được. nếu mình sort theo mã thì mình đã làm được nhưng nếu để dữ liệu không tuân thủ theo sort thì thì hàm lại sai. nên mình lên diễn đàn nhờ các bạn giúp mình với!
file đính kèm mình có cột sô liệu ban đầu và mình muốn làm sao mà ra được như cột số liệu mong muôn.

Tks!
 

File đính kèm

Chào các bạn!
Mình có 1 file muốn sum tịch tiến theo mã nhưng loay hoay mãi chưa làm được. nếu mình sort theo mã thì mình đã làm được nhưng nếu để dữ liệu không tuân thủ theo sort thì thì hàm lại sai. nên mình lên diễn đàn nhờ các bạn giúp mình với!
file đính kèm mình có cột sô liệu ban đầu và mình muốn làm sao mà ra được như cột số liệu mong muôn.
Tks!
Công thức D2:
=SUMIF($B$2:B2,B2,$C$2:C2)
 
Chào các bạn!
Mình có 1 file muốn sum tịch tiến theo mã nhưng loay hoay mãi chưa làm được. nếu mình sort theo mã thì mình đã làm được nhưng nếu để dữ liệu không tuân thủ theo sort thì thì hàm lại sai. nên mình lên diễn đàn nhờ các bạn giúp mình với!
file đính kèm mình có cột sô liệu ban đầu và mình muốn làm sao mà ra được như cột số liệu mong muôn.

Tks!

Tại D2 bạn gõ
Mã:
=SUMIF($B$2:B2,B2,$C$2:C2)
 

File đính kèm

Tks Cảm ơn bạn nhưng mình còn có cột ưu tiên nữa ví dụ: Mã C100 dòng số 14 được ưu tiên trước mã C100 dòng số 7 lúc này số nó sẽ là 170 và dòng số 7 sẽ bằng 250.
có nghĩa là sum theo điều kiện mã và cấp thứ tự ưu tiên của nó!

tks!
 
Tks Cảm ơn bạn nhưng mình còn có cột ưu tiên nữa ví dụ: Mã C100 dòng số 14 được ưu tiên trước mã C100 dòng số 7 lúc này số nó sẽ là 170 và dòng số 7 sẽ bằng 250.
có nghĩa là sum theo điều kiện mã và cấp thứ tự ưu tiên của nó!

tks!
Bạn nói rõ hơn "cấp thứ tự ưu tiên" là như thế nào được không?
 
Ví dụ nhé!
trong file đính kèm có cột số ưu tiên. nếu có số ưu tiên thì sum theo số yêu tiên sau đó mới sum đến những trường hợp không ưu tiên

ưu tiên từ nhỏ tới lớn 1,2...

giả dụ ta có 15 dòng nhưng dòng thứ 16 có số ư tiên là 1 dòng số 10 có số ưu tiên là 2 nếu chúng cùng chung 1 mà thì điều kiện đầu tiên là sum chúng trước tiên sau đó tới những mã này không có số ưu tiên bạn xem file nhé!

tks!
 
Bạn xem file đính kèm nhé!
giả dụ : ta có số thứ tự ưu tiên tùy theo trường hợp thì ban đầu ta sẽ sum theo thứ tự ưu tiên của mã đó sau đó mới sum đến trường hợp còn lại!
 

File đính kèm

Ví dụ nhé!
trong file đính kèm có cột số ưu tiên. nếu có số ưu tiên thì sum theo số yêu tiên sau đó mới sum đến những trường hợp không ưu tiên

ưu tiên từ nhỏ tới lớn 1,2...

giả dụ ta có 15 dòng nhưng dòng thứ 16 có số ư tiên là 1 dòng số 10 có số ưu tiên là 2 nếu chúng cùng chung 1 mà thì điều kiện đầu tiên là sum chúng trước tiên sau đó tới những mã này không có số ưu tiên bạn xem file nhé!

tks!
Bạn chỉ dùm tôi cột số ưu tiên là cột nào được không, tôi tải file 2, 3 lần nhưng xem kỹ mà chưa hiểu, hay tại tôi chậm hiểu quá?
Bạn nói có 15 dòng, vậy sao lại có dòng 16?
 
Bạn xem file đính kèm nhé!
giả dụ : ta có số thứ tự ưu tiên tùy theo trường hợp thì ban đầu ta sẽ sum theo thứ tự ưu tiên của mã đó sau đó mới sum đến trường hợp còn lại!

Mã:
F2=SUMPRODUCT((C$2:C$20=C2)*D$2:D$20*(B$2:B$20<=B2))
Lưu ý gõ đủ số ưu tiên ứng với từng mã
 
cảm ơn bạn đã giúp nhưng làm hàm sumproduct nặng lắm có cách nào nhẹ hơn không dữ liệu hiện tai của mình đang tầm cở 7000 dòng vậy mở file này lên chắc đơ luôn quá!
 
cảm ơn bạn đã giúp nhưng làm hàm sumproduct nặng lắm có cách nào nhẹ hơn không dữ liệu hiện tai của mình đang tầm cở 7000 dòng vậy mở file này lên chắc đơ luôn quá!

Bạn run code sau
Mã:
Sub total()
ActiveSheet.UsedRange.Offset(1).Columns(3).Select
Set r = Selection
r.Offset(, 2).Resize(, 2).Clear
For Each cell In r
    i = cell.Offset(, -1)
    j = cell.Row
    For Each cl In r
        If cl = cell Then
            If cl.Offset(, -1) <= i Then cell.Offset(, 3) = cell.Offset(, 3) + cl.Offset(, 1)
            If cl.Row <= j Then cell.Offset(, 2) = cell.Offset(, 2) + cl.Offset(, 1)
        End If
    Next
Next
End Sub
 
Chào các bạn!
Mình có 1 file muốn sum tịch tiến theo mã nhưng loay hoay mãi chưa làm được. nếu mình sort theo mã thì mình đã làm được nhưng nếu để dữ liệu không tuân thủ theo sort thì thì hàm lại sai. nên mình lên diễn đàn nhờ các bạn giúp mình với!
file đính kèm mình có cột sô liệu ban đầu và mình muốn làm sao mà ra được như cột số liệu mong muôn.

Tks!

Công thức cho D2:
Mã:
=SUMIF($B$2:B2,B2,$C$2:C2)
 
Tập 1: Có mấy bài trả lời rồi anh ơi.
Tập 2: Người ta thêm cột ưu tiên và sum theo điều kiện ưu tiên đó.

Cũng tại diễn đàn thay đổi: Lập lại bài viết số 1 cho các trang nên dễ nhìn nhầm
Nói thật: Tôi ghét cái tính năng lập lại này ghê!
 
Bạn run code sau
Mã:
Sub total()
ActiveSheet.UsedRange.Offset(1).Columns(3).Select
Set r = Selection
r.Offset(, 2).Resize(, 2).Clear
For Each cell In r
    i = cell.Offset(, -1)
    j = cell.Row
    For Each cl In r
        If cl = cell Then
            If cl.Offset(, -1) <= i Then cell.Offset(, 3) = cell.Offset(, 3) + cl.Offset(, 1)
            If cl.Row <= j Then cell.Offset(, 2) = cell.Offset(, 2) + cl.Offset(, 1)
        End If
    Next
Next
End Sub
Code này chạy chừng 300 dòng là mút mùa luôn, SUMPRODUCT 7000 dòng xem ra khả thi hơn.
Nếu cho Sort: Sort ưu tiên trước, rồi Sort mã số, sau đó thì chạy vòng lặp hoặc chèn SUMIF. Cách này chưa thử, hóng chủ thớt xem có ý kiến gì không.
 
Code này chạy chừng 300 dòng là mút mùa luôn, SUMPRODUCT 7000 dòng xem ra khả thi hơn.
Nếu cho Sort: Sort ưu tiên trước, rồi Sort mã số, sau đó thì chạy vòng lặp hoặc chèn SUMIF. Cách này chưa thử, hóng chủ thớt xem có ý kiến gì không.

file trên chỉ là minh họa vì file thực tế của mình rất nhiều dòng và cột nên sợ kho sort sẽ bị ảnh hưỡng tới những sheet khác trong file. hơn nữa cột ưu tiên là cột là mình dùng khi có sự ưu tiên gấp nào đó thì thì mình gỏ vào theo thứ tự ưu tiên. nếu chỉ làm hàm sumproduct và sumif mình nghĩ mỗi lần làm chắc ngồi chơi dài cổ mất còn vbe thì mình không dành lắm nên mong mún các bạn giúp mình tìm cách.
nếu không còn cách nào khác thì chắc chỉ còn cách làm theo bạn leonguyenz thôi.
 
file trên chỉ là minh họa vì file thực tế của mình rất nhiều dòng và cột nên sợ kho sort sẽ bị ảnh hưỡng tới những sheet khác trong file. hơn nữa cột ưu tiên là cột là mình dùng khi có sự ưu tiên gấp nào đó thì thì mình gỏ vào theo thứ tự ưu tiên. nếu chỉ làm hàm sumproduct và sumif mình nghĩ mỗi lần làm chắc ngồi chơi dài cổ mất còn vbe thì mình không dành lắm nên mong mún các bạn giúp mình tìm cách.
nếu không còn cách nào khác thì chắc chỉ còn cách làm theo bạn leonguyenz thôi.
Nếu cột ưu tiên là cột là mình dùng khi có sự ưu tiên gấp nào đó thì SUMPRODUCT phải sửa lại rồi:
Mã:
=IF(B2="",SUMPRODUCT((C$2:C$7000=C2)*D$2:D$7000*(B$2:B$7000>0))+SUMPRODUCT((C$2:C2=C2)*D$2:D2*(B$2:B2="")),SUMPRODUCT((C$2:C$7000=C2)*D$2:D$7000*(B$2:B$7000<=B2)*(B$2:B$7000<>"")))
Hoặc tham khảo SUMIFS, nếu dùng Excel 2007 trở lên thì nên dùng:
Mã:
=IF(B2="",SUMIFS($D$2:$D$7000,$C$2:$C$7000,C2,$B$2:$B$7000,">0")+SUMIFS($D$2:D2,$C$2:C2,C2,$B$2:B2,""),SUMIFS($D$2:$D$7000,$C$2:$C$7000,C2,$B$2:$B$7000,"<="&B2))
 

File đính kèm

Cảm ơn bạn đã giúp đở mình. Nhưng mình e hai hàm của bạn không khả thi lắm, bạn mới chỉ lập công thức 7000 dòng nhưng bạn chưa kéo công thức xuống 7000 dòng, bạn thử kéo thử thấy thế nào nhé!

tks!
 
Cảm ơn bạn đã giúp đở mình. Nhưng mình e hai hàm của bạn không khả thi lắm, bạn mới chỉ lập công thức 7000 dòng nhưng bạn chưa kéo công thức xuống 7000 dòng, bạn thử kéo thử thấy thế nào nhé!
tks!
Sao bạn không thử công thức sử dụng SUMIFS 7000 dòng và thử code khoảng 300 dòng xem cái nào chạy nhanh hơn?
Tôi thử thì SUMIFS 7000 dòng (kéo dữ liệu xuống 7000 dòng) thì cho khoảng vài ba giây, còn code trên chạy 300 dòng thì khá lâu.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình đã bỏ công thức của bạn vào file của mình sau khi chạy công thức mà từ nãy giờ đang ngồi đợi nè!
mình cảm ơn trước sự nhiệt tình của bạn nhưng bạn có cách nào tối ưu tốt hơn không chứ mình ngồi từ nãy giờ mất khoảng 30 phút rồi mà chưa thấy hoàn thành!

tks!
 
Bạn thử áp thử công thức vào file gốc của mình nhé!
trong file có 3 tiêu chỉ mình tô mầu đỏ đó!
 

File đính kèm

Lần chỉnh sửa cuối:

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

Back
Top Bottom