Nhờ các anh chị viết code cho hàm sumproduct này hộ em với ạ (1 người xem)

Liên hệ QC

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

minhquang92

Thành viên mới
Tham gia
2/11/13
Bài viết
27
Được thích
2
Em chào các anh chị
Em mới chỉ biết các hàm excel chứ chưa biết gì về lập trình code, VBA...
Hiện em có 1 file mà em dùng hàm sumproduct. File này dữ liệu em đã cắt một nửa (6 tháng/12 tháng), xóa đi các sheet khác ko liên quan mà vẫn chạy rất ì ạch (đổi tài khoản ở ô H10 để nó tính toán lại, lọc, bỏ lọc đều rất chậm)
Em muốn các anh chị viết code để nó chạy nhanh, mượt mà hơn có đc ko ạ?
Cảm ơn các anh chị.
FIle của em (các anh chị thông cảm file dung lượng
 
Lần chỉnh sửa cuối:
Công thức này tại [C13] sẽ là sao hả bạn?
=IF($I$10="Tài khoản mẹ",SUMPRODUCT(('NKC SXKD'!#REF!=THDU!$H$10)*('NKC SXKD'!#REF!=THDU!$A13)*('NKC SXKD'!#REF!)),SUMPRODUCT(('NKC SXKD'!#REF!=THDU!$H$10)*('NKC SXKD'!#REF!=THDU!$A13)*('NKC SXKD'!#REF!)))

Mình nghỉ bạn suy nghỉ theo hướng dùng công thức khác thay cho SUMPRODUCT() chưa?
 
Upvote 0
Up lên ai giúp em với ạ! :(
 
Lần chỉnh sửa cuối:
Upvote 0
Ủa sao file của em ko bị lỗi như của anh nhỉ ???
C13=IF($I$10="Tài khoản mẹ";SUMPRODUCT(('NKC SXKD'!$H$7:$H$68337=THDU!$H$10)*('NKC SXKD'!$I$7:$I$68337=THDU!$A13)*('NKC SXKD'!$L$7:$L$68337));SUMPRODUCT(('NKC SXKD'!$F$7:$F$68337=THDU!$H$10)*('NKC SXKD'!$G$7:$G$68337=THDU!$A13)*('NKC SXKD'!$L$7:$L$68337)))

Em chỉ dùng đc Sumifs thay thế đc thôi, nhưng vẫn nặng như sumproduct ạ. Em nghĩ dùng code thì sẽ nhẹ hơn, giống như 1 bạn đã nhờ ở topic này:
http://www.giaiphapexcel.com/forum/...iúp-em-viết-code-cho-hàm-SUMPRODUCT-này-với-ạ

Cũng có thể thử viết code nhưng không biết là sẽ nhanh hơn được bao nhiêu. Vì tốn thời gian là dĩ nhiên rồi. Riêng phần trên bạn đã có 532 công thức trong [C13:D278]. Với mỗi công thức để tính nó thì phải duyệt 68331 dòng (từ 1 tới 68337) trong sheet NKC SXKD để tính từng thành phần của tổng khi đk thỏa (2 đk). Bạn cứ thử tính sơ qua cũng thấy khối lượng công việc là rất lớn. Tất nhiên dùng code thì tốt hơn nhưng "máy" gì thì chạy cũng phải tốn một thời gian.
 
Upvote 0
Em chào các anh chị
Em mới chỉ biết các hàm excel chứ chưa biết gì về lập trình code, VBA...
Hiện em có 1 file mà em dùng hàm sumproduct. File này dữ liệu em đã cắt một nửa (6 tháng/12 tháng), xóa đi các sheet khác ko liên quan mà vẫn chạy rất ì ạch (đổi tài khoản ở ô H10 để nó tính toán lại, lọc, bỏ lọc đều rất chậm)
Em muốn các anh chị viết code để nó chạy nhanh, mượt mà hơn có đc ko ạ?
Cảm ơn các anh chị.
FIle của em (các anh chị thông cảm file dung lượng >1MB nên hình như ko đính kèm đc ạ):
http://www.mediafire.com/?sdeonn2n485xn8w
hoặc
http://tenlua.vn/thdutk-rar-1037e52be60f6f/#download1037e52be60f6f

Tôi chỉ có thể làm "theo kiểu tôi" như thế này thôi, nếu được thì bạn xài thử nhé.
Những dòng không cần kết quả mà cũng ghi ra làm gì cho rối mắt.
Thay đổi ô E10 để xem kết quả nhé. (Nhớ: E10 phải là Text)
Bạn nhập thêm dữ liệu và kiểm tra, tôi chỉ chừa lại 200 dòng cho nhẹ file
 

File đính kèm

Upvote 0
Ôi em cảm ơn anh ba tê, đợi mãi cũng đc giúp ^^
Em đã thêm dữ liệu vào và test thì thấy file của anh hiện chỉ làm việc nếu ô E10=
 
Lần chỉnh sửa cuối:
Upvote 0
Ôi em cảm ơn anh ba tê, đợi mãi cũng đc giúp ^^
Em đã thêm dữ liệu vào và test thì thấy file của anh hiện chỉ làm việc nếu ô E10="Tài khoản mẹ" , còn nếu E10="Tài khoản con" thì chưa chạy!
Ý em muốn:
Nếu $E$10="Tài khoản mẹ" --> C13= SUMPRODUCT(('NKC SXKD'!$H$7:$H$68337=THDU!$H$10)*('NKC SXKD'!$I$7:$I$68337=THDU!$A13)*('NKC SXKD'!$L$7:$L$68337))
Nếu
$E$10="Tài khoản con" --> C13= SUMPRODUCT(('NKC SXKD'!$F$7:$F$68337=THDU!$H$10)*('NKC SXKD'!$G$7:$G$68337=THDU!$A13)*('NKC SXKD'!$L$7:$L$68337)))
TK mẹ và TK con em đã phân loại như ở file gốc của em í ạ, hình như anh bỏ qua nên trách em "Những dòng không cần kết quả mà cũng ghi ra làm gì cho rối mắt."
ANh xem giúp đỡ thêm cho em với anh nhá :)

Lỗi tại bạn thôi.
Tôi không nói tới lời cám ơn. NHưng nếu mọi người đã có ý kiến mà mình vẫn muốn giải quyết vấn đề, muốn đòi bằng được thì phải nói một câu chứ. Ai lại cứ ỉm ỉm thì người ta nghĩ là mình lặn mất tiêu rồi.
-------------
Khi thay đổi THDU.[H10] thì code sẽ:

1. Tính và nhập giá trị vào THDU.[I10]
2. Tính và nhập các giá trị vào THDU.[C13:D278]
3. Tính và nhập các giá trị vào THDU.[B296:C307]

Vì thế cần:

1. Xóa công thức tại THDU.[I10], THDU.[C13:D278], THDU.[B296:C307]
2. Thêm code vào sheet THDU
------------------
Tôi không thay đổi những thứ khác, ô khác. Bạn tự xem cái gì cần sửa thì sửa. Tôi chỉ thay công thức bằng code mà thôi.

Bạn lưu tập tin gốc trước khi test. Tốc độ ra sao báo cho tôi biết.
Bạn chú ý là tôi yêu cầu báo kết quả cho tôi. Nếu bạn không báo thì bạn chỉ nhờ tôi được 1 lần mà thôi.

http://www.mediafire.com/download/r0eawscemguwe8w/THDU+TK.rar
 
Upvote 0
up tốp cho bạn nha, bài viết của bạn hay quá :D
 
Upvote 0
Ôi em cảm ơn anh ba tê, đợi mãi cũng đc giúp ^^
Em đã thêm dữ liệu vào và test thì thấy file của anh hiện chỉ làm việc nếu ô E10="Tài khoản mẹ" , còn nếu E10="Tài khoản con" thì chưa chạy!
Ý em muốn:
Nếu $E$10="Tài khoản mẹ" --> C13= SUMPRODUCT(('NKC SXKD'!$H$7:$H$68337=THDU!$H$10)*('NKC SXKD'!$I$7:$I$68337=THDU!$A13)*('NKC SXKD'!$L$7:$L$68337))
Nếu
$E$10="Tài khoản con" --> C13= SUMPRODUCT(('NKC SXKD'!$F$7:$F$68337=THDU!$H$10)*('NKC SXKD'!$G$7:$G$68337=THDU!$A13)*('NKC SXKD'!$L$7:$L$68337)))
TK mẹ và TK con em đã phân loại như ở file gốc của em í ạ, hình như anh bỏ qua nên trách em "Những dòng không cần kết quả mà cũng ghi ra làm gì cho rối mắt."
ANh xem giúp đỡ thêm cho em với anh nhá :)
Yêu cầu không rõ ràng, Copy lại dữ liệu đầy đủ rồi kiểm tra lại file này coi sao.
 

File đính kèm

Upvote 0
Xin lỗi các anh tại em gặp chuyện nên bây giờ mới vào lại đc.
Em đã test thì thấy như sau:
File của anh siwton:
- Tính toán vẫn chưa thực sự nhanh anh ạ, vẫn phải đợi 1 lúc.
- Em thường thay đổi giá trị ô H10 rồi lọc trên cột H những giá trị 1. Mỗi khi lọc xong phải bỏ lọc rồi mới đc thay đổi giá trị ô H10, nếu ko bỏ lọc mà đổi tài khoản ô H10 luôn thì code chạy bị lỗi.
- Em muốn thay đổi dữ liệu bên NKC, kéo theo là thay đổi list tài khoản bên cột A của THDU thì làm sao để code vẫn chạy tốt? Vì em thấy hình như anh cố định luôn NKC là bằng í dòng, cố định vùng tính toán bên THDU là C13:D278? Ví dụ em thay dữ liệu NKC thêm, bớt dòng, vùng A13:A278 sẽ thêm/bớt 1 số TK í ạ.

File của anh Ba Tê:
- Tính toán rất nhanh, thêm dữ liệu đc bên NKC. Nhưng sau khi thay đổi giá trị trong ô H10 thì hiện 1 thông báo, phải ấn OK. Có bỏ cái này đi đc ko ạ.
- Tương tự như file của anh siwton, em thấy khi ko bỏ lọc mà đổi tài khoản ở H10 luôn thì không chạy ra kết quả. Mà file đầu tiên anh làm cho em kiểu đổi H10 thì chỉ hiện ra kết quả ở cột H10 = 1, đấy đúng là thao tác em dùng, nhưng ở file lần này lại ko còn chức năng đó :(
- Anh giấu các dòng 1-8 đi rồi ạ, em muốn hiện lại để trình bày vào đó.

Các anh xem hoàn thiện file giúp em với ạ.
Cảm ơn các anh!
 
Lần chỉnh sửa cuối:
Upvote 0
Xin lỗi các anh tại em gặp chuyện nên bây giờ mới vào lại đc.
Em đã test thì thấy như sau:

File của anh Ba Tê:
- Tính toán rất nhanh, thêm dữ liệu đc bên NKC. Nhưng sau khi thay đổi giá trị trong ô H10 thì hiện 1 thông báo, phải ấn OK. Có bỏ cái này đi đc ko ạ.
- ...em thấy khi ko bỏ lọc mà đổi tài khoản ở H10 luôn thì không chạy ra kết quả. Mà file đầu tiên anh làm cho em kiểu đổi H10 thì chỉ hiện ra kết quả ở cột H10 = 1, đấy đúng là thao tác em dùng, nhưng ở file lần này lại ko còn chức năng đó :(
- Anh giấu các dòng 1-8 đi rồi ạ, em muốn hiện lại để trình bày vào đó.

Các anh xem hoàn thiện file giúp em với ạ.
Cảm ơn các anh!
Cái thông báo chỉ là báo thời gian làm việc của code.
Không hiểu đã dùng code lấy xong dữ liệu theo điều kiện ô H10 rồi mà còn Lọc, Bỏ Lọc là sao nữa?
Lọc cái gì, và vì sao lại lọc?
Tôi làm lại theo cách hiểu của tôi, chỉ lấy những mã có số liệu, mã nào không có thì khỏi lấy, Cột H không cần có số 1 để Filter.
Bạn muốn lọc gì đó nữa thì tự lọc.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cái thông báo chỉ là báo thời gian làm việc của code.
Không hiểu đã dùng code lấy xong dữ liệu theo điều kiện ô H10 rồi mà còn Lọc, Bỏ Lọc là sao nữa?
Lọc cái gì, và vì sao lại lọc?
Tôi làm lại theo cách hiểu của tôi, chỉ lấy những mã có số liệu, mã nào không có thì khỏi lấy, Cột H không cần có số 1 để Filter.
Bạn muốn lọc gì đó nữa thì tự lọc.

Ok anh rất tuyệt, đúng mong muốn của em ạ. Xin hỏi thêm anh nếu em muốn dòng Total từ A --
 
Lần chỉnh sửa cuối:
Upvote 0
Ok anh rất tuyệt, đúng mong muốn của em ạ. Xin hỏi thêm anh nếu em muốn dòng Total từ A --> D luôn đậm và cùng màu với dòng 11 (từ A-D) thì làm như thế nào ạ?
Thêm nữa, nếu em viết thêm dưới dòng TOTAL thì làm thế nào để nó vẫn hiện khi thay đổi H10?
- Excel có quá quan trọng màu mè không?
- Thêm cái gì thì phải có mẫu mã chớ, biết sao mà ghi nó vào đâu.
 
Upvote 0
- Excel có quá quan trọng màu mè không?- Thêm cái gì thì phải có mẫu mã chớ, biết sao mà ghi nó vào đâu.
Ko phải em quan trọng hình thức nhưng mà cái dòng đó nó là dòng cuối của bảng bắt đầu từ A11:D11 nên in đậm và cùng màu với A11:D11.
Em muốn thêm 3 dòng sau Total như file đính kèm ạ. Em thay đổi H10 nó bị mất.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Ko phải em quan trọng hình thức nhưng mà cái dòng đó nó là dòng cuối của bảng bắt đầu từ A11:D11 nên in đậm và cùng màu với A11:D11.
Em muốn thêm 3 dòng sau Total như file đính kèm ạ. Em thay đổi H10 nó bị mất.
Càng ngày chuyện càng nhiều nhỉ?
 

File đính kèm

Upvote 0

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Lại thêm chuyện nữa anh ơi :(
em muốn vlookup bên cột B từ TK tương ứng của cột A sang bên sheet CDPS như file đính kèm, anh xem còn giúp đc em nữa ko ạ :(
Sao từ đầu không nói luôn, hình như bạn chưa biết mình muốn có kết quả sau cùng là gì.
 

File đính kèm

Upvote 0

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

Back
Top Bottom